components:
  parameters:
    AppIdentifier:
      name: HTTP-Referer
      in: header
      schema:
        type: string
      description: |
        The app identifier should be your app's URL and is used as the primary identifier for rankings.
        This is used to track API usage per application.
    AppDisplayName:
      name: X-OpenRouter-Title
      in: header
      schema:
        type: string
      description: |
        The app display name allows you to customize how your app appears in OpenRouter's dashboard.
    AppCategories:
      name: X-OpenRouter-Categories
      in: header
      schema:
        type: string
      description: |
        Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
  schemas:
    ActivityItem:
      example:
        byok_usage_inference: 0.012
        completion_tokens: 125
        date: '2025-08-24'
        endpoint_id: 550e8400-e29b-41d4-a716-446655440000
        model: openai/gpt-4.1
        model_permaslug: openai/gpt-4.1-2025-04-14
        prompt_tokens: 50
        provider_name: OpenAI
        reasoning_tokens: 25
        requests: 5
        usage: 0.015
      properties:
        byok_usage_inference:
          description: BYOK inference cost in USD (external credits spent)
          example: 0.012
          format: double
          type: number
        completion_tokens:
          description: Total completion tokens generated
          example: 125
          type: integer
        date:
          description: Date of the activity (YYYY-MM-DD format)
          example: '2025-08-24'
          type: string
        endpoint_id:
          description: Unique identifier for the endpoint
          example: 550e8400-e29b-41d4-a716-446655440000
          type: string
        model:
          description: Model slug (e.g., "openai/gpt-4.1")
          example: openai/gpt-4.1
          type: string
        model_permaslug:
          description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14")
          example: openai/gpt-4.1-2025-04-14
          type: string
        prompt_tokens:
          description: Total prompt tokens used
          example: 50
          type: integer
        provider_name:
          description: Name of the provider serving this endpoint
          example: OpenAI
          type: string
        reasoning_tokens:
          description: Total reasoning tokens used
          example: 25
          type: integer
        requests:
          description: Number of requests made
          example: 5
          type: integer
        usage:
          description: Total cost in USD (OpenRouter credits spent)
          example: 0.015
          format: double
          type: number
      required:
        - date
        - model
        - model_permaslug
        - endpoint_id
        - provider_name
        - usage
        - byok_usage_inference
        - requests
        - prompt_tokens
        - completion_tokens
        - reasoning_tokens
      type: object
    ActivityResponse:
      example:
        data:
          - byok_usage_inference: 0.012
            completion_tokens: 125
            date: '2025-08-24'
            endpoint_id: 550e8400-e29b-41d4-a716-446655440000
            model: openai/gpt-4.1
            model_permaslug: openai/gpt-4.1-2025-04-14
            prompt_tokens: 50
            provider_name: OpenAI
            reasoning_tokens: 25
            requests: 5
            usage: 0.015
      properties:
        data:
          description: List of activity items
          items:
            $ref: '#/components/schemas/ActivityItem'
          type: array
      required:
        - data
      type: object
    AdvisorNestedTool:
      additionalProperties:
        nullable: true
      description: >-
        A tool made available to the advisor sub-agent. Accepts function tools and OpenRouter server tools (e.g. openrouter:web_search). The advisor tool may not list itself.
      example:
        type: openrouter:web_search
      properties:
        function:
          additionalProperties:
            nullable: true
          type: object
        parameters:
          additionalProperties:
            nullable: true
          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:
            - xhigh
            - high
            - medium
            - low
            - minimal
            - none
          type: string
          x-speakeasy-unknown-values: allow
        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. Must not include the advisor tool itself.
          items:
            $ref: '#/components/schemas/AdvisorNestedTool'
          type: array
      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:
            nullable: true
          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
        x-speakeasy-unknown-values: allow
      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
          x-speakeasy-unknown-values: allow
        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. Currently supported for Anthropic Claude models.
      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
      x-speakeasy-unknown-values: allow
    AnthropicCacheCreation:
      example:
        ephemeral_1h_input_tokens: 0
        ephemeral_5m_input_tokens: 100
      nullable: true
      properties:
        ephemeral_1h_input_tokens:
          type: integer
        ephemeral_5m_input_tokens:
          type: integer
      required:
        - ephemeral_5m_input_tokens
        - ephemeral_1h_input_tokens
      type: object
    AnthropicCaller:
      discriminator:
        mapping:
          code_execution_20250825: '#/components/schemas/AnthropicCodeExecution20250825Caller'
          code_execution_20260120: '#/components/schemas/AnthropicCodeExecution20260120Caller'
          direct: '#/components/schemas/AnthropicDirectCaller'
        propertyName: type
      example:
        type: direct
      oneOf:
        - $ref: '#/components/schemas/AnthropicDirectCaller'
        - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller'
        - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller'
    AnthropicCitationCharLocation:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_char_index: 18
        file_id: null
        start_char_index: 0
        type: char_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_char_index:
          type: integer
        file_id:
          nullable: true
          type: string
        start_char_index:
          type: integer
        type:
          enum:
            - char_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_char_index
        - end_char_index
        - file_id
      type: object
    AnthropicCitationCharLocationParam:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_char_index: 18
        start_char_index: 0
        type: char_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_char_index:
          type: integer
        start_char_index:
          type: integer
        type:
          enum:
            - char_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_char_index
        - end_char_index
      type: object
    AnthropicCitationContentBlockLocation:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_block_index: 1
        file_id: null
        start_block_index: 0
        type: content_block_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_block_index:
          type: integer
        file_id:
          nullable: true
          type: string
        start_block_index:
          type: integer
        type:
          enum:
            - content_block_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_block_index
        - end_block_index
        - file_id
      type: object
    AnthropicCitationContentBlockLocationParam:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_block_index: 1
        start_block_index: 0
        type: content_block_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_block_index:
          type: integer
        start_block_index:
          type: integer
        type:
          enum:
            - content_block_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_block_index
        - end_block_index
      type: object
    AnthropicCitationPageLocation:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_page_number: 2
        file_id: null
        start_page_number: 1
        type: page_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_page_number:
          type: integer
        file_id:
          nullable: true
          type: string
        start_page_number:
          type: integer
        type:
          enum:
            - page_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_page_number
        - end_page_number
        - file_id
      type: object
    AnthropicCitationPageLocationParam:
      example:
        cited_text: Example cited text
        document_index: 0
        document_title: null
        end_page_number: 2
        start_page_number: 1
        type: page_location
      properties:
        cited_text:
          type: string
        document_index:
          type: integer
        document_title:
          nullable: true
          type: string
        end_page_number:
          type: integer
        start_page_number:
          type: integer
        type:
          enum:
            - page_location
          type: string
      required:
        - type
        - cited_text
        - document_index
        - document_title
        - start_page_number
        - end_page_number
      type: object
    AnthropicCitationsConfig:
      default: null
      example:
        enabled: true
      nullable: true
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type: object
    AnthropicCitationSearchResultLocation:
      example:
        cited_text: Example cited text
        end_block_index: 1
        search_result_index: 0
        source: example_source
        start_block_index: 0
        title: Example Result
        type: search_result_location
      properties:
        cited_text:
          type: string
        end_block_index:
          type: integer
        search_result_index:
          type: integer
        source:
          type: string
        start_block_index:
          type: integer
        title:
          nullable: true
          type: string
        type:
          enum:
            - search_result_location
          type: string
      required:
        - type
        - cited_text
        - search_result_index
        - source
        - title
        - start_block_index
        - end_block_index
      type: object
    AnthropicCitationWebSearchResultLocation:
      example:
        cited_text: Example cited text
        encrypted_index: enc_idx_0
        title: Example Page
        type: web_search_result_location
        url: https://example.com
      properties:
        cited_text:
          type: string
        encrypted_index:
          type: string
        title:
          nullable: true
          type: string
        type:
          enum:
            - web_search_result_location
          type: string
        url:
          type: string
      required:
        - type
        - cited_text
        - encrypted_index
        - title
        - url
      type: object
    AnthropicCodeExecution20250825Caller:
      example:
        tool_id: toolu_01abc
        type: code_execution_20250825
      properties:
        tool_id:
          type: string
        type:
          enum:
            - code_execution_20250825
          type: string
      required:
        - type
        - tool_id
      type: object
    AnthropicCodeExecution20260120Caller:
      example:
        tool_id: toolu_01abc
        type: code_execution_20260120
      properties:
        tool_id:
          type: string
        type:
          enum:
            - code_execution_20260120
          type: string
      required:
        - type
        - tool_id
      type: object
    AnthropicCodeExecutionContent:
      discriminator:
        mapping:
          code_execution_result: '#/components/schemas/AnthropicCodeExecutionResult'
          code_execution_tool_result_error: '#/components/schemas/AnthropicCodeExecutionToolResultError'
          encrypted_code_execution_result: '#/components/schemas/AnthropicEncryptedCodeExecutionResult'
        propertyName: type
      example:
        content: []
        return_code: 0
        stderr: ''
        stdout: Hello
        type: code_execution_result
      oneOf:
        - $ref: '#/components/schemas/AnthropicCodeExecutionToolResultError'
        - $ref: '#/components/schemas/AnthropicCodeExecutionResult'
        - $ref: '#/components/schemas/AnthropicEncryptedCodeExecutionResult'
    AnthropicCodeExecutionOutput:
      example:
        file_id: file_01abc
        type: code_execution_output
      properties:
        file_id:
          type: string
        type:
          enum:
            - code_execution_output
          type: string
      required:
        - file_id
        - type
      type: object
    AnthropicCodeExecutionResult:
      example:
        content: []
        return_code: 0
        stderr: ''
        stdout: Hello
        type: code_execution_result
      properties:
        content:
          items:
            $ref: '#/components/schemas/AnthropicCodeExecutionOutput'
          type: array
        return_code:
          type: integer
        stderr:
          type: string
        stdout:
          type: string
        type:
          enum:
            - code_execution_result
          type: string
      required:
        - content
        - return_code
        - stderr
        - stdout
        - type
      type: object
    AnthropicCodeExecutionToolResult:
      example:
        content:
          content: []
          return_code: 0
          stderr: ''
          stdout: Hello
          type: code_execution_result
        tool_use_id: srvtoolu_01abc
        type: code_execution_tool_result
      properties:
        content:
          $ref: '#/components/schemas/AnthropicCodeExecutionContent'
        tool_use_id:
          type: string
        type:
          enum:
            - code_execution_tool_result
          type: string
      required:
        - type
        - content
        - tool_use_id
      type: object
    AnthropicCodeExecutionToolResultError:
      example:
        error_code: unavailable
        type: code_execution_tool_result_error
      properties:
        error_code:
          $ref: '#/components/schemas/AnthropicServerToolErrorCode'
        type:
          enum:
            - code_execution_tool_result_error
          type: string
      required:
        - error_code
        - type
      type: object
    AnthropicCompactionBlock:
      example:
        content: Compacted summary of conversation.
        type: compaction
      properties:
        content:
          nullable: true
          type: string
        type:
          enum:
            - compaction
          type: string
      required:
        - type
        - content
      type: object
    AnthropicCompactionUsageIteration:
      allOf:
        - $ref: '#/components/schemas/AnthropicBaseUsageIteration'
        - properties:
            type:
              enum:
                - compaction
              type: string
          required:
            - type
          type: object
      example:
        cache_creation: null
        cache_creation_input_tokens: 0
        cache_read_input_tokens: 0
        input_tokens: 50
        output_tokens: 25
        type: compaction
    AnthropicContainer:
      example:
        expires_at: '2026-04-08T00:00:00Z'
        id: ctr_01abc
      nullable: true
      properties:
        expires_at:
          type: string
        id:
          type: string
      required:
        - id
        - expires_at
      type: object
    AnthropicContainerUpload:
      example:
        file_id: file_01abc
        type: container_upload
      properties:
        file_id:
          type: string
        type:
          enum:
            - container_upload
          type: string
      required:
        - type
        - file_id
      type: object
    AnthropicDirectCaller:
      example:
        type: direct
      properties:
        type:
          enum:
            - direct
          type: string
      required:
        - type
      type: object
    AnthropicDocumentBlock:
      example:
        citations: null
        source:
          data: Hello, world!
          media_type: text/plain
          type: text
        title: null
        type: document
      properties:
        citations:
          $ref: '#/components/schemas/AnthropicCitationsConfig'
        source:
          anyOf:
            - $ref: '#/components/schemas/AnthropicBase64PdfSource'
            - $ref: '#/components/schemas/AnthropicPlainTextSource'
        title:
          nullable: true
          type: string
        type:
          enum:
            - document
          type: string
      required:
        - source
        - title
        - type
      type: object
    AnthropicDocumentBlockParam:
      example:
        source:
          data: Hello, world!
          media_type: text/plain
          type: text
        type: document
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        citations:
          nullable: true
          properties:
            enabled:
              type: boolean
          type: object
        context:
          nullable: true
          type: string
        source:
          oneOf:
            - $ref: '#/components/schemas/AnthropicBase64PdfSource'
            - $ref: '#/components/schemas/AnthropicPlainTextSource'
            - properties:
                content:
                  anyOf:
                    - type: string
                    - items:
                        discriminator:
                          mapping:
                            image: '#/components/schemas/AnthropicImageBlockParam'
                            text: '#/components/schemas/AnthropicTextBlockParam'
                          propertyName: type
                        oneOf:
                          - $ref: '#/components/schemas/AnthropicTextBlockParam'
                          - $ref: '#/components/schemas/AnthropicImageBlockParam'
                      type: array
                type:
                  enum:
                    - content
                  type: string
              required:
                - type
                - content
              type: object
            - $ref: '#/components/schemas/AnthropicUrlPdfSource'
        title:
          nullable: true
          type: string
        type:
          enum:
            - document
          type: string
      required:
        - type
        - source
      type: object
    AnthropicEncryptedCodeExecutionResult:
      example:
        content: []
        encrypted_stdout: enc_stdout
        return_code: 0
        stderr: ''
        type: encrypted_code_execution_result
      properties:
        content:
          items:
            $ref: '#/components/schemas/AnthropicCodeExecutionOutput'
          type: array
        encrypted_stdout:
          type: string
        return_code:
          type: integer
        stderr:
          type: string
        type:
          enum:
            - encrypted_code_execution_result
          type: string
      required:
        - content
        - encrypted_stdout
        - return_code
        - stderr
        - type
      type: object
    AnthropicImageBlockParam:
      example:
        source:
          data: /9j/4AAQ...
          media_type: image/jpeg
          type: base64
        type: image
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        source:
          discriminator:
            mapping:
              base64: '#/components/schemas/AnthropicBase64ImageSource'
              url: '#/components/schemas/AnthropicUrlImageSource'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/AnthropicBase64ImageSource'
            - $ref: '#/components/schemas/AnthropicUrlImageSource'
        type:
          enum:
            - image
          type: string
      required:
        - type
        - source
      type: object
    AnthropicImageMimeType:
      enum:
        - image/jpeg
        - image/png
        - image/gif
        - image/webp
      example: image/jpeg
      type: string
      x-speakeasy-unknown-values: allow
    AnthropicInputTokensClearAtLeast:
      example:
        type: input_tokens
        value: 50000
      nullable: true
      properties:
        type:
          enum:
            - input_tokens
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type: object
    AnthropicInputTokensTrigger:
      example:
        type: input_tokens
        value: 100000
      properties:
        type:
          enum:
            - input_tokens
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type: object
    AnthropicIterationCacheCreation:
      default: null
      example:
        ephemeral_1h_input_tokens: 0
        ephemeral_5m_input_tokens: 0
      nullable: true
      properties:
        ephemeral_1h_input_tokens:
          type: integer
        ephemeral_5m_input_tokens:
          type: integer
      type: object
    AnthropicMessageUsageIteration:
      allOf:
        - $ref: '#/components/schemas/AnthropicBaseUsageIteration'
        - properties:
            type:
              enum:
                - message
              type: string
          required:
            - type
          type: object
      example:
        cache_creation: null
        cache_creation_input_tokens: 0
        cache_read_input_tokens: 0
        input_tokens: 100
        output_tokens: 50
        type: message
    AnthropicOutputTokensDetails:
      example:
        thinking_tokens: 0
      nullable: true
      properties:
        thinking_tokens:
          type: integer
      required:
        - thinking_tokens
      type: object
    AnthropicPlainTextSource:
      example:
        data: Hello, world!
        media_type: text/plain
        type: text
      properties:
        data:
          type: string
        media_type:
          enum:
            - text/plain
          type: string
        type:
          enum:
            - text
          type: string
      required:
        - type
        - media_type
        - data
      type: object
    AnthropicRedactedThinkingBlock:
      example:
        data: cmVkYWN0ZWQ=
        type: redacted_thinking
      properties:
        data:
          type: string
        type:
          enum:
            - redacted_thinking
          type: string
      required:
        - type
        - data
      type: object
    AnthropicRefusalStopDetails:
      description: Structured information about a refusal
      example:
        category: cyber
        explanation: The request was refused due to policy.
        type: refusal
      nullable: true
      properties:
        category:
          enum:
            - cyber
            - bio
            - null
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        explanation:
          nullable: true
          type: string
        type:
          enum:
            - refusal
          type: string
      required:
        - type
        - category
        - explanation
      type: object
    AnthropicSearchResultBlockParam:
      example:
        content:
          - text: Result content
            type: text
        source: example_source
        title: Example Result
        type: search_result
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        citations:
          properties:
            enabled:
              type: boolean
          type: object
        content:
          items:
            $ref: '#/components/schemas/AnthropicTextBlockParam'
          type: array
        source:
          type: string
        title:
          type: string
        type:
          enum:
            - search_result
          type: string
      required:
        - type
        - source
        - title
        - content
      type: object
    AnthropicServerToolErrorCode:
      enum:
        - invalid_tool_input
        - unavailable
        - too_many_requests
        - execution_time_exceeded
      example: unavailable
      type: string
      x-speakeasy-unknown-values: allow
    AnthropicServerToolUsage:
      example:
        web_fetch_requests: 0
        web_search_requests: 1
      nullable: true
      properties:
        web_fetch_requests:
          type: integer
        web_search_requests:
          type: integer
      required:
        - web_search_requests
        - web_fetch_requests
      type: object
    AnthropicServiceTier:
      enum:
        - standard
        - priority
        - batch
        - null
      example: standard
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    AnthropicSpeed:
      enum:
        - fast
        - standard
        - null
      example: standard
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    AnthropicTextBlock:
      example:
        citations: null
        text: Hello, world!
        type: text
      properties:
        citations:
          items:
            $ref: '#/components/schemas/AnthropicTextCitation'
          nullable: true
          type: array
        text:
          type: string
        type:
          enum:
            - text
          type: string
      required:
        - type
        - text
        - citations
      type: object
    AnthropicTextBlockParam:
      example:
        text: Hello, world!
        type: text
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        citations:
          items:
            discriminator:
              mapping:
                char_location: '#/components/schemas/AnthropicCitationCharLocationParam'
                content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocationParam'
                page_location: '#/components/schemas/AnthropicCitationPageLocationParam'
                search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation'
                web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/AnthropicCitationCharLocationParam'
              - $ref: '#/components/schemas/AnthropicCitationPageLocationParam'
              - $ref: '#/components/schemas/AnthropicCitationContentBlockLocationParam'
              - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
              - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation'
          nullable: true
          type: array
        text:
          type: string
        type:
          enum:
            - text
          type: string
      required:
        - type
        - text
      type: object
    AnthropicTextCitation:
      discriminator:
        mapping:
          char_location: '#/components/schemas/AnthropicCitationCharLocation'
          content_block_location: '#/components/schemas/AnthropicCitationContentBlockLocation'
          page_location: '#/components/schemas/AnthropicCitationPageLocation'
          search_result_location: '#/components/schemas/AnthropicCitationSearchResultLocation'
          web_search_result_location: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
        propertyName: type
      example:
        cited_text: Example text
        document_index: 0
        document_title: null
        end_char_index: 10
        file_id: null
        start_char_index: 0
        type: char_location
      oneOf:
        - $ref: '#/components/schemas/AnthropicCitationCharLocation'
        - $ref: '#/components/schemas/AnthropicCitationPageLocation'
        - $ref: '#/components/schemas/AnthropicCitationContentBlockLocation'
        - $ref: '#/components/schemas/AnthropicCitationWebSearchResultLocation'
        - $ref: '#/components/schemas/AnthropicCitationSearchResultLocation'
    AnthropicTextEditorCodeExecutionContent:
      discriminator:
        mapping:
          text_editor_code_execution_create_result: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult'
          text_editor_code_execution_str_replace_result: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult'
          text_editor_code_execution_tool_result_error: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError'
          text_editor_code_execution_view_result: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult'
        propertyName: type
      example:
        content: file content
        file_type: text
        num_lines: 10
        start_line: 1
        total_lines: 10
        type: text_editor_code_execution_view_result
      oneOf:
        - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionToolResultError'
        - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionViewResult'
        - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionCreateResult'
        - $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionStrReplaceResult'
    AnthropicTextEditorCodeExecutionCreateResult:
      example:
        is_file_update: false
        type: text_editor_code_execution_create_result
      properties:
        is_file_update:
          type: boolean
        type:
          enum:
            - text_editor_code_execution_create_result
          type: string
      required:
        - is_file_update
        - type
      type: object
    AnthropicTextEditorCodeExecutionStrReplaceResult:
      example:
        lines: null
        new_lines: null
        new_start: null
        old_lines: null
        old_start: null
        type: text_editor_code_execution_str_replace_result
      properties:
        lines:
          items:
            type: string
          nullable: true
          type: array
        new_lines:
          nullable: true
          type: integer
        new_start:
          nullable: true
          type: integer
        old_lines:
          nullable: true
          type: integer
        old_start:
          nullable: true
          type: integer
        type:
          enum:
            - text_editor_code_execution_str_replace_result
          type: string
      required:
        - lines
        - new_lines
        - new_start
        - old_lines
        - old_start
        - type
      type: object
    AnthropicTextEditorCodeExecutionToolResult:
      example:
        content:
          content: file content
          file_type: text
          num_lines: 10
          start_line: 1
          total_lines: 10
          type: text_editor_code_execution_view_result
        tool_use_id: srvtoolu_01abc
        type: text_editor_code_execution_tool_result
      properties:
        content:
          $ref: '#/components/schemas/AnthropicTextEditorCodeExecutionContent'
        tool_use_id:
          type: string
        type:
          enum:
            - text_editor_code_execution_tool_result
          type: string
      required:
        - type
        - content
        - tool_use_id
      type: object
    AnthropicTextEditorCodeExecutionToolResultError:
      example:
        error_code: unavailable
        error_message: null
        type: text_editor_code_execution_tool_result_error
      properties:
        error_code:
          enum:
            - invalid_tool_input
            - unavailable
            - too_many_requests
            - execution_time_exceeded
            - file_not_found
          type: string
          x-speakeasy-unknown-values: allow
        error_message:
          nullable: true
          type: string
        type:
          enum:
            - text_editor_code_execution_tool_result_error
          type: string
      required:
        - error_code
        - error_message
        - type
      type: object
    AnthropicTextEditorCodeExecutionViewResult:
      example:
        content: file content
        file_type: text
        num_lines: 10
        start_line: 1
        total_lines: 10
        type: text_editor_code_execution_view_result
      properties:
        content:
          type: string
        file_type:
          enum:
            - text
            - image
            - pdf
          type: string
          x-speakeasy-unknown-values: allow
        num_lines:
          nullable: true
          type: integer
        start_line:
          nullable: true
          type: integer
        total_lines:
          nullable: true
          type: integer
        type:
          enum:
            - text_editor_code_execution_view_result
          type: string
      required:
        - content
        - file_type
        - num_lines
        - start_line
        - total_lines
        - type
      type: object
    AnthropicThinkingBlock:
      example:
        signature: sig_abc123
        thinking: Let me think about this...
        type: thinking
      properties:
        signature:
          type: string
        thinking:
          type: string
        type:
          enum:
            - thinking
          type: string
      required:
        - type
        - thinking
        - signature
      type: object
    AnthropicThinkingDisplay:
      enum:
        - summarized
        - omitted
        - null
      example: summarized
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    AnthropicThinkingTurns:
      example:
        type: thinking_turns
        value: 3
      properties:
        type:
          enum:
            - thinking_turns
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type: object
    AnthropicToolReference:
      example:
        tool_name: my_tool
        type: tool_reference
      properties:
        tool_name:
          type: string
        type:
          enum:
            - tool_reference
          type: string
      required:
        - tool_name
        - type
      type: object
    AnthropicToolSearchContent:
      discriminator:
        mapping:
          tool_search_tool_result_error: '#/components/schemas/AnthropicToolSearchResultError'
          tool_search_tool_search_result: '#/components/schemas/AnthropicToolSearchResult'
        propertyName: type
      example:
        tool_references:
          - tool_name: my_tool
            type: tool_reference
        type: tool_search_tool_search_result
      oneOf:
        - $ref: '#/components/schemas/AnthropicToolSearchResultError'
        - $ref: '#/components/schemas/AnthropicToolSearchResult'
    AnthropicToolSearchResult:
      example:
        tool_references:
          - tool_name: my_tool
            type: tool_reference
        type: tool_search_tool_search_result
      properties:
        tool_references:
          items:
            $ref: '#/components/schemas/AnthropicToolReference'
          type: array
        type:
          enum:
            - tool_search_tool_search_result
          type: string
      required:
        - tool_references
        - type
      type: object
    AnthropicToolSearchResultError:
      example:
        error_code: unavailable
        error_message: null
        type: tool_search_tool_result_error
      properties:
        error_code:
          $ref: '#/components/schemas/AnthropicServerToolErrorCode'
        error_message:
          nullable: true
          type: string
        type:
          enum:
            - tool_search_tool_result_error
          type: string
      required:
        - error_code
        - error_message
        - type
      type: object
    AnthropicToolSearchToolResult:
      example:
        content:
          tool_references:
            - tool_name: my_tool
              type: tool_reference
          type: tool_search_tool_search_result
        tool_use_id: srvtoolu_01abc
        type: tool_search_tool_result
      properties:
        content:
          $ref: '#/components/schemas/AnthropicToolSearchContent'
        tool_use_id:
          type: string
        type:
          enum:
            - tool_search_tool_result
          type: string
      required:
        - type
        - content
        - tool_use_id
      type: object
    AnthropicToolUseBlock:
      example:
        caller:
          type: direct
        id: toolu_01abc
        input:
          location: San Francisco
        name: get_weather
        type: tool_use
      properties:
        caller:
          $ref: '#/components/schemas/AnthropicCaller'
        id:
          type: string
        input:
          nullable: true
        name:
          type: string
        type:
          enum:
            - tool_use
          type: string
      required:
        - type
        - id
        - caller
        - name
      type: object
    AnthropicToolUsesKeep:
      example:
        type: tool_uses
        value: 5
      properties:
        type:
          enum:
            - tool_uses
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type: object
    AnthropicToolUsesTrigger:
      example:
        type: tool_uses
        value: 10
      properties:
        type:
          enum:
            - tool_uses
          type: string
        value:
          type: integer
      required:
        - type
        - value
      type: object
    AnthropicUnknownUsageIteration:
      allOf:
        - $ref: '#/components/schemas/AnthropicBaseUsageIteration'
        - properties:
            type:
              type: string
          required:
            - type
          type: object
      example:
        cache_creation: null
        cache_creation_input_tokens: 0
        cache_read_input_tokens: 0
        input_tokens: 100
        output_tokens: 50
        type: unknown
    AnthropicUrlImageSource:
      example:
        type: url
        url: https://example.com/image.jpg
      properties:
        type:
          enum:
            - url
          type: string
        url:
          type: string
      required:
        - type
        - url
      type: object
    AnthropicUrlPdfSource:
      example:
        type: url
        url: https://example.com/document.pdf
      properties:
        type:
          enum:
            - url
          type: string
        url:
          type: string
      required:
        - type
        - url
      type: object
    AnthropicUsage:
      example:
        cache_creation: null
        cache_creation_input_tokens: null
        cache_read_input_tokens: null
        inference_geo: null
        input_tokens: 100
        output_tokens: 50
        output_tokens_details: null
        server_tool_use: null
        service_tier: standard
      properties:
        cache_creation:
          $ref: '#/components/schemas/AnthropicCacheCreation'
        cache_creation_input_tokens:
          nullable: true
          type: integer
        cache_read_input_tokens:
          nullable: true
          type: integer
        inference_geo:
          nullable: true
          type: string
        input_tokens:
          type: integer
        output_tokens:
          type: integer
        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:
          nullable: true
          type: string
        type:
          enum:
            - web_fetch_result
          type: string
        url:
          type: string
      required:
        - content
        - retrieved_at
        - type
        - url
      type: object
    AnthropicWebFetchContent:
      discriminator:
        mapping:
          web_fetch_result: '#/components/schemas/AnthropicWebFetchBlock'
          web_fetch_tool_result_error: '#/components/schemas/AnthropicWebFetchToolResultError'
        propertyName: type
      example:
        content:
          citations: null
          source:
            data: ''
            media_type: text/plain
            type: text
          title: null
          type: document
        retrieved_at: null
        type: web_fetch_result
        url: https://example.com
      oneOf:
        - $ref: '#/components/schemas/AnthropicWebFetchToolResultError'
        - $ref: '#/components/schemas/AnthropicWebFetchBlock'
    AnthropicWebFetchToolResult:
      example:
        caller:
          type: direct
        content:
          content:
            citations: null
            source:
              data: ''
              media_type: text/plain
              type: text
            title: null
            type: document
          retrieved_at: null
          type: web_fetch_result
          url: https://example.com
        tool_use_id: srvtoolu_01abc
        type: web_fetch_tool_result
      properties:
        caller:
          $ref: '#/components/schemas/AnthropicCaller'
        content:
          $ref: '#/components/schemas/AnthropicWebFetchContent'
        tool_use_id:
          type: string
        type:
          enum:
            - web_fetch_tool_result
          type: string
      required:
        - type
        - caller
        - content
        - tool_use_id
      type: object
    AnthropicWebFetchToolResultError:
      example:
        error_code: unavailable
        type: web_fetch_tool_result_error
      properties:
        error_code:
          enum:
            - invalid_tool_input
            - url_too_long
            - url_not_allowed
            - url_not_accessible
            - unsupported_content_type
            - too_many_requests
            - max_uses_exceeded
            - unavailable
          type: string
          x-speakeasy-unknown-values: allow
        type:
          enum:
            - web_fetch_tool_result_error
          type: string
      required:
        - type
        - error_code
      type: object
    AnthropicWebSearchResult:
      example:
        encrypted_content: enc_content_0
        page_age: null
        title: Example Page
        type: web_search_result
        url: https://example.com
      properties:
        encrypted_content:
          type: string
        page_age:
          nullable: true
          type: string
        title:
          type: string
        type:
          enum:
            - web_search_result
          type: string
        url:
          type: string
      required:
        - type
        - encrypted_content
        - page_age
        - title
        - url
      type: object
    AnthropicWebSearchResultBlockParam:
      example:
        encrypted_content: enc_content_0
        title: Example Page
        type: web_search_result
        url: https://example.com
      properties:
        encrypted_content:
          type: string
        page_age:
          nullable: true
          type: string
        title:
          type: string
        type:
          enum:
            - web_search_result
          type: string
        url:
          type: string
      required:
        - type
        - encrypted_content
        - title
        - url
      type: object
    AnthropicWebSearchToolResult:
      example:
        caller:
          type: direct
        content: []
        tool_use_id: srvtoolu_01abc
        type: web_search_tool_result
      properties:
        caller:
          $ref: '#/components/schemas/AnthropicCaller'
        content:
          anyOf:
            - items:
                $ref: '#/components/schemas/AnthropicWebSearchResult'
              type: array
            - $ref: '#/components/schemas/AnthropicWebSearchToolResultError'
        tool_use_id:
          type: string
        type:
          enum:
            - web_search_tool_result
          type: string
      required:
        - type
        - caller
        - tool_use_id
        - content
      type: object
    AnthropicWebSearchToolResultError:
      example:
        error_code: unavailable
        type: web_search_tool_result_error
      properties:
        error_code:
          enum:
            - invalid_tool_input
            - unavailable
            - max_uses_exceeded
            - too_many_requests
            - query_too_long
            - request_too_large
          type: string
          x-speakeasy-unknown-values: allow
        type:
          enum:
            - web_search_tool_result_error
          type: string
      required:
        - type
        - error_code
      type: object
    AnthropicWebSearchToolUserLocation:
      example:
        city: San Francisco
        country: US
        region: California
        timezone: America/Los_Angeles
        type: approximate
      nullable: true
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        region:
          nullable: true
          type: string
        timezone:
          nullable: true
          type: string
        type:
          enum:
            - approximate
          type: string
      required:
        - type
      type: object
    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:
          nullable: true
          type: string
        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:
          nullable: true
          type: string
        output:
          nullable: true
          type: string
        status:
          enum:
            - completed
            - failed
          type: string
          x-speakeasy-unknown-values: allow
        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
      x-speakeasy-unknown-values: allow
    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
      x-speakeasy-unknown-values: allow
    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
    AutoRouterPlugin:
      example:
        allowed_models:
          - anthropic/*
          - openai/gpt-4o
        cost_quality_tradeoff: 7
        enabled: true
        id: auto-router
      properties:
        allowed_models:
          description: >-
            List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., "anthropic/*" matches all Anthropic models). When not specified, uses the default supported models list.
          example:
            - anthropic/*
            - openai/gpt-4o
            - google/*
          items:
            type: string
          type: array
        cost_quality_tradeoff:
          description: >-
            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.
          example: 7
          maximum: 10
          minimum: 0
          type: integer
        enabled:
          description: Set to false to disable the auto-router plugin for this request. Defaults to true.
          type: boolean
        id:
          enum:
            - auto-router
          type: string
      required:
        - id
      type: object
    BadGatewayResponse:
      description: Bad Gateway - Provider/upstream API failure
      example:
        error:
          code: 502
          message: Provider returned error
      properties:
        error:
          $ref: '#/components/schemas/BadGatewayResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    BadGatewayResponseErrorData:
      description: Error data for BadGatewayResponse
      example:
        code: 502
        message: Provider returned error
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    BadRequestResponse:
      description: Bad Request - Invalid request parameters or malformed input
      example:
        error:
          code: 400
          message: Invalid request parameters
      properties:
        error:
          $ref: '#/components/schemas/BadRequestResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    BadRequestResponseErrorData:
      description: Error data for BadRequestResponse
      example:
        code: 400
        message: Invalid request parameters
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    BaseAnnotationAddedEvent:
      description: Event emitted when a text annotation is added to output
      example:
        annotation:
          end_index: 7
          start_index: 0
          title: Example
          type: url_citation
          url: https://example.com
        annotation_index: 0
        content_index: 0
        item_id: item-1
        output_index: 0
        sequence_number: 5
        type: response.output_text.annotation.added
      properties:
        annotation:
          $ref: '#/components/schemas/OpenAIResponsesAnnotation'
        annotation_index:
          type: integer
        content_index:
          type: integer
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.output_text.annotation.added
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - sequence_number
        - annotation_index
        - annotation
      type: object
    BaseContentPartAddedEvent:
      description: Event emitted when a new content part is added to an output item
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        part:
          annotations: []
          text: ''
          type: output_text
        sequence_number: 3
        type: response.content_part.added
      properties:
        content_index:
          type: integer
        item_id:
          type: string
        output_index:
          type: integer
        part:
          anyOf:
            - $ref: '#/components/schemas/ResponseOutputText'
            - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
        sequence_number:
          type: integer
        type:
          enum:
            - response.content_part.added
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - part
        - sequence_number
      type: object
    BaseContentPartDoneEvent:
      description: Event emitted when a content part is complete
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        part:
          annotations: []
          text: Hello! How can I help you?
          type: output_text
        sequence_number: 7
        type: response.content_part.done
      properties:
        content_index:
          type: integer
        item_id:
          type: string
        output_index:
          type: integer
        part:
          anyOf:
            - $ref: '#/components/schemas/ResponseOutputText'
            - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
        sequence_number:
          type: integer
        type:
          enum:
            - response.content_part.done
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - part
        - sequence_number
      type: object
    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:
          nullable: true
          type: string
        message:
          type: string
        param:
          nullable: true
          type: string
        sequence_number:
          type: integer
        type:
          enum:
            - error
          type: string
      required:
        - type
        - code
        - message
        - param
        - sequence_number
      type: object
    BaseFunctionCallArgsDeltaEvent:
      description: Event emitted when function call arguments are being streamed
      example:
        delta: '{"city": "..."}'
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.function_call_arguments.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.function_call_arguments.delta
          type: string
      required:
        - type
        - item_id
        - output_index
        - delta
        - sequence_number
      type: object
    BaseFunctionCallArgsDoneEvent:
      description: Event emitted when function call arguments streaming is complete
      example:
        arguments: '{"city": "San Francisco", "units": "celsius"}'
        item_id: item-1
        name: get_weather
        output_index: 0
        sequence_number: 6
        type: response.function_call_arguments.done
      properties:
        arguments:
          type: string
        item_id:
          type: string
        name:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.function_call_arguments.done
          type: string
      required:
        - type
        - item_id
        - output_index
        - name
        - arguments
        - sequence_number
      type: object
    BaseInputs:
      anyOf:
        - type: string
        - items:
            anyOf:
              - properties:
                  content:
                    anyOf:
                      - items:
                          discriminator:
                            mapping:
                              input_audio: '#/components/schemas/InputAudio'
                              input_file: '#/components/schemas/InputFile'
                              input_image: '#/components/schemas/InputImage'
                              input_text: '#/components/schemas/InputText'
                            propertyName: type
                          oneOf:
                            - $ref: '#/components/schemas/InputText'
                            - $ref: '#/components/schemas/InputImage'
                            - $ref: '#/components/schemas/InputFile'
                            - $ref: '#/components/schemas/InputAudio'
                        type: array
                      - type: string
                  phase:
                    anyOf:
                      - enum:
                          - commentary
                        type: string
                      - enum:
                          - final_answer
                        type: string
                      - nullable: true
                  role:
                    anyOf:
                      - enum:
                          - user
                        type: string
                      - enum:
                          - system
                        type: string
                      - enum:
                          - assistant
                        type: string
                      - enum:
                          - developer
                        type: string
                  type:
                    enum:
                      - message
                    type: string
                required:
                  - role
                  - content
                type: object
              - $ref: '#/components/schemas/OpenAIResponseInputMessageItem'
              - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput'
              - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall'
              - $ref: '#/components/schemas/OutputItemImageGenerationCall'
              - $ref: '#/components/schemas/OutputMessage'
              - $ref: '#/components/schemas/OpenAIResponseCustomToolCall'
              - $ref: '#/components/schemas/OpenAIResponseCustomToolCallOutput'
              - $ref: '#/components/schemas/ApplyPatchCallItem'
              - $ref: '#/components/schemas/ApplyPatchCallOutputItem'
          type: array
        - nullable: true
      example:
        - content: What is the weather today?
          role: user
    BaseMessagesResult:
      description: Base Anthropic Messages API response before OpenRouter extensions
      example:
        container: null
        content:
          - citations: []
            text: Hello!
            type: text
        id: msg_01XFDUDYJgAACzvnptvVoYEL
        model: claude-sonnet-4-5-20250929
        role: assistant
        stop_details: null
        stop_reason: end_turn
        stop_sequence: null
        type: message
        usage:
          cache_creation_input_tokens: null
          cache_read_input_tokens: null
          input_tokens: 12
          output_tokens: 8
      properties:
        container:
          $ref: '#/components/schemas/AnthropicContainer'
        content:
          items:
            $ref: '#/components/schemas/ORAnthropicContentBlock'
          type: array
        id:
          type: string
        model:
          type: string
        role:
          enum:
            - assistant
          type: string
        stop_details:
          $ref: '#/components/schemas/AnthropicRefusalStopDetails'
        stop_reason:
          $ref: '#/components/schemas/ORAnthropicStopReason'
        stop_sequence:
          nullable: true
          type: string
        type:
          enum:
            - message
          type: string
        usage:
          allOf:
            - $ref: '#/components/schemas/AnthropicUsage'
            - properties:
                iterations:
                  items:
                    $ref: '#/components/schemas/AnthropicUsageIteration'
                  type: array
                speed:
                  $ref: '#/components/schemas/AnthropicSpeed'
              type: object
          example:
            cache_creation: null
            cache_creation_input_tokens: null
            cache_read_input_tokens: null
            inference_geo: null
            input_tokens: 100
            output_tokens: 50
            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
      nullable: true
      properties:
        effort:
          $ref: '#/components/schemas/ReasoningEffort'
        summary:
          $ref: '#/components/schemas/ReasoningSummaryVerbosity'
      type: object
    BaseReasoningDeltaEvent:
      description: Event emitted when reasoning text delta is streamed
      example:
        content_index: 0
        delta: First, we need
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.reasoning_text.delta
      properties:
        content_index:
          type: integer
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.reasoning_text.delta
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      type: object
    BaseReasoningDoneEvent:
      description: Event emitted when reasoning text streaming is complete
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        sequence_number: 6
        text: First, we need to identify the key components and then combine them logically.
        type: response.reasoning_text.done
      properties:
        content_index:
          type: integer
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        text:
          type: string
        type:
          enum:
            - response.reasoning_text.done
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - text
        - sequence_number
      type: object
    BaseReasoningSummaryPartAddedEvent:
      description: Event emitted when a reasoning summary part is added
      example:
        item_id: item-1
        output_index: 0
        part:
          text: ''
          type: summary_text
        sequence_number: 3
        summary_index: 0
        type: response.reasoning_summary_part.added
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        part:
          $ref: '#/components/schemas/ReasoningSummaryText'
        sequence_number:
          type: integer
        summary_index:
          type: integer
        type:
          enum:
            - response.reasoning_summary_part.added
          type: string
      required:
        - type
        - output_index
        - item_id
        - summary_index
        - part
        - sequence_number
      type: object
    BaseReasoningSummaryPartDoneEvent:
      description: Event emitted when a reasoning summary part is complete
      example:
        item_id: item-1
        output_index: 0
        part:
          text: Analyzing the problem step by step to find the optimal solution.
          type: summary_text
        sequence_number: 7
        summary_index: 0
        type: response.reasoning_summary_part.done
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        part:
          $ref: '#/components/schemas/ReasoningSummaryText'
        sequence_number:
          type: integer
        summary_index:
          type: integer
        type:
          enum:
            - response.reasoning_summary_part.done
          type: string
      required:
        - type
        - output_index
        - item_id
        - summary_index
        - part
        - sequence_number
      type: object
    BaseReasoningSummaryTextDeltaEvent:
      description: Event emitted when reasoning summary text delta is streamed
      example:
        delta: Analyzing
        item_id: item-1
        output_index: 0
        sequence_number: 4
        summary_index: 0
        type: response.reasoning_summary_text.delta
      properties:
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        summary_index:
          type: integer
        type:
          enum:
            - response.reasoning_summary_text.delta
          type: string
      required:
        - type
        - item_id
        - output_index
        - summary_index
        - delta
        - sequence_number
      type: object
    BaseReasoningSummaryTextDoneEvent:
      description: Event emitted when reasoning summary text streaming is complete
      example:
        item_id: item-1
        output_index: 0
        sequence_number: 6
        summary_index: 0
        text: Analyzing the problem step by step to find the optimal solution.
        type: response.reasoning_summary_text.done
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        summary_index:
          type: integer
        text:
          type: string
        type:
          enum:
            - response.reasoning_summary_text.done
          type: string
      required:
        - type
        - item_id
        - output_index
        - summary_index
        - text
        - sequence_number
      type: object
    BaseRefusalDeltaEvent:
      description: Event emitted when a refusal delta is streamed
      example:
        content_index: 0
        delta: I'm sorry
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.refusal.delta
      properties:
        content_index:
          type: integer
        delta:
          type: string
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.refusal.delta
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      type: object
    BaseRefusalDoneEvent:
      description: Event emitted when refusal streaming is complete
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        refusal: I'm sorry, but I can't assist with that request.
        sequence_number: 6
        type: response.refusal.done
      properties:
        content_index:
          type: integer
        item_id:
          type: string
        output_index:
          type: integer
        refusal:
          type: string
        sequence_number:
          type: integer
        type:
          enum:
            - response.refusal.done
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - refusal
        - sequence_number
      type: object
    BaseResponsesResult:
      example:
        completed_at: 1704067210
        created_at: 1704067200
        error: null
        id: resp-abc123
        incomplete_details: null
        instructions: null
        max_output_tokens: null
        metadata: null
        model: gpt-4
        object: response
        output: []
        parallel_tool_calls: true
        status: completed
        temperature: null
        tool_choice: auto
        tools: []
        top_p: null
      properties:
        background:
          nullable: true
          type: boolean
        completed_at:
          nullable: true
          type: integer
        created_at:
          type: integer
        error:
          $ref: '#/components/schemas/ResponsesErrorField'
        frequency_penalty:
          format: double
          nullable: true
          type: number
        id:
          type: string
        incomplete_details:
          $ref: '#/components/schemas/IncompleteDetails'
        instructions:
          $ref: '#/components/schemas/BaseInputs'
        max_output_tokens:
          nullable: true
          type: integer
        max_tool_calls:
          nullable: true
          type: integer
        metadata:
          $ref: '#/components/schemas/RequestMetadata'
        model:
          type: string
        object:
          enum:
            - response
          type: string
        output:
          items:
            discriminator:
              mapping:
                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
          nullable: true
          type: number
        previous_response_id:
          nullable: true
          type: string
        prompt:
          $ref: '#/components/schemas/StoredPromptTemplate'
        prompt_cache_key:
          nullable: true
          type: string
        reasoning:
          $ref: '#/components/schemas/BaseReasoningConfig'
        safety_identifier:
          nullable: true
          type: string
        service_tier:
          $ref: '#/components/schemas/ServiceTier'
        status:
          $ref: '#/components/schemas/OpenAIResponsesResponseStatus'
        store:
          type: boolean
        temperature:
          format: double
          nullable: true
          type: number
        text:
          $ref: '#/components/schemas/TextConfig'
        tool_choice:
          $ref: '#/components/schemas/OpenAIResponsesToolChoice'
        tools:
          items:
            oneOf:
              - allOf:
                  - $ref: '#/components/schemas/FunctionTool'
                  - properties: {}
                    type: object
                description: Function tool definition
                example:
                  description: Get the current weather in a location
                  name: get_weather
                  parameters:
                    properties:
                      location:
                        description: The city and state
                        type: string
                      unit:
                        enum:
                          - celsius
                          - fahrenheit
                        type: string
                        x-speakeasy-unknown-values: allow
                    required:
                      - location
                    type: object
                  type: function
              - $ref: '#/components/schemas/Preview_WebSearchServerTool'
              - $ref: '#/components/schemas/Preview_20250311_WebSearchServerTool'
              - $ref: '#/components/schemas/Legacy_WebSearchServerTool'
              - $ref: '#/components/schemas/WebSearchServerTool'
              - $ref: '#/components/schemas/FileSearchServerTool'
              - $ref: '#/components/schemas/ComputerUseServerTool'
              - $ref: '#/components/schemas/CodeInterpreterServerTool'
              - $ref: '#/components/schemas/McpServerTool'
              - $ref: '#/components/schemas/ImageGenerationServerTool'
              - $ref: '#/components/schemas/CodexLocalShellTool'
              - $ref: '#/components/schemas/ShellServerTool'
              - $ref: '#/components/schemas/ApplyPatchServerTool'
              - $ref: '#/components/schemas/CustomTool'
          type: array
        top_logprobs:
          type: integer
        top_p:
          format: double
          nullable: true
          type: number
        truncation:
          $ref: '#/components/schemas/Truncation'
        usage:
          $ref: '#/components/schemas/OpenAIResponsesUsage'
        user:
          nullable: true
          type: string
      required:
        - id
        - object
        - created_at
        - model
        - status
        - completed_at
        - output
        - error
        - incomplete_details
        - temperature
        - top_p
        - presence_penalty
        - frequency_penalty
        - instructions
        - metadata
        - tools
        - tool_choice
        - parallel_tool_calls
      type: object
    BaseTextDeltaEvent:
      description: Event emitted when a text delta is streamed
      example:
        content_index: 0
        delta: Hello
        item_id: item-1
        logprobs: []
        output_index: 0
        sequence_number: 4
        type: response.output_text.delta
      properties:
        content_index:
          type: integer
        delta:
          type: string
        item_id:
          type: string
        logprobs:
          items:
            $ref: '#/components/schemas/OpenResponsesLogProbs'
          type: array
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.output_text.delta
          type: string
      required:
        - type
        - logprobs
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      type: object
    BaseTextDoneEvent:
      description: Event emitted when text streaming is complete
      example:
        content_index: 0
        item_id: item-1
        logprobs: []
        output_index: 0
        sequence_number: 6
        text: Hello! How can I help you?
        type: response.output_text.done
      properties:
        content_index:
          type: integer
        item_id:
          type: string
        logprobs:
          items:
            $ref: '#/components/schemas/OpenResponsesLogProbs'
          type: array
        output_index:
          type: integer
        sequence_number:
          type: integer
        text:
          type: string
        type:
          enum:
            - response.output_text.done
          type: string
      required:
        - type
        - output_index
        - item_id
        - content_index
        - text
        - sequence_number
        - logprobs
      type: object
    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
      x-speakeasy-unknown-values: allow
    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'
    BigNumberUnion:
      description: Price per million prompt tokens
      example: 1000
      type: string
    BulkAddWorkspaceMembersRequest:
      example:
        user_ids:
          - user_abc123
          - user_def456
      properties:
        user_ids:
          description: List of user IDs to add to the workspace. Members are assigned the same role they hold in the organization.
          example:
            - user_abc123
            - user_def456
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - user_ids
      type: object
    BulkAddWorkspaceMembersResponse:
      example:
        added_count: 1
        data:
          - created_at: '2025-08-24T10:30:00Z'
            id: 660e8400-e29b-41d4-a716-446655440000
            role: member
            user_id: user_abc123
            workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        added_count:
          description: Number of workspace memberships created or updated
          example: 2
          type: integer
        data:
          description: List of added workspace memberships
          items:
            $ref: '#/components/schemas/WorkspaceMember'
          type: array
      required:
        - data
        - added_count
      type: object
    BulkAssignKeysRequest:
      example:
        key_hashes:
          - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
      properties:
        key_hashes:
          description: Array of API key hashes to assign to the guardrail
          example:
            - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
          items:
            minLength: 1
            type: string
          minItems: 1
          type: array
      required:
        - key_hashes
      type: object
    BulkAssignKeysResponse:
      example:
        assigned_count: 3
      properties:
        assigned_count:
          description: Number of keys successfully assigned
          example: 3
          type: integer
      required:
        - assigned_count
      type: object
    BulkAssignMembersRequest:
      example:
        member_user_ids:
          - user_abc123
          - user_def456
      properties:
        member_user_ids:
          description: Array of member user IDs to assign to the guardrail
          example:
            - user_abc123
            - user_def456
          items:
            minLength: 1
            type: string
          minItems: 1
          type: array
      required:
        - member_user_ids
      type: object
    BulkAssignMembersResponse:
      example:
        assigned_count: 2
      properties:
        assigned_count:
          description: Number of members successfully assigned
          example: 2
          type: integer
      required:
        - assigned_count
      type: object
    BulkRemoveWorkspaceMembersRequest:
      example:
        user_ids:
          - user_abc123
          - user_def456
      properties:
        user_ids:
          description: List of user IDs to remove from the workspace
          example:
            - user_abc123
            - user_def456
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
      required:
        - user_ids
      type: object
    BulkRemoveWorkspaceMembersResponse:
      example:
        removed_count: 2
      properties:
        removed_count:
          description: Number of members removed
          example: 2
          type: integer
      required:
        - removed_count
      type: object
    BulkUnassignKeysRequest:
      example:
        key_hashes:
          - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
      properties:
        key_hashes:
          description: Array of API key hashes to unassign from the guardrail
          example:
            - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
          items:
            minLength: 1
            type: string
          minItems: 1
          type: array
      required:
        - key_hashes
      type: object
    BulkUnassignKeysResponse:
      example:
        unassigned_count: 3
      properties:
        unassigned_count:
          description: Number of keys successfully unassigned
          example: 3
          type: integer
      required:
        - unassigned_count
      type: object
    BulkUnassignMembersRequest:
      example:
        member_user_ids:
          - user_abc123
          - user_def456
      properties:
        member_user_ids:
          description: Array of member user IDs to unassign from the guardrail
          example:
            - user_abc123
            - user_def456
          items:
            minLength: 1
            type: string
          minItems: 1
          type: array
      required:
        - member_user_ids
      type: object
    BulkUnassignMembersResponse:
      example:
        unassigned_count: 2
      properties:
        unassigned_count:
          description: Number of members successfully unassigned
          example: 2
          type: integer
      required:
        - unassigned_count
      type: object
    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
          nullable: true
          type: array
        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
          nullable: true
          type: array
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
        - crusoe
        - darkbloom
        - decart
        - deepinfra
        - deepseek
        - dekallm
        - digitalocean
        - featherless
        - fireworks
        - friendli
        - gmicloud
        - google-ai-studio
        - google-vertex
        - groq
        - inception
        - inceptron
        - inference-net
        - infermatic
        - inflection
        - io-net
        - ionstream
        - liquid
        - mancer
        - mara
        - minimax
        - mistral
        - modelrun
        - modular
        - moonshotai
        - morph
        - ncompass
        - nebius
        - nex-agi
        - nextbit
        - novita
        - nvidia
        - open-inference
        - openai
        - parasail
        - perceptron
        - perplexity
        - phala
        - poolside
        - recraft
        - reka
        - relace
        - sambanova
        - seed
        - siliconflow
        - sourceful
        - stepfun
        - streamlake
        - switchpoint
        - together
        - upstage
        - venice
        - wafer
        - wandb
        - xai
        - xiaomi
        - z-ai
      example: openai
      type: string
      x-speakeasy-unknown-values: allow
    ChatAssistantImages:
      description: Generated images from image generation models
      example:
        - image_url:
            url: data:image/png;base64,iVBORw0KGgo...
      items:
        properties:
          image_url:
            properties:
              url:
                description: URL or base64-encoded data of the generated image
                type: string
            required:
              - url
            type: object
        required:
          - image_url
        type: object
      type: array
    ChatAssistantMessage:
      description: Assistant message for requests and responses
      example:
        content: The capital of France is Paris.
        role: assistant
      properties:
        audio:
          $ref: '#/components/schemas/ChatAudioOutput'
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/ChatContentItems'
              type: array
            - nullable: true
          description: Assistant message content
        images:
          $ref: '#/components/schemas/ChatAssistantImages'
        name:
          description: Optional name for the assistant
          type: string
        reasoning:
          description: Reasoning output
          nullable: true
          type: string
        reasoning_details:
          $ref: '#/components/schemas/ChatReasoningDetails'
        refusal:
          description: Refusal message if content was refused
          nullable: true
          type: string
        role:
          enum:
            - assistant
          type: string
        tool_calls:
          description: Tool calls made by the assistant
          items:
            $ref: '#/components/schemas/ChatToolCall'
          type: array
      required:
        - role
      type: object
    ChatAudioOutput:
      description: Audio output data or reference
      example:
        data: UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f
        expires_at: 1677652400
        id: audio_abc123
        transcript: Hello! How can I help you today?
      properties:
        data:
          description: Base64 encoded audio data
          type: string
        expires_at:
          description: Audio expiration timestamp
          type: integer
        id:
          description: Audio output identifier
          type: string
        transcript:
          description: Audio transcript
          type: string
      type: object
    ChatChoice:
      description: Chat completion choice
      example:
        finish_reason: stop
        index: 0
        logprobs: null
        message:
          content: The capital of France is Paris.
          role: assistant
      properties:
        finish_reason:
          $ref: '#/components/schemas/ChatFinishReasonEnum'
        index:
          description: Choice index
          example: 0
          type: integer
        logprobs:
          $ref: '#/components/schemas/ChatTokenLogprobs'
        message:
          $ref: '#/components/schemas/ChatAssistantMessage'
      required:
        - finish_reason
        - index
        - message
      type: object
    ChatContentAudio:
      description: Audio input content part. Supported audio formats vary by provider.
      example:
        input_audio:
          data: SGVsbG8gV29ybGQ=
          format: wav
        type: input_audio
      properties:
        input_audio:
          properties:
            data:
              description: Base64 encoded audio data
              type: string
            format:
              description: >-
                Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by provider.
              type: string
          required:
            - data
            - format
          type: object
        type:
          enum:
            - input_audio
          type: string
      required:
        - type
        - input_audio
      type: object
    ChatContentCacheControl:
      allOf:
        - $ref: '#/components/schemas/AnthropicCacheControlDirective'
        - properties: {}
          type: object
      description: Cache control for the content part
      example:
        ttl: 5m
        type: ephemeral
    ChatContentFile:
      description: File content part for document processing
      example:
        file:
          file_data: https://example.com/document.pdf
          filename: document.pdf
        type: file
      properties:
        file:
          properties:
            file_data:
              description: File content as base64 data URL or URL
              type: string
            file_id:
              description: File ID for previously uploaded files
              type: string
            filename:
              description: Original filename
              type: string
          type: object
        type:
          enum:
            - file
          type: string
      required:
        - type
        - file
      type: object
    ChatContentImage:
      description: Image content part for vision models
      example:
        image_url:
          detail: auto
          url: https://example.com/image.jpg
        type: image_url
      properties:
        image_url:
          properties:
            detail:
              description: Image detail level for vision models
              enum:
                - auto
                - low
                - high
              type: string
              x-speakeasy-unknown-values: allow
            url:
              description: 'URL of the image (data: URLs supported)'
              type: string
          required:
            - url
          type: object
        type:
          enum:
            - image_url
          type: string
      required:
        - type
        - image_url
      type: object
    ChatContentItems:
      description: Content part for chat completion messages
      discriminator:
        mapping:
          file: '#/components/schemas/ChatContentFile'
          image_url: '#/components/schemas/ChatContentImage'
          input_audio: '#/components/schemas/ChatContentAudio'
          input_video: '#/components/schemas/Legacy_ChatContentVideo'
          text: '#/components/schemas/ChatContentText'
          video_url: '#/components/schemas/ChatContentVideo'
        propertyName: type
      example:
        text: Hello, world!
        type: text
      oneOf:
        - $ref: '#/components/schemas/ChatContentText'
        - $ref: '#/components/schemas/ChatContentImage'
        - $ref: '#/components/schemas/ChatContentAudio'
        - $ref: '#/components/schemas/Legacy_ChatContentVideo'
        - $ref: '#/components/schemas/ChatContentVideo'
        - $ref: '#/components/schemas/ChatContentFile'
    ChatContentText:
      description: Text content part
      example:
        text: Hello, world!
        type: text
      properties:
        cache_control:
          $ref: '#/components/schemas/ChatContentCacheControl'
        text:
          type: string
        type:
          enum:
            - text
          type: string
      required:
        - type
        - text
      type: object
    ChatContentVideo:
      description: Video input content part
      example:
        type: video_url
        video_url:
          url: https://example.com/video.mp4
      properties:
        type:
          enum:
            - video_url
          type: string
        video_url:
          $ref: '#/components/schemas/ChatContentVideoInput'
      required:
        - type
        - video_url
      type: object
    ChatContentVideoInput:
      description: Video input object
      example:
        url: https://example.com/video.mp4
      properties:
        url:
          description: 'URL of the video (data: URLs supported)'
          type: string
      required:
        - url
      type: object
    ChatDebugOptions:
      description: Debug options for inspecting request transformations (streaming only)
      example:
        echo_upstream_body: true
      properties:
        echo_upstream_body:
          description: >-
            If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only works with streaming mode.
          example: true
          type: boolean
      type: object
    ChatDeveloperMessage:
      description: Developer message
      example:
        content: This is a message from the developer.
        role: developer
      properties:
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/ChatContentText'
              type: array
          description: Developer message content
          example: This is a message from the developer.
        name:
          description: Optional name for the developer message
          example: Developer
          type: string
        role:
          enum:
            - developer
          type: string
      required:
        - role
        - content
      type: object
    ChatFinishReasonEnum:
      enum:
        - tool_calls
        - stop
        - length
        - content_filter
        - error
        - null
      example: stop
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ChatFormatGrammarConfig:
      description: Custom grammar response format
      example:
        grammar: root ::= "yes" | "no"
        type: grammar
      properties:
        grammar:
          description: Custom grammar for text generation
          example: root ::= "yes" | "no"
          type: string
        type:
          enum:
            - grammar
          type: string
      required:
        - type
        - grammar
      type: object
    ChatFormatJsonSchemaConfig:
      description: JSON Schema response format for structured outputs
      example:
        json_schema:
          name: math_response
          schema:
            properties:
              answer:
                type: number
            required:
              - answer
            type: object
        type: json_schema
      properties:
        json_schema:
          $ref: '#/components/schemas/ChatJsonSchemaConfig'
        type:
          enum:
            - json_schema
          type: string
      required:
        - type
        - json_schema
      type: object
    ChatFormatPythonConfig:
      description: Python code response format
      example:
        type: python
      properties:
        type:
          enum:
            - python
          type: string
      required:
        - type
      type: object
    ChatFormatTextConfig:
      description: Default text response format
      example:
        type: text
      properties:
        type:
          enum:
            - text
          type: string
      required:
        - type
      type: object
    ChatFunctionTool:
      anyOf:
        - properties:
            cache_control:
              $ref: '#/components/schemas/ChatContentCacheControl'
            function:
              description: Function definition for tool calling
              example:
                description: Get the current weather for a location
                name: get_weather
                parameters:
                  properties:
                    location:
                      description: City name
                      type: string
                  required:
                    - location
                  type: object
              properties:
                description:
                  description: Function description for the model
                  example: Get the current weather for a location
                  type: string
                name:
                  description: Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)
                  example: get_weather
                  maxLength: 64
                  type: string
                parameters:
                  additionalProperties:
                    nullable: true
                  description: Function parameters as JSON Schema object
                  example:
                    properties:
                      location:
                        description: City name
                        type: string
                    required:
                      - location
                    type: object
                  type: object
                strict:
                  description: Enable strict schema adherence
                  example: false
                  nullable: true
                  type: boolean
              required:
                - name
              type: object
            type:
              enum:
                - function
              type: string
          required:
            - type
            - function
          type: object
        - $ref: '#/components/schemas/AdvisorServerTool_OpenRouter'
        - $ref: '#/components/schemas/BashServerTool'
        - $ref: '#/components/schemas/DatetimeServerTool'
        - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
        - $ref: '#/components/schemas/ChatSearchModelsServerTool'
        - $ref: '#/components/schemas/WebFetchServerTool'
        - $ref: '#/components/schemas/OpenRouterWebSearchServerTool'
        - $ref: '#/components/schemas/ChatWebSearchShorthand'
      description: Tool definition for function calling (regular function or OpenRouter built-in server tool)
      example:
        function:
          description: Get the current weather for a location
          name: get_weather
          parameters:
            properties:
              location:
                description: City name
                type: string
              unit:
                enum:
                  - celsius
                  - fahrenheit
                type: string
                x-speakeasy-unknown-values: allow
            required:
              - location
            type: object
        type: function
    ChatJsonSchemaConfig:
      description: JSON Schema configuration object
      example:
        description: A mathematical response
        name: math_response
        schema:
          properties:
            answer:
              type: number
          required:
            - answer
          type: object
        strict: true
      properties:
        description:
          description: Schema description for the model
          example: A mathematical response
          type: string
        name:
          description: Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars)
          example: math_response
          maxLength: 64
          type: string
        schema:
          additionalProperties:
            nullable: true
          description: JSON Schema object
          example:
            properties:
              answer:
                type: number
            required:
              - answer
            type: object
          type: object
        strict:
          description: Enable strict schema adherence
          example: false
          nullable: true
          type: boolean
      required:
        - name
      type: object
    ChatMessages:
      description: Chat completion message with role-based discrimination
      discriminator:
        mapping:
          assistant: '#/components/schemas/ChatAssistantMessage'
          developer: '#/components/schemas/ChatDeveloperMessage'
          system: '#/components/schemas/ChatSystemMessage'
          tool: '#/components/schemas/ChatToolMessage'
          user: '#/components/schemas/ChatUserMessage'
        propertyName: role
      example:
        content: What is the capital of France?
        role: user
      oneOf:
        - $ref: '#/components/schemas/ChatSystemMessage'
        - $ref: '#/components/schemas/ChatUserMessage'
        - $ref: '#/components/schemas/ChatDeveloperMessage'
        - $ref: '#/components/schemas/ChatAssistantMessage'
        - $ref: '#/components/schemas/ChatToolMessage'
    ChatModelNames:
      description: Models to use for completion
      example:
        - openai/gpt-4
        - openai/gpt-4o
      items:
        allOf:
          - $ref: '#/components/schemas/ModelName'
          - description: Available OpenRouter chat completion models
      type: array
    ChatNamedToolChoice:
      description: Named tool choice for specific function
      example:
        function:
          name: get_weather
        type: function
      properties:
        function:
          properties:
            name:
              description: Function name to call
              example: get_weather
              type: string
          required:
            - name
          type: object
        type:
          enum:
            - function
          type: string
      required:
        - type
        - function
      type: object
    ChatReasoningDetails:
      description: Reasoning details for extended thinking models
      example:
        - thinking: Let me work through this step by step...
          type: thinking
      items:
        $ref: '#/components/schemas/ReasoningDetailUnion'
      type: array
    ChatReasoningSummaryVerbosityEnum:
      enum:
        - auto
        - concise
        - detailed
        - null
      example: concise
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    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
          nullable: true
          type: number
        image_config:
          $ref: '#/components/schemas/ImageConfig'
        logit_bias:
          additionalProperties:
            format: double
            type: number
          description: Token logit bias adjustments
          example:
            '50256': -100
          nullable: true
          type: object
        logprobs:
          description: Return log probabilities
          example: false
          nullable: true
          type: boolean
        max_completion_tokens:
          description: Maximum tokens in completion
          example: 100
          nullable: true
          type: integer
        max_tokens:
          description: 'Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16.'
          example: 100
          nullable: true
          type: integer
        messages:
          description: List of messages for the conversation
          example:
            - content: Hello!
              role: user
          items:
            $ref: '#/components/schemas/ChatMessages'
          minItems: 1
          type: array
        metadata:
          additionalProperties:
            type: string
          description: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values)
          example:
            session_id: session-456
            user_id: user-123
          type: object
        modalities:
          description: Output modalities for the response. Supported values are "text", "image", and "audio".
          example:
            - text
            - image
          items:
            enum:
              - text
              - image
              - audio
            type: string
            x-speakeasy-unknown-values: allow
          type: array
        model:
          $ref: '#/components/schemas/ModelName'
        models:
          $ref: '#/components/schemas/ChatModelNames'
        parallel_tool_calls:
          description: >-
            Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response.
          example: true
          nullable: true
          type: boolean
        plugins:
          description: Plugins you want to enable for this request, including their settings.
          items:
            discriminator:
              mapping:
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                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/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:
          description: Presence penalty (-2.0 to 2.0)
          example: 0
          format: double
          nullable: true
          type: number
        provider:
          $ref: '#/components/schemas/ProviderPreferences'
        reasoning:
          description: Configuration options for reasoning models
          example:
            effort: medium
            summary: concise
          properties:
            effort:
              description: Constrains effort on reasoning for reasoning models
              enum:
                - xhigh
                - high
                - medium
                - low
                - minimal
                - none
                - null
              example: medium
              nullable: true
              type: string
              x-speakeasy-unknown-values: allow
            summary:
              $ref: '#/components/schemas/ChatReasoningSummaryVerbosityEnum'
          type: object
        response_format:
          description: Response format configuration
          discriminator:
            mapping:
              grammar: '#/components/schemas/ChatFormatGrammarConfig'
              json_object: '#/components/schemas/FormatJsonObjectConfig'
              json_schema: '#/components/schemas/ChatFormatJsonSchemaConfig'
              python: '#/components/schemas/ChatFormatPythonConfig'
              text: '#/components/schemas/ChatFormatTextConfig'
            propertyName: type
          example:
            type: json_object
          oneOf:
            - $ref: '#/components/schemas/ChatFormatTextConfig'
            - $ref: '#/components/schemas/FormatJsonObjectConfig'
            - $ref: '#/components/schemas/ChatFormatJsonSchemaConfig'
            - $ref: '#/components/schemas/ChatFormatGrammarConfig'
            - $ref: '#/components/schemas/ChatFormatPythonConfig'
        route:
          $ref: '#/components/schemas/DeprecatedRoute'
        seed:
          description: Random seed for deterministic outputs
          example: 42
          nullable: true
          type: integer
        service_tier:
          description: The service tier to use for processing this request.
          enum:
            - auto
            - default
            - flex
            - priority
            - scale
            - null
          example: auto
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        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
            - nullable: true
          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
          nullable: true
          type: number
        tool_choice:
          $ref: '#/components/schemas/ChatToolChoice'
        tools:
          description: Available tools for function calling
          example:
            - function:
                description: Get weather
                name: get_weather
              type: function
          items:
            $ref: '#/components/schemas/ChatFunctionTool'
          type: array
        top_logprobs:
          description: Number of top log probabilities to return (0-20)
          example: 5
          nullable: true
          type: integer
        top_p:
          description: Nucleus sampling parameter (0-1)
          example: 1
          format: double
          nullable: true
          type: number
        trace:
          $ref: '#/components/schemas/TraceConfig'
        user:
          description: Unique user identifier
          example: user-123
          type: string
      required:
        - messages
      type: object
    ChatResult:
      description: Chat completion response
      example:
        choices:
          - finish_reason: stop
            index: 0
            message:
              content: The capital of France is Paris.
              role: assistant
        created: 1677652288
        id: chatcmpl-123
        model: openai/gpt-4
        object: chat.completion
        usage:
          completion_tokens: 15
          prompt_tokens: 10
          total_tokens: 25
      properties:
        choices:
          description: List of completion choices
          items:
            $ref: '#/components/schemas/ChatChoice'
          type: array
        created:
          description: Unix timestamp of creation
          example: 1677652288
          type: integer
        id:
          description: Unique completion identifier
          example: chatcmpl-123
          type: string
        model:
          description: Model used for completion
          example: openai/gpt-4
          type: string
        object:
          enum:
            - chat.completion
          type: string
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        service_tier:
          description: The service tier used by the upstream provider for this request
          example: default
          nullable: true
          type: string
        system_fingerprint:
          description: System fingerprint
          example: fp_44709d6fcb
          nullable: true
          type: string
        usage:
          $ref: '#/components/schemas/ChatUsage'
      required:
        - id
        - choices
        - created
        - model
        - object
        - system_fingerprint
      type: object
    ChatSearchModelsServerTool:
      description: 'OpenRouter built-in server tool: searches and filters AI models available on OpenRouter'
      example:
        parameters:
          max_results: 5
        type: openrouter:experimental__search_models
      properties:
        parameters:
          $ref: '#/components/schemas/SearchModelsServerToolConfig'
        type:
          enum:
            - openrouter:experimental__search_models
          type: string
      required:
        - type
      type: object
    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
          properties:
            code:
              description: Error code
              example: 429
              format: int32
              type: integer
            message:
              description: Error message
              example: Rate limit exceeded
              type: string
          required:
            - message
            - code
          type: object
        id:
          description: Unique chunk identifier
          example: chatcmpl-123
          type: string
        model:
          description: Model used for completion
          example: openai/gpt-4
          type: string
        object:
          enum:
            - chat.completion.chunk
          type: string
        openrouter_metadata:
          $ref: '#/components/schemas/OpenRouterMetadata'
        service_tier:
          description: The service tier used by the upstream provider for this request
          example: default
          nullable: true
          type: string
        system_fingerprint:
          description: System fingerprint
          example: fp_44709d6fcb
          type: string
        usage:
          $ref: '#/components/schemas/ChatUsage'
      required:
        - id
        - choices
        - created
        - model
        - object
      type: object
      x-speakeasy-entity: ChatStreamChunk
    ChatStreamDelta:
      description: Delta changes in streaming response
      example:
        content: Hello
        role: assistant
      properties:
        audio:
          allOf:
            - $ref: '#/components/schemas/ChatAudioOutput'
            - description: Audio output data
        content:
          description: Message content delta
          example: Hello
          nullable: true
          type: string
        reasoning:
          description: Reasoning content delta
          example: I need to
          nullable: true
          type: string
        reasoning_details:
          $ref: '#/components/schemas/ChatStreamReasoningDetails'
        refusal:
          description: Refusal message delta
          example: null
          nullable: true
          type: string
        role:
          description: The role of the message author
          enum:
            - assistant
          example: assistant
          type: string
        tool_calls:
          description: Tool calls delta
          items:
            $ref: '#/components/schemas/ChatStreamToolCall'
          type: array
      type: object
    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
      nullable: true
      properties:
        include_usage:
          deprecated: true
          description: 'Deprecated: This field has no effect. Full usage details are always included.'
          example: true
          type: boolean
      type: object
    ChatStreamReasoningDetails:
      description: Reasoning details for extended thinking models
      example:
        - text: Let me think about this...
          type: text
      items:
        $ref: '#/components/schemas/ReasoningDetailUnion'
      type: array
    ChatStreamToolCall:
      description: Tool call delta for streaming responses
      example:
        function:
          arguments: '{"location": "..."}'
          name: get_weather
        id: call_abc123
        index: 0
        type: function
      properties:
        function:
          description: Function call details
          properties:
            arguments:
              description: Function arguments as JSON string
              example: '{"location": "..."}'
              type: string
            name:
              description: Function name
              example: get_weather
              type: string
          type: object
        id:
          description: Tool call identifier
          example: call_abc123
          type: string
        index:
          description: Tool call index in the array
          example: 0
          type: integer
        type:
          description: Tool call type
          enum:
            - function
          example: function
          type: string
      required:
        - index
      type: object
    ChatSystemMessage:
      description: System message for setting behavior
      example:
        content: You are a helpful assistant.
        name: Assistant Config
        role: system
      properties:
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/ChatContentText'
              type: array
          description: System message content
          example: You are a helpful assistant.
        name:
          description: Optional name for the system message
          example: Assistant Config
          type: string
        role:
          enum:
            - system
          type: string
      required:
        - role
        - content
      type: object
    ChatTokenLogprob:
      description: Token log probability information
      example:
        bytes: null
        logprob: -0.612345
        token: ' Hello'
        top_logprobs:
          - bytes: null
            logprob: -0.612345
            token: ' Hello'
      properties:
        bytes:
          description: UTF-8 bytes of the token
          items:
            type: integer
          nullable: true
          type: array
        logprob:
          description: Log probability of the token
          format: double
          type: number
        token:
          description: The token
          type: string
        top_logprobs:
          description: Top alternative tokens with probabilities
          items:
            properties:
              bytes:
                items:
                  type: integer
                nullable: true
                type: array
              logprob:
                format: double
                type: number
              token:
                type: string
            required:
              - token
              - logprob
              - bytes
            type: object
          type: array
      required:
        - token
        - logprob
        - bytes
        - top_logprobs
      type: object
    ChatTokenLogprobs:
      description: Log probabilities for the completion
      example:
        content:
          - bytes: null
            logprob: -0.612345
            token: ' Hello'
            top_logprobs: []
        refusal: null
      nullable: true
      properties:
        content:
          description: Log probabilities for content tokens
          items:
            $ref: '#/components/schemas/ChatTokenLogprob'
          nullable: true
          type: array
        refusal:
          description: Log probabilities for refusal tokens
          items:
            $ref: '#/components/schemas/ChatTokenLogprob'
          nullable: true
          type: array
      required:
        - content
      type: object
    ChatToolCall:
      description: Tool call made by the assistant
      example:
        function:
          arguments: '{"location": "Boston, MA"}'
          name: get_current_weather
        id: call_abc123
        type: function
      properties:
        function:
          properties:
            arguments:
              description: Function arguments as JSON string
              type: string
            name:
              description: Function name to call
              type: string
          required:
            - name
            - arguments
          type: object
        id:
          description: Tool call identifier
          type: string
        type:
          enum:
            - function
          type: string
      required:
        - id
        - type
        - function
      type: object
    ChatToolChoice:
      anyOf:
        - enum:
            - none
          type: string
        - enum:
            - auto
          type: string
        - enum:
            - required
          type: string
        - $ref: '#/components/schemas/ChatNamedToolChoice'
        - $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
        total_tokens: 25
      properties:
        completion_tokens:
          description: Number of tokens in the completion
          type: integer
        completion_tokens_details:
          description: Detailed completion token usage
          nullable: true
          properties:
            accepted_prediction_tokens:
              description: Accepted prediction tokens
              nullable: true
              type: integer
            audio_tokens:
              description: Tokens used for audio output
              nullable: true
              type: integer
            reasoning_tokens:
              description: Tokens used for reasoning
              nullable: true
              type: integer
            rejected_prediction_tokens:
              description: Rejected prediction tokens
              nullable: true
              type: integer
          type: object
        cost:
          description: Cost of the completion
          format: double
          nullable: true
          type: number
        cost_details:
          $ref: '#/components/schemas/CostDetails'
        is_byok:
          description: Whether a request was made using a Bring Your Own Key configuration
          type: boolean
        prompt_tokens:
          description: Number of tokens in the prompt
          type: integer
        prompt_tokens_details:
          description: Detailed prompt token usage
          nullable: true
          properties:
            audio_tokens:
              description: Audio input tokens
              type: integer
            cache_write_tokens:
              description: Tokens written to cache. Only returned for models with explicit caching and cache write pricing.
              type: integer
            cached_tokens:
              description: Cached prompt tokens
              type: integer
            video_tokens:
              description: Video input tokens
              type: integer
          type: object
        total_tokens:
          description: Total number of tokens
          type: integer
      required:
        - completion_tokens
        - prompt_tokens
        - total_tokens
      type: object
    ChatUserMessage:
      description: User message
      example:
        content: What is the capital of France?
        role: user
      properties:
        content:
          anyOf:
            - type: string
            - items:
                $ref: '#/components/schemas/ChatContentItems'
              type: array
          description: User message content
          example: What is the capital of France?
        name:
          description: Optional name for the user
          example: User
          type: string
        role:
          enum:
            - user
          type: string
      required:
        - role
        - content
      type: object
    ChatWebSearchShorthand:
      description: Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search.
      example:
        type: web_search_preview
      properties:
        allowed_domains:
          description: >-
            Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, and most native providers (Anthropic, OpenAI, xAI). Not supported with Perplexity. 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, Anthropic, and xAI. Not supported with OpenAI (silently ignored) or Perplexity. 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 and Parallel 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). When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence for both engines. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        max_total_results:
          description: >-
            Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified.
          example: 50
          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
          x-speakeasy-unknown-values: allow
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocationServerTool'
      required:
        - type
      type: object
    CodeInterpreterCallItem:
      description: A code interpreter execution call with outputs
      example:
        code: print("Hello, World!")
        container_id: container-xyz789
        id: code-abc123
        outputs:
          - logs: Hello, World!
            type: logs
        status: completed
        type: code_interpreter_call
      properties:
        code:
          nullable: true
          type: string
        container_id:
          type: string
        id:
          type: string
        outputs:
          items:
            anyOf:
              - properties:
                  type:
                    enum:
                      - image
                    type: string
                  url:
                    type: string
                required:
                  - type
                  - url
                type: object
              - properties:
                  logs:
                    type: string
                  type:
                    enum:
                      - logs
                    type: string
                required:
                  - type
                  - logs
                type: object
          nullable: true
          type: array
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - code_interpreter_call
          type: string
      required:
        - type
        - id
        - code
        - outputs
        - status
        - container_id
      type: object
    CodeInterpreterServerTool:
      description: Code interpreter tool configuration
      example:
        container: auto
        type: code_interpreter
      properties:
        container:
          anyOf:
            - type: string
            - properties:
                file_ids:
                  items:
                    type: string
                  type: array
                memory_limit:
                  enum:
                    - 1g
                    - 4g
                    - 16g
                    - 64g
                    - null
                  nullable: true
                  type: string
                  x-speakeasy-unknown-values: allow
                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:
      description: A context compaction marker with encrypted summary
      example:
        encrypted_content: enc_abc123...
        type: compaction
      properties:
        encrypted_content:
          type: string
        id:
          nullable: true
          type: string
        type:
          enum:
            - compaction
          type: string
      required:
        - type
        - encrypted_content
      type: object
    CompletedEvent:
      description: Event emitted when a response has completed successfully
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output:
            - content:
                - annotations: []
                  text: Hello! How can I help you?
                  type: output_text
              id: item-1
              role: assistant
              status: completed
              type: message
          parallel_tool_calls: true
          status: completed
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 10
        type: response.completed
      properties:
        response:
          $ref: '#/components/schemas/BaseResponsesResult'
        sequence_number:
          type: integer
        type:
          enum:
            - response.completed
          type: string
      required:
        - type
        - response
        - sequence_number
      type: object
    CompoundFilter:
      description: A compound filter that combines multiple comparison or compound filters
      example:
        filters:
          - key: author
            type: eq
            value: Alice
        type: and
      properties:
        filters:
          items:
            additionalProperties:
              nullable: true
            type: object
          type: array
        type:
          enum:
            - and
            - or
          type: string
          x-speakeasy-unknown-values: allow
      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
          x-speakeasy-unknown-values: allow
        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:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    ConflictResponseErrorData:
      description: Error data for ConflictResponse
      example:
        code: 409
        message: Resource conflict. Please try again later.
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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
      example: block
      type: string
      x-speakeasy-unknown-values: allow
    ContentFilterBuiltinAction:
      description: Action taken when the builtin filter triggers
      enum:
        - redact
        - block
        - flag
      example: block
      type: string
      x-speakeasy-unknown-values: allow
    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
      x-speakeasy-unknown-values: allow
    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
          nullable: true
          type: string
        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
    ContextCompressionEngine:
      description: The compression engine to use. Defaults to "middle-out".
      enum:
        - middle-out
      example: middle-out
      type: string
    ContextCompressionPlugin:
      example:
        enabled: true
        engine: middle-out
        id: context-compression
      properties:
        enabled:
          description: Set to false to disable the context-compression plugin for this request. Defaults to true.
          type: boolean
        engine:
          $ref: '#/components/schemas/ContextCompressionEngine'
        id:
          enum:
            - context-compression
          type: string
      required:
        - id
      type: object
    CostDetails:
      description: Breakdown of upstream inference costs
      example:
        upstream_inference_completions_cost: 0.0004
        upstream_inference_cost: null
        upstream_inference_prompt_cost: 0.0008
      nullable: true
      properties:
        upstream_inference_completions_cost:
          format: double
          type: number
        upstream_inference_cost:
          format: double
          nullable: true
          type: number
        upstream_inference_prompt_cost:
          format: double
          type: number
      required:
        - upstream_inference_prompt_cost
        - upstream_inference_completions_cost
      type: object
    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
          nullable: true
          type: array
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: in_progress
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 0
        type: response.created
      properties:
        response:
          $ref: '#/components/schemas/BaseResponsesResult'
        sequence_number:
          type: integer
        type:
          enum:
            - response.created
          type: string
      required:
        - type
        - response
        - sequence_number
      type: object
    CreateGuardrailRequest:
      example:
        allowed_models: null
        allowed_providers:
          - openai
          - anthropic
          - deepseek
        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
        ignored_models: null
        ignored_providers: null
        limit_usd: 50
        name: My New Guardrail
        reset_interval: monthly
      properties:
        allowed_models:
          description: Array of model identifiers (slug or canonical_slug accepted)
          example:
            - openai/gpt-5.2
            - anthropic/claude-4.5-opus-20251124
            - deepseek/deepseek-r1-0528:free
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        allowed_providers:
          description: List of allowed provider IDs
          example:
            - openai
            - anthropic
            - deepseek
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        content_filter_builtins:
          description: >-
            Builtin content filters to apply. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only.
          example:
            - action: block
              slug: regex-prompt-injection
          items:
            $ref: '#/components/schemas/ContentFilterBuiltinEntryInput'
          nullable: true
          type: array
        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'
          nullable: true
          type: array
        description:
          description: Description of the guardrail
          example: A guardrail for limiting API usage
          maxLength: 1000
          nullable: true
          type: string
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, 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
          nullable: true
          type: boolean
        enforce_zdr_anthropic:
          description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_google:
          description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_openai:
          description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        ignored_models:
          description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted)
          example:
            - openai/gpt-4o-mini
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        limit_usd:
          description: Spending limit in USD
          example: 50
          format: double
          nullable: true
          type: number
        name:
          description: Name for the new guardrail
          example: My New Guardrail
          maxLength: 200
          minLength: 1
          type: string
        reset_interval:
          $ref: '#/components/schemas/GuardrailInterval'
        workspace_id:
          description: The workspace to create the guardrail in. Defaults to the default workspace if not provided.
          example: 0df9e665-d932-5740-b2c7-b52af166bc11
          format: uuid
          type: string
      required:
        - name
      type: object
    CreateGuardrailResponse:
      example:
        data:
          allowed_models: null
          allowed_providers:
            - openai
            - anthropic
            - google
          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
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          limit_usd: 50
          name: My New Guardrail
          reset_interval: monthly
          updated_at: null
          workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/Guardrail'
            - description: The created guardrail
      required:
        - data
      type: object
    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
          nullable: true
          type: array
        config:
          additionalProperties:
            nullable: true
          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/ObservabilityFilterRulesConfig'
        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
          x-speakeasy-unknown-values: allow
        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
          nullable: true
          type: string
        default_provider_sort:
          description: Default provider sort preference (price, throughput, latency, exacto)
          example: price
          nullable: true
          type: string
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          nullable: true
          type: string
        description:
          description: Description of the workspace
          example: Production environment workspace
          maxLength: 500
          nullable: true
          type: string
        io_logging_api_key_ids:
          description: Optional array of API key IDs to filter I/O logging
          example: null
          items:
            type: integer
          nullable: true
          type: array
        io_logging_sampling_rate:
          description: Sampling rate for I/O logging (0.0001-1)
          example: 1
          format: double
          type: number
        is_data_discount_logging_enabled:
          description: Whether data discount logging is enabled
          example: true
          type: boolean
        is_observability_broadcast_enabled:
          description: Whether broadcast is enabled
          example: false
          type: boolean
        is_observability_io_logging_enabled:
          description: Whether private logging is enabled
          example: false
          type: boolean
        name:
          description: Name for the new workspace
          example: Production
          maxLength: 100
          minLength: 1
          type: string
        slug:
          description: URL-friendly slug (lowercase alphanumeric 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_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
                  x-speakeasy-unknown-values: allow
                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
    DatetimeServerTool:
      description: 'OpenRouter built-in server tool: returns the current date and time'
      example:
        parameters:
          timezone: America/New_York
        type: openrouter:datetime
      properties:
        parameters:
          $ref: '#/components/schemas/DatetimeServerToolConfig'
        type:
          enum:
            - openrouter:datetime
          type: string
      required:
        - type
      type: object
    DatetimeServerToolConfig:
      description: Configuration for the openrouter:datetime server tool
      example:
        timezone: America/New_York
      properties:
        timezone:
          description: IANA timezone name (e.g. "America/New_York"). Defaults to UTC.
          example: America/New_York
          type: string
      type: object
    DefaultParameters:
      additionalProperties: false
      description: Default parameters for this model
      example:
        frequency_penalty: 0
        presence_penalty: 0
        repetition_penalty: 1
        temperature: 0.7
        top_k: 0
        top_p: 0.9
      nullable: true
      properties:
        frequency_penalty:
          format: double
          nullable: true
          type: number
        presence_penalty:
          format: double
          nullable: true
          type: number
        repetition_penalty:
          format: double
          nullable: true
          type: number
        temperature:
          format: double
          nullable: true
          type: number
        top_k:
          nullable: true
          type: integer
        top_p:
          format: double
          nullable: true
          type: number
      type: object
    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
    DeleteWorkspaceResponse:
      example:
        deleted: true
      properties:
        deleted:
          const: true
          description: Confirmation that the workspace was deleted
          example: true
          type: boolean
      required:
        - deleted
      type: object
    DeprecatedRoute:
      deprecated: true
      description: >-
        **DEPRECATED** Use providers.sort.partition instead. Backwards-compatible alias for providers.sort.partition. Accepts legacy values: "fallback" (maps to "model"), "sort" (maps to "none").
      enum:
        - fallback
        - sort
        - null
      example: fallback
      nullable: true
      type: string
      x-fern-ignore: true
      x-speakeasy-deprecation-message: Use providers.sort.partition instead.
      x-speakeasy-ignore: true
      x-speakeasy-unknown-values: allow
    EasyInputMessage:
      example:
        content: What is the weather today?
        role: user
      properties:
        content:
          anyOf:
            - items:
                oneOf:
                  - $ref: '#/components/schemas/InputText'
                  - allOf:
                      - $ref: '#/components/schemas/InputImage'
                      - properties: {}
                        type: object
                    description: Image input content item
                    example:
                      detail: auto
                      image_url: https://example.com/image.jpg
                      type: input_image
                  - $ref: '#/components/schemas/InputFile'
                  - $ref: '#/components/schemas/InputAudio'
                  - $ref: '#/components/schemas/InputVideo'
              type: array
            - type: string
            - nullable: true
        phase:
          anyOf:
            - enum:
                - commentary
              type: string
            - enum:
                - final_answer
              type: string
            - nullable: true
          description: >-
            The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages.
          example: final_answer
        role:
          anyOf:
            - enum:
                - user
              type: string
            - enum:
                - system
              type: string
            - enum:
                - assistant
              type: string
            - enum:
                - developer
              type: string
        type:
          enum:
            - message
          type: string
      required:
        - role
      type: object
    EdgeNetworkTimeoutResponse:
      description: Infrastructure Timeout - Provider request timed out at edge network
      example:
        error:
          code: 524
          message: Request timed out. Please try again later.
      properties:
        error:
          $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    EdgeNetworkTimeoutResponseErrorData:
      description: Error data for EdgeNetworkTimeoutResponse
      example:
        code: 524
        message: Request timed out. Please try again later.
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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
      x-speakeasy-unknown-values: allow
    ErrorEvent:
      allOf:
        - $ref: '#/components/schemas/BaseErrorEvent'
        - properties: {}
          type: object
      description: Event emitted when an error occurs during streaming
      example:
        code: rate_limit_exceeded
        message: Rate limit exceeded. Please try again later.
        param: null
        sequence_number: 2
        type: error
    FailedEvent:
      description: Event emitted when a response has failed
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: failed
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 3
        type: response.failed
      properties:
        response:
          $ref: '#/components/schemas/BaseResponsesResult'
        sequence_number:
          type: integer
        type:
          enum:
            - response.failed
          type: string
      required:
        - type
        - response
        - sequence_number
      type: object
    FileCitation:
      example:
        file_id: file-abc123
        filename: research_paper.pdf
        index: 0
        type: file_citation
      properties:
        file_id:
          type: string
        filename:
          type: string
        index:
          type: integer
        type:
          enum:
            - file_citation
          type: string
      required:
        - type
        - file_id
        - filename
        - index
      type: object
    FileParserPlugin:
      example:
        enabled: true
        id: file-parser
        pdf:
          engine: cloudflare-ai
      properties:
        enabled:
          description: Set to false to disable the file-parser plugin for this request. Defaults to true.
          type: boolean
        id:
          enum:
            - file-parser
          type: string
        pdf:
          $ref: '#/components/schemas/PDFParserOptions'
      required:
        - id
      type: object
    FilePath:
      example:
        file_id: file-xyz789
        index: 0
        type: file_path
      properties:
        file_id:
          type: string
        index:
          type: integer
        type:
          enum:
            - file_path
          type: string
      required:
        - type
        - file_id
        - index
      type: object
    FileSearchServerTool:
      description: File search tool configuration
      example:
        type: file_search
        vector_store_ids:
          - vs_abc123
      properties:
        filters:
          anyOf:
            - properties:
                key:
                  type: string
                type:
                  enum:
                    - eq
                    - ne
                    - gt
                    - gte
                    - lt
                    - lte
                  type: string
                  x-speakeasy-unknown-values: allow
                value:
                  anyOf:
                    - type: string
                    - format: double
                      type: number
                    - type: boolean
                    - items:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                      type: array
              required:
                - key
                - type
                - value
              type: object
            - $ref: '#/components/schemas/CompoundFilter'
            - nullable: true
        max_num_results:
          type: integer
        ranking_options:
          properties:
            ranker:
              enum:
                - auto
                - default-2024-11-15
              type: string
              x-speakeasy-unknown-values: allow
            score_threshold:
              format: double
              type: number
          type: object
        type:
          enum:
            - file_search
          type: string
        vector_store_ids:
          items:
            type: string
          type: array
      required:
        - type
        - vector_store_ids
      type: object
    ForbiddenResponse:
      description: Forbidden - Authentication successful but insufficient permissions
      example:
        error:
          code: 403
          message: Only management keys can perform this operation
      properties:
        error:
          $ref: '#/components/schemas/ForbiddenResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    ForbiddenResponseErrorData:
      description: Error data for ForbiddenResponse
      example:
        code: 403
        message: Only management keys can perform this operation
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    FormatJsonObjectConfig:
      description: JSON object response format
      example:
        type: json_object
      properties:
        type:
          enum:
            - json_object
          type: string
      required:
        - type
      type: object
    FormatJsonSchemaConfig:
      description: JSON schema constrained response format
      example:
        description: User information schema
        name: user_info
        schema:
          properties:
            age:
              type: number
            name:
              type: string
          required:
            - name
          type: object
        type: json_schema
      properties:
        description:
          type: string
        name:
          type: string
        schema:
          additionalProperties:
            nullable: true
          type: object
        strict:
          nullable: true
          type: boolean
        type:
          enum:
            - json_schema
          type: string
      required:
        - type
        - name
        - schema
      type: object
    Formats:
      anyOf:
        - $ref: '#/components/schemas/FormatTextConfig'
        - $ref: '#/components/schemas/FormatJsonObjectConfig'
        - $ref: '#/components/schemas/FormatJsonSchemaConfig'
      description: Text response format configuration
      example:
        type: text
    FormatTextConfig:
      description: Plain text response format
      example:
        type: text
      properties:
        type:
          enum:
            - text
          type: string
      required:
        - type
      type: object
    FrameImage:
      allOf:
        - $ref: '#/components/schemas/ContentPartImage'
        - properties:
            frame_type:
              description: Whether this image represents the first or last frame of the video
              enum:
                - first_frame
                - last_frame
              example: first_frame
              type: string
              x-speakeasy-unknown-values: allow
          required:
            - frame_type
          type: object
      example:
        image_url:
          url: https://example.com/image.png
        type: image_url
    FunctionCallArgsDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseFunctionCallArgsDeltaEvent'
        - properties: {}
          type: object
      description: Event emitted when function call arguments are being streamed
      example:
        delta: '{"city": "..."}'
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.function_call_arguments.delta
    FunctionCallArgsDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseFunctionCallArgsDoneEvent'
        - properties: {}
          type: object
      description: Event emitted when function call arguments streaming is complete
      example:
        arguments: '{"city": "San Francisco", "units": "celsius"}'
        item_id: item-1
        name: get_weather
        output_index: 0
        sequence_number: 6
        type: response.function_call_arguments.done
    FunctionCallItem:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponseFunctionToolCall'
        - properties: {}
          required:
            - id
          type: object
      description: A function call initiated by the model
      example:
        arguments: '{"location":"San Francisco"}'
        call_id: call-abc123
        id: call-abc123
        name: get_weather
        status: completed
        type: function_call
    FunctionCallOutputItem:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponseFunctionToolCallOutput'
        - properties:
            output:
              anyOf:
                - type: string
                - items:
                    oneOf:
                      - $ref: '#/components/schemas/InputText'
                      - allOf:
                          - $ref: '#/components/schemas/InputImage'
                          - properties: {}
                            type: object
                        description: Image input content item
                        example:
                          detail: auto
                          image_url: https://example.com/image.jpg
                          type: input_image
                      - $ref: '#/components/schemas/InputFile'
                  type: array
          type: object
      description: The output from a function call execution
      example:
        call_id: call-abc123
        id: output-abc123
        output: '{"temperature":72,"conditions":"sunny"}'
        status: completed
        type: function_call_output
    FunctionTool:
      description: Function tool definition
      example:
        description: Get the current weather in a location
        name: get_weather
        parameters:
          properties:
            location:
              description: The city and state
              type: string
            unit:
              enum:
                - celsius
                - fahrenheit
              type: string
              x-speakeasy-unknown-values: allow
          required:
            - location
          type: object
        type: function
      properties:
        description:
          nullable: true
          type: string
        name:
          type: string
        parameters:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        strict:
          nullable: true
          type: boolean
        type:
          enum:
            - function
          type: string
      required:
        - type
        - name
        - parameters
      type: object
    FusionAnalysisResult:
      description: Structured analysis produced by the fusion judge 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 judge 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 judge starts producing the structured analysis.
      example:
        item_id: st_fusion_abc
        judge_model: openai/gpt-5
        output_index: 0
        sequence_number: 25
        type: response.fusion_call.analysis.in_progress
      properties:
        item_id:
          type: string
        judge_model:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.fusion_call.analysis.in_progress
          type: string
      required:
        - type
        - 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 judge 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 judge 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 judge 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
        tools:
          description: >-
            Server tools available to panelist and judge 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
                    - nullable: true
                    - items:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                          - type: boolean
                          - nullable: true
                          - nullable: true
                      type: array
                    - additionalProperties:
                        anyOf:
                          - type: string
                          - format: double
                            type: number
                          - type: boolean
                          - nullable: true
                          - nullable: true
                      type: object
                    - nullable: true
                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 a judge 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 a judge 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
        max_completion_tokens:
          description: >-
            Maximum number of output tokens (including reasoning tokens) each panelist and the judge 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, the provider's default applies.
          example: 16384
          type: integer
        max_tool_calls:
          description: >-
            Maximum number of tool-calling steps each panelist (analysis model) and the judge 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 judge 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 judge 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 judge inner calls.
              enum:
                - xhigh
                - high
                - medium
                - low
                - minimal
                - none
              type: string
              x-speakeasy-unknown-values: allow
            max_tokens:
              description: >-
                Maximum number of reasoning tokens each panelist and judge model may use. Helps bound cost when models allocate too much budget to chain-of-thought.
              type: integer
          type: object
        temperature:
          description: >-
            Sampling temperature forwarded to panelist and judge inner calls. When omitted, the provider's default applies.
          example: 0.7
          format: double
          type: number
        tools:
          description: >-
            Server tools available to panelist and judge 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:
                  nullable: true
                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
    GenerationContentData:
      description: Stored prompt and completion content
      example:
        input:
          messages:
            - content: What is the meaning of life?
              role: user
        output:
          completion: The meaning of life is a philosophical question...
          reasoning: null
      properties:
        input:
          anyOf:
            - properties:
                prompt:
                  example: What is the meaning of life?
                  type: string
              required:
                - prompt
              type: object
            - properties:
                messages:
                  example:
                    - content: What is the meaning of life?
                      role: user
                  items:
                    nullable: true
                  type: array
              required:
                - messages
              type: object
          description: The input to the generation — either a prompt string or an array of messages
        output:
          description: The output from the generation
          properties:
            completion:
              description: The completion output
              example: The meaning of life is a philosophical question...
              nullable: true
              type: string
            reasoning:
              description: Reasoning/thinking output, if any
              example: null
              nullable: true
              type: string
          required:
            - reasoning
            - completion
          type: object
      required:
        - input
        - output
      type: object
    GenerationContentResponse:
      description: Stored prompt and completion content for a generation
      example:
        data:
          input:
            messages:
              - content: What is the meaning of life?
                role: user
          output:
            completion: The meaning of life is a philosophical question...
            reasoning: null
      properties:
        data:
          $ref: '#/components/schemas/GenerationContentData'
      required:
        - data
      type: object
    GenerationResponse:
      description: Generation response
      example:
        data:
          api_type: completions
          app_id: 12345
          cache_discount: null
          cancelled: false
          created_at: '2024-07-15T23:33:19.433273+00:00'
          external_user: user-123
          finish_reason: stop
          generation_time: 1200
          http_referer: https://openrouter.ai/
          id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
          is_byok: false
          latency: 1250
          model: sao10k/l3-stheno-8b
          moderation_latency: 50
          native_finish_reason: stop
          native_tokens_cached: 3
          native_tokens_completion: 25
          native_tokens_completion_images: 0
          native_tokens_prompt: 10
          native_tokens_reasoning: 5
          num_input_audio_prompt: 0
          num_media_completion: 0
          num_media_prompt: 1
          num_search_results: 5
          origin: https://openrouter.ai/
          provider_name: Infermatic
          provider_responses: null
          request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
          router: openrouter/auto
          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
      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
              nullable: true
              type: string
              x-speakeasy-unknown-values: allow
            app_id:
              description: ID of the app that made the request
              example: 12345
              nullable: true
              type: integer
            cache_discount:
              description: Discount applied due to caching
              example: 0.0002
              format: double
              nullable: true
              type: number
            cancelled:
              description: Whether the generation was cancelled
              example: false
              nullable: true
              type: boolean
            created_at:
              description: ISO 8601 timestamp of when the generation was created
              example: '2024-07-15T23:33:19.433273+00:00'
              type: string
            data_region:
              description: The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise.
              enum:
                - global
                - europe
              example: global
              type: string
              x-speakeasy-unknown-values: allow
            external_user:
              description: External user identifier
              example: user-123
              nullable: true
              type: string
            finish_reason:
              description: Reason the generation finished
              example: stop
              nullable: true
              type: string
            generation_time:
              description: Time taken for generation in milliseconds
              example: 1200
              format: double
              nullable: true
              type: number
            http_referer:
              description: Referer header from the request
              nullable: true
              type: string
            id:
              description: Unique identifier for the generation
              example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
              type: string
            is_byok:
              description: Whether this used bring-your-own-key
              example: false
              type: boolean
            latency:
              description: Total latency in milliseconds
              example: 1250
              format: double
              nullable: true
              type: number
            model:
              description: Model used for the generation
              example: sao10k/l3-stheno-8b
              type: string
            moderation_latency:
              description: Moderation latency in milliseconds
              example: 50
              format: double
              nullable: true
              type: number
            native_finish_reason:
              description: Native finish reason as reported by provider
              example: stop
              nullable: true
              type: string
            native_tokens_cached:
              description: Native cached tokens as reported by provider
              example: 3
              nullable: true
              type: integer
            native_tokens_completion:
              description: Native completion tokens as reported by provider
              example: 25
              nullable: true
              type: integer
            native_tokens_completion_images:
              description: Native completion image tokens as reported by provider
              example: 0
              nullable: true
              type: integer
            native_tokens_prompt:
              description: Native prompt tokens as reported by provider
              example: 10
              nullable: true
              type: integer
            native_tokens_reasoning:
              description: Native reasoning tokens as reported by provider
              example: 5
              nullable: true
              type: integer
            num_fetches:
              description: Number of web fetches performed
              example: 0
              nullable: true
              type: integer
            num_input_audio_prompt:
              description: Number of audio inputs in the prompt
              example: 0
              nullable: true
              type: integer
            num_media_completion:
              description: Number of media items in the completion
              example: 0
              nullable: true
              type: integer
            num_media_prompt:
              description: Number of media items in the prompt
              example: 1
              nullable: true
              type: integer
            num_search_results:
              description: Number of search results included
              example: 5
              nullable: true
              type: integer
            origin:
              description: Origin URL of the request
              example: https://openrouter.ai/
              type: string
            preset_id:
              description: ID of the preset used for this generation, null if no preset was used
              example: a9e8d400-592a-494f-908c-375efa66cafd
              nullable: true
              type: string
            provider_name:
              description: Name of the provider that served the request
              example: Infermatic
              nullable: true
              type: string
            provider_responses:
              description: List of provider responses for this generation, including fallback attempts
              items:
                $ref: '#/components/schemas/ProviderResponse'
              nullable: true
              type: array
            request_id:
              description: Unique identifier grouping all generations from a single API request
              example: req-1727282430-aBcDeFgHiJkLmNoPqRsT
              nullable: true
              type: string
            response_cache_source_id:
              description: If this generation was served from response cache, contains the original generation ID. Null otherwise.
              nullable: true
              type: string
            router:
              description: Router used for the request (e.g., openrouter/auto)
              example: openrouter/auto
              nullable: true
              type: string
            service_tier:
              description: Service tier the upstream provider reported running this request on, or null if it did not report one.
              example: priority
              nullable: true
              type: string
            session_id:
              description: Session identifier grouping multiple generations in the same session
              nullable: true
              type: string
            streamed:
              description: Whether the response was streamed
              example: true
              nullable: true
              type: boolean
            tokens_completion:
              description: Number of tokens in the completion
              example: 25
              nullable: true
              type: integer
            tokens_prompt:
              description: Number of tokens in the prompt
              example: 10
              nullable: true
              type: integer
            total_cost:
              description: Total cost of the generation in USD
              example: 0.0015
              format: double
              type: number
            upstream_id:
              description: Upstream provider's identifier for this generation
              example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
              nullable: true
              type: string
            upstream_inference_cost:
              description: Cost charged by the upstream provider
              example: 0.0012
              format: double
              nullable: true
              type: number
            usage:
              description: Usage amount in USD
              example: 0.0015
              format: double
              type: number
            user_agent:
              description: User-Agent header from the request
              nullable: true
              type: string
            web_search_engine:
              description: The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel)
              example: exa
              nullable: true
              type: string
          required:
            - id
            - upstream_id
            - total_cost
            - cache_discount
            - upstream_inference_cost
            - created_at
            - model
            - app_id
            - streamed
            - cancelled
            - provider_name
            - latency
            - moderation_latency
            - generation_time
            - finish_reason
            - 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
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          limit_usd: 100
          name: Production Guardrail
          reset_interval: monthly
          updated_at: '2025-08-24T15:45:00Z'
          workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/Guardrail'
            - description: The guardrail
      required:
        - data
      type: object
    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_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:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    GoneResponseErrorData:
      description: Error data for GoneResponse
      example:
        code: 410
        message: >-
          The Coinbase APIs used by this endpoint have been deprecated, so the Coinbase Commerce credits API has been removed. Use the web credits purchase flow instead.
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    Guardrail:
      example:
        allowed_models: null
        allowed_providers:
          - openai
          - anthropic
          - google
        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
        id: 550e8400-e29b-41d4-a716-446655440000
        ignored_models: null
        ignored_providers: null
        limit_usd: 100
        name: Production Guardrail
        reset_interval: monthly
        updated_at: '2025-08-24T15:45:00Z'
        workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
      properties:
        allowed_models:
          description: Array of model canonical_slugs (immutable identifiers)
          example:
            - openai/gpt-5.2-20251211
            - anthropic/claude-4.5-opus-20251124
            - deepseek/deepseek-r1-0528:free
          items:
            type: string
          nullable: true
          type: array
        allowed_providers:
          description: List of allowed provider IDs
          example:
            - openai
            - anthropic
            - google
          items:
            type: string
          nullable: true
          type: array
        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'
          nullable: true
          type: array
        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'
          nullable: true
          type: array
        created_at:
          description: ISO 8601 timestamp of when the guardrail was created
          example: '2025-08-24T10:30:00Z'
          type: string
        description:
          description: Description of the guardrail
          example: Guardrail for production environment
          nullable: true
          type: string
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, 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
          nullable: true
          type: boolean
        enforce_zdr_anthropic:
          description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_google:
          description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_openai:
          description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided.
          example: false
          nullable: true
          type: boolean
        id:
          description: Unique identifier for the guardrail
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        ignored_models:
          description: Array of model canonical_slugs to exclude from routing
          example:
            - openai/gpt-4o-mini-2024-07-18
          items:
            type: string
          nullable: true
          type: array
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          nullable: true
          type: array
        limit_usd:
          description: Spending limit in USD
          example: 100
          format: double
          nullable: true
          type: number
        name:
          description: Name of the guardrail
          example: Production Guardrail
          type: string
        reset_interval:
          $ref: '#/components/schemas/GuardrailInterval'
        updated_at:
          description: ISO 8601 timestamp of when the guardrail was last updated
          example: '2025-08-24T15:45:00Z'
          nullable: true
          type: string
        workspace_id:
          description: The workspace ID this guardrail belongs to.
          example: 0df9e665-d932-5740-b2c7-b52af166bc11
          type: string
      required:
        - id
        - name
        - created_at
        - workspace_id
      type: object
    GuardrailInterval:
      description: Interval at which the limit resets (daily, weekly, monthly)
      enum:
        - daily
        - weekly
        - monthly
        - null
      example: monthly
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ImageConfig:
      additionalProperties:
        anyOf:
          - type: string
          - format: double
            type: number
          - items:
              nullable: true
            type: array
      description: >-
        Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details.
      example:
        aspect_ratio: '16:9'
        quality: high
      type: object
    ImageGenCallCompletedEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted'
        - properties: {}
          type: object
      description: Image generation call completed
      example:
        item_id: call-123
        output_index: 0
        sequence_number: 4
        type: response.image_generation_call.completed
    ImageGenCallGeneratingEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating'
        - properties: {}
          type: object
      description: Image generation call is generating
      example:
        item_id: call-123
        output_index: 0
        sequence_number: 2
        type: response.image_generation_call.generating
    ImageGenCallInProgressEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress'
        - properties: {}
          type: object
      description: Image generation call in progress
      example:
        item_id: call-123
        output_index: 0
        sequence_number: 1
        type: response.image_generation_call.in_progress
    ImageGenCallPartialImageEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage'
        - properties: {}
          type: object
      description: Image generation call with partial image
      example:
        item_id: call-123
        output_index: 0
        partial_image_b64: base64encodedimage...
        partial_image_index: 0
        sequence_number: 3
        type: response.image_generation_call.partial_image
    ImageGenerationServerTool:
      description: Image generation tool configuration
      example:
        quality: high
        type: image_generation
      properties:
        background:
          enum:
            - transparent
            - opaque
            - auto
          type: string
          x-speakeasy-unknown-values: allow
        input_fidelity:
          enum:
            - high
            - low
            - null
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        input_image_mask:
          properties:
            file_id:
              type: string
            image_url:
              type: string
          type: object
        model:
          enum:
            - gpt-image-1
            - gpt-image-1-mini
          type: string
          x-speakeasy-unknown-values: allow
        moderation:
          enum:
            - auto
            - low
          type: string
          x-speakeasy-unknown-values: allow
        output_compression:
          type: integer
        output_format:
          enum:
            - png
            - webp
            - jpeg
          type: string
          x-speakeasy-unknown-values: allow
        partial_images:
          type: integer
        quality:
          enum:
            - low
            - medium
            - high
            - auto
          type: string
          x-speakeasy-unknown-values: allow
        size:
          enum:
            - 1024x1024
            - 1024x1536
            - 1536x1024
            - auto
          type: string
          x-speakeasy-unknown-values: allow
        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:
              nullable: true
            type: array
      description: >-
        Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio, quality, size, background, output_format, output_compression, moderation, etc.) plus a model field.
      example:
        aspect_ratio: '16:9'
        model: openai/gpt-5-image
        quality: high
      properties:
        model:
          description: Which image generation model to use (e.g. "openai/gpt-5-image"). Defaults to "openai/gpt-5-image".
          example: openai/gpt-5-image
          type: string
      type: object
    ImageGenerationStatus:
      enum:
        - in_progress
        - completed
        - generating
        - failed
      example: completed
      type: string
      x-speakeasy-unknown-values: allow
    IncompleteDetails:
      example:
        reason: max_output_tokens
      nullable: true
      properties:
        reason:
          enum:
            - max_output_tokens
            - content_filter
          type: string
          x-speakeasy-unknown-values: allow
      type: object
    IncompleteEvent:
      description: Event emitted when a response is incomplete
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: incomplete
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 5
        type: response.incomplete
      properties:
        response:
          $ref: '#/components/schemas/BaseResponsesResult'
        sequence_number:
          type: integer
        type:
          enum:
            - response.incomplete
          type: string
      required:
        - type
        - response
        - sequence_number
      type: object
    InProgressEvent:
      description: Event emitted when a response is in progress
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: in_progress
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 1
        type: response.in_progress
      properties:
        response:
          $ref: '#/components/schemas/BaseResponsesResult'
        sequence_number:
          type: integer
        type:
          enum:
            - response.in_progress
          type: string
      required:
        - type
        - response
        - sequence_number
      type: object
    InputAudio:
      description: Audio input content item
      example:
        input_audio:
          data: SGVsbG8gV29ybGQ=
          format: mp3
        type: input_audio
      properties:
        input_audio:
          properties:
            data:
              type: string
            format:
              enum:
                - mp3
                - wav
              type: string
              x-speakeasy-unknown-values: allow
          required:
            - data
            - format
          type: object
        type:
          enum:
            - input_audio
          type: string
      required:
        - type
        - input_audio
      type: object
    InputFile:
      description: File input content item
      example:
        file_id: file-abc123
        filename: document.pdf
        type: input_file
      properties:
        file_data:
          type: string
        file_id:
          nullable: true
          type: string
        file_url:
          type: string
        filename:
          type: string
        type:
          enum:
            - input_file
          type: string
      required:
        - type
      type: object
    InputImage:
      description: Image input content item
      example:
        detail: auto
        image_url: https://example.com/image.jpg
        type: input_image
      properties:
        detail:
          enum:
            - auto
            - high
            - low
            - original
          type: string
          x-speakeasy-unknown-values: allow
        image_url:
          nullable: true
          type: string
        type:
          enum:
            - input_image
          type: string
      required:
        - type
        - detail
      type: object
    InputMessageItem:
      example:
        content:
          - text: Hello, how are you?
            type: input_text
        id: msg-abc123
        role: user
        type: message
      properties:
        content:
          items:
            oneOf:
              - $ref: '#/components/schemas/InputText'
              - allOf:
                  - $ref: '#/components/schemas/InputImage'
                  - properties: {}
                    type: object
                description: Image input content item
                example:
                  detail: auto
                  image_url: https://example.com/image.jpg
                  type: input_image
              - $ref: '#/components/schemas/InputFile'
              - $ref: '#/components/schemas/InputAudio'
              - $ref: '#/components/schemas/InputVideo'
          nullable: true
          type: array
        id:
          type: string
        role:
          anyOf:
            - enum:
                - user
              type: string
            - enum:
                - system
              type: string
            - enum:
                - developer
              type: string
        type:
          enum:
            - message
          type: string
      required:
        - role
      type: object
    InputModality:
      enum:
        - text
        - image
        - file
        - audio
        - video
      example: text
      type: string
      x-speakeasy-unknown-values: allow
    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
                          - nullable: true
                    type: object
                description: An output message item
                example:
                  content:
                    - annotations: []
                      text: Hello! How can I help you?
                      type: output_text
                  id: msg-123
                  role: assistant
                  status: completed
                  type: message
              - allOf:
                  - $ref: '#/components/schemas/OutputReasoningItem'
                  - properties:
                      summary:
                        items:
                          $ref: '#/components/schemas/ReasoningSummaryText'
                        nullable: true
                        type: array
                    type: object
                description: An output item containing reasoning
                example:
                  content:
                    - text: First, we analyze the problem...
                      type: reasoning_text
                  format: anthropic-claude-v1
                  id: reasoning-123
                  signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
                  status: completed
                  summary:
                    - text: Analyzed the problem and found the optimal solution.
                      type: summary_text
                  type: reasoning
              - $ref: '#/components/schemas/OutputFunctionCallItem'
              - $ref: '#/components/schemas/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/OutputAdvisorServerToolItem'
              - $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/ItemReferenceItem'
          type: array
      description: Input for a response request - can be a string or array of items
      example:
        - content: What is the weather today?
          role: user
    InputText:
      description: Text input content item
      example:
        text: Hello, how can I help you?
        type: input_text
      properties:
        text:
          type: string
        type:
          enum:
            - input_text
          type: string
      required:
        - type
        - text
      type: object
    InputVideo:
      description: Video input content item
      example:
        type: input_video
        video_url: https://example.com/video.mp4
      properties:
        type:
          enum:
            - input_video
          type: string
        video_url:
          description: A base64 data URL or remote URL that resolves to a video file
          type: string
      required:
        - type
        - video_url
      type: object
    InstructType:
      description: Instruction format type
      enum:
        - none
        - airoboros
        - alpaca
        - alpaca-modif
        - chatml
        - claude
        - code-llama
        - gemma
        - llama2
        - llama3
        - mistral
        - nemotron
        - neural
        - openchat
        - phi3
        - rwkv
        - vicuna
        - zephyr
        - deepseek-r1
        - deepseek-v3.1
        - qwq
        - qwen3
        - null
      example: chatml
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    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:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    InternalServerResponseErrorData:
      description: Error data for InternalServerResponse
      example:
        code: 500
        message: Internal Server Error
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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
          nullable: true
          type: string
        created_at:
          description: ISO 8601 timestamp of when the assignment was created
          example: '2025-08-24T10:30:00Z'
          type: string
        guardrail_id:
          description: ID of the guardrail
          example: 550e8400-e29b-41d4-a716-446655440001
          format: uuid
          type: string
        id:
          description: Unique identifier for the assignment
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        key_hash:
          description: Hash of the assigned API key
          example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
          type: string
        key_label:
          description: Label of the API key
          example: prod-key
          type: string
        key_name:
          description: Name of the API key
          example: Production Key
          type: string
      required:
        - id
        - key_hash
        - guardrail_id
        - key_name
        - key_label
        - assigned_by
        - created_at
      type: object
    Legacy_ChatContentVideo:
      deprecated: true
      description: Video input content part (legacy format - deprecated)
      example:
        type: input_video
        video_url:
          url: https://example.com/video.mp4
      properties:
        type:
          enum:
            - input_video
          type: string
        video_url:
          $ref: '#/components/schemas/ChatContentVideoInput'
      required:
        - type
        - video_url
      type: object
    Legacy_WebSearchServerTool:
      description: Web search tool configuration
      example:
        engine: auto
        filters:
          allowed_domains:
            - example.com
        type: web_search
      properties:
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        filters:
          $ref: '#/components/schemas/WebSearchDomainFilter'
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchContextSizeEnum'
        type:
          enum:
            - web_search
          type: string
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocation'
      required:
        - type
      type: object
    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_name: GPT-4
            name: 'OpenAI: GPT-4'
            pricing:
              completion: '0.00006'
              image: '0'
              prompt: '0.00003'
              request: '0'
            provider_name: OpenAI
            quantization: fp16
            status: default
            supported_parameters:
              - temperature
              - top_p
              - max_tokens
              - frequency_penalty
              - presence_penalty
            supports_implicit_caching: true
            tag: openai
            throughput_last_30m:
              p50: 45.2
              p75: 38.5
              p90: 28.3
              p99: 15.1
            uptime_last_1d: 99.8
            uptime_last_30m: 99.5
            uptime_last_5m: 100
        id: openai/gpt-4
        name: GPT-4
      properties:
        architecture:
          allOf:
            - $ref: '#/components/schemas/ModelArchitecture'
            - example:
                instruct_type: chatml
                modality: text
                tokenizer: GPT
              properties:
                input_modalities:
                  description: Supported input modalities
                  items:
                    $ref: '#/components/schemas/InputModality'
                  type: array
                instruct_type:
                  $ref: '#/components/schemas/InstructType'
                modality:
                  description: Primary modality of the model
                  example: text
                  nullable: true
                  type: string
                output_modalities:
                  description: Supported output modalities
                  items:
                    $ref: '#/components/schemas/OutputModality'
                  type: array
                tokenizer:
                  allOf:
                    - $ref: '#/components/schemas/ModelGroup'
                    - nullable: true
              required:
                - tokenizer
                - instruct_type
                - modality
                - input_modalities
                - output_modalities
        created:
          description: Unix timestamp of when the model was created
          example: 1692901234
          type: integer
        description:
          description: Description of the model
          example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
          type: string
        endpoints:
          description: List of available endpoints for this model
          items:
            $ref: '#/components/schemas/PublicEndpoint'
          type: array
        id:
          description: Unique identifier for the model
          example: openai/gpt-4
          type: string
        name:
          description: Display name of the model
          example: GPT-4
          type: string
      required:
        - id
        - name
        - created
        - description
        - architecture
        - endpoints
      type: object
    ListGuardrailsResponse:
      example:
        data:
          - allowed_models: null
            allowed_providers:
              - openai
              - anthropic
              - google
            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
            id: 550e8400-e29b-41d4-a716-446655440000
            ignored_models: null
            ignored_providers: null
            limit_usd: 100
            name: Production Guardrail
            reset_interval: monthly
            updated_at: '2025-08-24T15:45:00Z'
            workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
        total_count: 1
      properties:
        data:
          description: List of guardrails
          items:
            $ref: '#/components/schemas/Guardrail'
          type: array
        total_count:
          description: Total number of guardrails
          example: 25
          type: integer
      required:
        - data
        - total_count
      type: object
    ListKeyAssignmentsResponse:
      example:
        data:
          - assigned_by: user_abc123
            created_at: '2025-08-24T10:30:00Z'
            guardrail_id: 550e8400-e29b-41d4-a716-446655440001
            id: 550e8400-e29b-41d4-a716-446655440000
            key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
            key_label: prod-key
            key_name: Production Key
        total_count: 1
      properties:
        data:
          description: List of key assignments
          items:
            $ref: '#/components/schemas/KeyAssignment'
          type: array
        total_count:
          description: Total number of key assignments for this guardrail
          example: 25
          type: integer
      required:
        - data
        - total_count
      type: object
    ListMemberAssignmentsResponse:
      example:
        data:
          - assigned_by: user_abc123
            created_at: '2025-08-24T10:30:00Z'
            guardrail_id: 550e8400-e29b-41d4-a716-446655440001
            id: 550e8400-e29b-41d4-a716-446655440000
            organization_id: org_xyz789
            user_id: user_abc123
        total_count: 1
      properties:
        data:
          description: List of member assignments
          items:
            $ref: '#/components/schemas/MemberAssignment'
          type: array
        total_count:
          description: Total number of member assignments
          example: 10
          type: integer
      required:
        - data
        - total_count
      type: object
    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
    ListWorkspacesResponse:
      example:
        data:
          - created_at: '2025-08-24T10:30:00Z'
            created_by: user_abc123
            default_image_model: openai/dall-e-3
            default_provider_sort: price
            default_text_model: openai/gpt-4o
            description: Production environment workspace
            id: 550e8400-e29b-41d4-a716-446655440000
            io_logging_api_key_ids: null
            io_logging_sampling_rate: 1
            is_data_discount_logging_enabled: true
            is_observability_broadcast_enabled: false
            is_observability_io_logging_enabled: false
            name: Production
            slug: production
            updated_at: '2025-08-24T15:45:00Z'
        total_count: 1
      properties:
        data:
          description: List of workspaces
          items:
            $ref: '#/components/schemas/Workspace'
          type: array
        total_count:
          description: Total number of workspaces
          example: 5
          type: integer
      required:
        - data
        - total_count
      type: object
    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:
              nullable: true
              type: integer
            type:
              enum:
                - exec
              type: string
            user:
              nullable: true
              type: string
            working_directory:
              nullable: true
              type: string
          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:
          allOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - nullable: true
        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:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        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:
          nullable: true
          type: string
        id:
          type: string
        name:
          type: string
        output:
          nullable: true
          type: string
        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:
          nullable: true
          type: string
        id:
          type: string
        server_label:
          type: string
        tools:
          items:
            properties:
              annotations:
                nullable: true
              description:
                nullable: true
                type: string
              input_schema:
                additionalProperties:
                  nullable: true
                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
            - nullable: true
        authorization:
          type: string
        connector_id:
          enum:
            - connector_dropbox
            - connector_gmail
            - connector_googlecalendar
            - connector_googledrive
            - connector_microsoftteams
            - connector_outlookcalendar
            - connector_outlookemail
            - connector_sharepoint
          type: string
          x-speakeasy-unknown-values: allow
        headers:
          additionalProperties:
            type: string
          nullable: true
          type: object
        require_approval:
          anyOf:
            - properties:
                always:
                  properties:
                    tool_names:
                      items:
                        type: string
                      type: array
                  type: object
                never:
                  properties:
                    tool_names:
                      items:
                        type: string
                      type: array
                  type: object
              type: object
            - enum:
                - always
              type: string
            - enum:
                - never
              type: string
            - nullable: true
        server_description:
          type: string
        server_label:
          type: string
        server_url:
          type: string
        type:
          enum:
            - mcp
          type: string
      required:
        - type
        - server_label
      type: object
    MemberAssignment:
      example:
        assigned_by: user_abc123
        created_at: '2025-08-24T10:30:00Z'
        guardrail_id: 550e8400-e29b-41d4-a716-446655440001
        id: 550e8400-e29b-41d4-a716-446655440000
        organization_id: org_xyz789
        user_id: user_abc123
      properties:
        assigned_by:
          description: User ID of who made the assignment
          example: user_abc123
          nullable: true
          type: string
        created_at:
          description: ISO 8601 timestamp of when the assignment was created
          example: '2025-08-24T10:30:00Z'
          type: string
        guardrail_id:
          description: ID of the guardrail
          example: 550e8400-e29b-41d4-a716-446655440001
          format: uuid
          type: string
        id:
          description: Unique identifier for the assignment
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        organization_id:
          description: Organization ID
          example: org_xyz789
          type: string
        user_id:
          description: Clerk user ID of the assigned member
          example: user_abc123
          type: string
      required:
        - id
        - user_id
        - organization_id
        - guardrail_id
        - assigned_by
        - created_at
      type: object
    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:
            nullable: true
          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:
                  nullable: true
                  type: string
                type:
                  enum:
                    - compaction_delta
                  type: string
              required:
                - type
                - content
              type: object
        index:
          type: integer
        type:
          enum:
            - content_block_delta
          type: string
      required:
        - type
        - index
        - delta
      type: object
    MessagesContentBlockStartEvent:
      description: Event sent when a new content block starts
      example:
        content_block:
          text: ''
          type: text
        index: 0
        type: content_block_start
      properties:
        content_block:
          anyOf:
            - $ref: '#/components/schemas/AnthropicTextBlock'
            - $ref: '#/components/schemas/AnthropicToolUseBlock'
            - $ref: '#/components/schemas/AnthropicThinkingBlock'
            - $ref: '#/components/schemas/AnthropicRedactedThinkingBlock'
            - $ref: '#/components/schemas/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:
                  nullable: true
                  type: string
                type:
                  enum:
                    - compaction
                  type: string
              required:
                - type
                - content
              type: object
        index:
          type: integer
        type:
          enum:
            - content_block_start
          type: string
      required:
        - type
        - index
        - content_block
      type: object
    MessagesContentBlockStopEvent:
      description: Event sent when a content block is complete
      example:
        index: 0
        type: content_block_stop
      properties:
        index:
          type: integer
        type:
          enum:
            - content_block_stop
          type: string
      required:
        - type
        - index
      type: object
    MessagesDeltaEvent:
      description: Event sent when the message metadata changes (e.g., stop_reason)
      example:
        delta:
          stop_details: null
          stop_reason: end_turn
          stop_sequence: null
        type: message_delta
        usage:
          output_tokens: 15
      properties:
        delta:
          properties:
            container:
              $ref: '#/components/schemas/AnthropicContainer'
            stop_details:
              $ref: '#/components/schemas/AnthropicRefusalStopDetails'
            stop_reason:
              $ref: '#/components/schemas/ORAnthropicStopReason'
            stop_sequence:
              nullable: true
              type: string
          required:
            - container
            - stop_details
            - stop_reason
            - stop_sequence
          type: object
        type:
          enum:
            - message_delta
          type: string
        usage:
          properties:
            cache_creation_input_tokens:
              nullable: true
              type: integer
            cache_read_input_tokens:
              nullable: true
              type: integer
            input_tokens:
              nullable: true
              type: integer
            iterations:
              items:
                $ref: '#/components/schemas/AnthropicUsageIteration'
              type: array
            output_tokens:
              type: integer
            output_tokens_details:
              $ref: '#/components/schemas/AnthropicOutputTokensDetails'
            server_tool_use:
              nullable: true
              properties:
                web_fetch_requests:
                  type: integer
                web_search_requests:
                  type: integer
              required:
                - web_search_requests
                - web_fetch_requests
              type: object
          required:
            - input_tokens
            - output_tokens
            - output_tokens_details
            - cache_creation_input_tokens
            - cache_read_input_tokens
            - server_tool_use
          type: object
      required:
        - type
        - delta
        - usage
      type: object
    MessagesErrorDetail:
      example:
        message: Invalid request parameters
        type: invalid_request_error
      properties:
        message:
          type: string
        type:
          type: string
      required:
        - type
        - message
      type: object
    MessagesErrorEvent:
      description: Error event in the stream
      example:
        error:
          message: Overloaded
          type: overloaded_error
        type: error
      properties:
        error:
          properties:
            message:
              type: string
            type:
              type: string
          required:
            - type
            - message
          type: object
        type:
          enum:
            - error
          type: string
      required:
        - type
        - error
      type: object
    MessagesErrorResponse:
      example:
        error:
          message: Invalid request parameters
          type: invalid_request_error
        type: error
      properties:
        error:
          $ref: '#/components/schemas/MessagesErrorDetail'
        type:
          enum:
            - error
          type: string
      required:
        - type
        - error
      type: object
    MessagesMessageParam:
      description: Anthropic message with OpenRouter extensions
      example:
        content: Hello, how are you?
        role: user
      properties:
        content:
          anyOf:
            - type: string
            - items:
                oneOf:
                  - $ref: '#/components/schemas/AnthropicTextBlockParam'
                  - $ref: '#/components/schemas/AnthropicImageBlockParam'
                  - $ref: '#/components/schemas/AnthropicDocumentBlockParam'
                  - properties:
                      cache_control:
                        $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      id:
                        type: string
                      input:
                        nullable: true
                      name:
                        type: string
                      type:
                        enum:
                          - tool_use
                        type: string
                    required:
                      - type
                      - id
                      - name
                    type: object
                  - properties:
                      cache_control:
                        $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      content:
                        anyOf:
                          - type: string
                          - items:
                              anyOf:
                                - $ref: '#/components/schemas/AnthropicTextBlockParam'
                                - $ref: '#/components/schemas/AnthropicImageBlockParam'
                                - properties:
                                    tool_name:
                                      type: string
                                    type:
                                      enum:
                                        - tool_reference
                                      type: string
                                  required:
                                    - type
                                    - tool_name
                                  type: object
                                - $ref: '#/components/schemas/AnthropicSearchResultBlockParam'
                                - $ref: '#/components/schemas/AnthropicDocumentBlockParam'
                            type: array
                      is_error:
                        type: boolean
                      tool_use_id:
                        type: string
                      type:
                        enum:
                          - tool_result
                        type: string
                    required:
                      - type
                      - tool_use_id
                    type: object
                  - properties:
                      signature:
                        type: string
                      thinking:
                        type: string
                      type:
                        enum:
                          - thinking
                        type: string
                    required:
                      - type
                      - thinking
                      - signature
                    type: object
                  - properties:
                      data:
                        type: string
                      type:
                        enum:
                          - redacted_thinking
                        type: string
                    required:
                      - type
                      - data
                    type: object
                  - properties:
                      cache_control:
                        $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      id:
                        type: string
                      input:
                        nullable: true
                      name:
                        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
                                x-speakeasy-unknown-values: allow
                              type:
                                enum:
                                  - web_search_tool_result_error
                                type: string
                            required:
                              - type
                              - error_code
                            type: object
                      tool_use_id:
                        type: string
                      type:
                        enum:
                          - web_search_tool_result
                        type: string
                    required:
                      - type
                      - tool_use_id
                      - content
                    type: object
                  - $ref: '#/components/schemas/AnthropicSearchResultBlockParam'
                  - properties:
                      cache_control:
                        $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      content:
                        nullable: true
                        type: string
                      type:
                        enum:
                          - compaction
                        type: string
                    required:
                      - type
                      - content
                    type: object
                  - $ref: '#/components/schemas/MessagesAdvisorToolResultBlock'
              type: array
        role:
          enum:
            - user
            - assistant
            - system
          type: string
          x-speakeasy-unknown-values: allow
      required:
        - role
        - content
      type: object
    MessagesOutputConfig:
      description: Configuration for controlling output behavior. Supports the effort parameter and structured output format.
      example:
        effort: medium
      properties:
        effort:
          description: >-
            How much effort the model should put into its response. Higher effort levels may result in more thorough analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`.
          enum:
            - low
            - medium
            - high
            - xhigh
            - max
            - null
          example: medium
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        format:
          description: >-
            A schema to specify Claude's output format in responses. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs).
          nullable: true
          properties:
            schema:
              additionalProperties:
                nullable: true
              type: object
            type:
              enum:
                - json_schema
              type: string
          required:
            - type
            - schema
          type: object
        task_budget:
          description: >-
            Task budget for an agentic turn. The model sees a countdown of remaining tokens and uses it to prioritize work and wind down gracefully. Advisory — does not enforce a hard cap.
          example:
            total: 400000
            type: tokens
          nullable: true
          properties:
            remaining:
              minimum: 0
              nullable: true
              type: integer
            total:
              minimum: 20000
              type: integer
            type:
              enum:
                - tokens
              type: string
          required:
            - type
            - total
          type: object
      type: object
    MessagesPingEvent:
      description: Keep-alive ping event
      example:
        type: ping
      properties:
        type:
          enum:
            - ping
          type: string
      required:
        - type
      type: object
    MessagesRequest:
      description: Request schema for Anthropic Messages API endpoint
      example:
        max_tokens: 1024
        messages:
          - content: Hello, how are you?
            role: user
        model: anthropic/claude-4.5-sonnet-20250929
        temperature: 0.7
      properties:
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        context_management:
          nullable: true
          properties:
            edits:
              items:
                oneOf:
                  - properties:
                      clear_at_least:
                        $ref: '#/components/schemas/AnthropicInputTokensClearAtLeast'
                      clear_tool_inputs:
                        anyOf:
                          - type: boolean
                          - items:
                              type: string
                            type: array
                          - nullable: true
                      exclude_tools:
                        items:
                          type: string
                        nullable: true
                        type: array
                      keep:
                        $ref: '#/components/schemas/AnthropicToolUsesKeep'
                      trigger:
                        discriminator:
                          mapping:
                            input_tokens: '#/components/schemas/AnthropicInputTokensTrigger'
                            tool_uses: '#/components/schemas/AnthropicToolUsesTrigger'
                          propertyName: type
                        oneOf:
                          - $ref: '#/components/schemas/AnthropicInputTokensTrigger'
                          - $ref: '#/components/schemas/AnthropicToolUsesTrigger'
                      type:
                        enum:
                          - clear_tool_uses_20250919
                        type: string
                    required:
                      - type
                    type: object
                  - properties:
                      keep:
                        anyOf:
                          - $ref: '#/components/schemas/AnthropicThinkingTurns'
                          - properties:
                              type:
                                enum:
                                  - all
                                type: string
                            required:
                              - type
                            type: object
                          - enum:
                              - all
                            type: string
                      type:
                        enum:
                          - clear_thinking_20251015
                        type: string
                    required:
                      - type
                    type: object
                  - properties:
                      instructions:
                        nullable: true
                        type: string
                      pause_after_compaction:
                        type: boolean
                      trigger:
                        allOf:
                          - $ref: '#/components/schemas/AnthropicInputTokensTrigger'
                          - nullable: true
                            properties: {}
                            type: object
                        example:
                          type: input_tokens
                          value: 100000
                      type:
                        enum:
                          - compact_20260112
                        type: string
                    required:
                      - type
                    type: object
              type: array
          type: object
        max_tokens:
          type: integer
        messages:
          items:
            $ref: '#/components/schemas/MessagesMessageParam'
          nullable: true
          type: array
        metadata:
          properties:
            user_id:
              nullable: true
              type: string
          type: object
        model:
          type: string
        models:
          items:
            type: string
          type: array
        output_config:
          $ref: '#/components/schemas/MessagesOutputConfig'
        plugins:
          description: Plugins you want to enable for this request, including their settings.
          items:
            discriminator:
              mapping:
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                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/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'
                  description:
                    type: string
                  input_schema:
                    additionalProperties:
                      nullable: true
                    properties:
                      properties:
                        nullable: true
                      required:
                        items:
                          type: string
                        nullable: true
                        type: array
                      type:
                        default: object
                        type: string
                    type: object
                  name:
                    type: string
                  type:
                    enum:
                      - custom
                    type: string
                required:
                  - name
                  - input_schema
                type: object
              - properties:
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  name:
                    enum:
                      - bash
                    type: string
                  type:
                    enum:
                      - bash_20250124
                    type: string
                required:
                  - type
                  - name
                type: object
              - properties:
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  name:
                    enum:
                      - str_replace_editor
                    type: string
                  type:
                    enum:
                      - text_editor_20250124
                    type: string
                required:
                  - type
                  - name
                type: object
              - properties:
                  allowed_domains:
                    items:
                      type: string
                    nullable: true
                    type: array
                  blocked_domains:
                    items:
                      type: string
                    nullable: true
                    type: array
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  max_uses:
                    nullable: true
                    type: integer
                  name:
                    enum:
                      - web_search
                    type: string
                  type:
                    enum:
                      - web_search_20250305
                    type: string
                  user_location:
                    $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation'
                required:
                  - type
                  - name
                type: object
              - properties:
                  allowed_callers:
                    $ref: '#/components/schemas/AnthropicAllowedCallers'
                  allowed_domains:
                    items:
                      type: string
                    nullable: true
                    type: array
                  blocked_domains:
                    items:
                      type: string
                    nullable: true
                    type: array
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  max_uses:
                    nullable: true
                    type: integer
                  name:
                    enum:
                      - web_search
                    type: string
                  type:
                    enum:
                      - web_search_20260209
                    type: string
                  user_location:
                    $ref: '#/components/schemas/AnthropicWebSearchToolUserLocation'
                required:
                  - type
                  - name
                type: object
              - properties:
                  allowed_callers:
                    $ref: '#/components/schemas/AnthropicAllowedCallers'
                  cache_control:
                    $ref: '#/components/schemas/AnthropicCacheControlDirective'
                  caching:
                    allOf:
                      - $ref: '#/components/schemas/AnthropicCacheControlDirective'
                      - nullable: true
                  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/ChatSearchModelsServerTool'
              - $ref: '#/components/schemas/WebFetchServerTool'
              - $ref: '#/components/schemas/OpenRouterWebSearchServerTool'
              - additionalProperties:
                  nullable: true
                properties:
                  type:
                    type: string
                required:
                  - type
                type: object
          type: array
        top_k:
          type: integer
        top_p:
          format: double
          type: number
        trace:
          $ref: '#/components/schemas/TraceConfig'
        user:
          description: >-
            A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters.
          maxLength: 256
          type: string
      required:
        - model
        - messages
      type: object
    MessagesResult:
      allOf:
        - $ref: '#/components/schemas/BaseMessagesResult'
        - properties:
            context_management:
              nullable: true
              properties:
                applied_edits:
                  items:
                    additionalProperties:
                      nullable: true
                    properties:
                      type:
                        type: string
                    required:
                      - type
                    type: object
                  type: array
              required:
                - applied_edits
              type: object
            openrouter_metadata:
              $ref: '#/components/schemas/OpenRouterMetadata'
            provider:
              $ref: '#/components/schemas/ProviderName'
            usage:
              allOf:
                - $ref: '#/components/schemas/AnthropicUsage'
                - properties:
                    cost:
                      format: double
                      nullable: true
                      type: number
                    cost_details:
                      $ref: '#/components/schemas/CostDetails'
                    is_byok:
                      type: boolean
                    iterations:
                      items:
                        $ref: '#/components/schemas/AnthropicUsageIteration'
                      type: array
                    service_tier:
                      nullable: true
                      type: string
                    speed:
                      $ref: '#/components/schemas/AnthropicSpeed'
                  type: object
              example:
                cache_creation: null
                cache_creation_input_tokens: null
                cache_read_input_tokens: null
                inference_geo: null
                input_tokens: 100
                output_tokens: 50
                server_tool_use: null
                service_tier: default
          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
          server_tool_use: null
          service_tier: default
    MessagesStartEvent:
      description: Event sent at the start of a streaming message
      example:
        message:
          content: []
          id: msg_01XFDUDYJgAACzvnptvVoYEL
          model: claude-sonnet-4-5-20250929
          role: assistant
          stop_details: null
          stop_reason: null
          stop_sequence: null
          type: message
          usage:
            input_tokens: 12
            output_tokens: 0
        type: message_start
      properties:
        message:
          properties:
            container:
              $ref: '#/components/schemas/AnthropicContainer'
            content:
              items:
                $ref: '#/components/schemas/ORAnthropicContentBlock'
              type: array
            id:
              type: string
            model:
              type: string
            provider:
              enum:
                - AnyScale
                - Atoma
                - Cent-ML
                - CrofAI
                - Enfer
                - GoPomelo
                - HuggingFace
                - Hyperbolic
                - Hyperbolic 2
                - InoCloud
                - Kluster
                - Lambda
                - Lepton
                - Lynn 2
                - Lynn
                - Mancer
                - Meta
                - Modal
                - Nineteen
                - OctoAI
                - Recursal
                - Reflection
                - Replicate
                - SambaNova 2
                - SF Compute
                - Targon
                - Together 2
                - Ubicloud
                - 01.AI
                - AkashML
                - AI21
                - AionLabs
                - Alibaba
                - Ambient
                - Baidu
                - Amazon Bedrock
                - Amazon Nova
                - Anthropic
                - Arcee AI
                - AtlasCloud
                - Avian
                - Azure
                - BaseTen
                - BytePlus
                - Black Forest Labs
                - Cerebras
                - Chutes
                - Cirrascale
                - Clarifai
                - Cloudflare
                - Cohere
                - Crucible
                - Crusoe
                - Darkbloom
                - Decart
                - DeepInfra
                - DeepSeek
                - DekaLLM
                - DigitalOcean
                - Featherless
                - Fireworks
                - Friendli
                - GMICloud
                - Google
                - Google AI Studio
                - Groq
                - Inception
                - Inceptron
                - InferenceNet
                - Ionstream
                - Infermatic
                - Io Net
                - Inflection
                - Liquid
                - Mara
                - Mancer 2
                - Minimax
                - ModelRun
                - Mistral
                - Modular
                - Moonshot AI
                - Morph
                - NCompass
                - Nebius
                - Nex AGI
                - NextBit
                - Novita
                - Nvidia
                - OpenAI
                - OpenInference
                - Parasail
                - Poolside
                - Perceptron
                - Perplexity
                - Phala
                - Recraft
                - Reka
                - Relace
                - SambaNova
                - Seed
                - SiliconFlow
                - Sourceful
                - StepFun
                - Stealth
                - StreamLake
                - Switchpoint
                - Together
                - Upstage
                - Venice
                - Wafer
                - WandB
                - Xiaomi
                - xAI
                - Z.AI
                - FakeProvider
              type: string
              x-speakeasy-unknown-values: allow
            role:
              enum:
                - assistant
              type: string
            stop_details:
              $ref: '#/components/schemas/AnthropicRefusalStopDetails'
            stop_reason:
              nullable: true
            stop_sequence:
              nullable: true
            type:
              enum:
                - message
              type: string
            usage:
              allOf:
                - $ref: '#/components/schemas/AnthropicUsage'
                - properties:
                    iterations:
                      items:
                        $ref: '#/components/schemas/AnthropicUsageIteration'
                      type: array
                    speed:
                      $ref: '#/components/schemas/AnthropicSpeed'
                  type: object
              example:
                cache_creation: null
                cache_creation_input_tokens: null
                cache_read_input_tokens: null
                inference_geo: null
                input_tokens: 100
                output_tokens: 50
                server_tool_use: null
                service_tier: default
          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
    MetadataLevel:
      description: Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`.
      enum:
        - disabled
        - enabled
      example: enabled
      type: string
      x-speakeasy-unknown-values: allow
    Model:
      description: Information about an AI model available on OpenRouter
      example:
        architecture:
          input_modalities:
            - text
          instruct_type: chatml
          modality: text->text
          output_modalities:
            - text
          tokenizer: GPT
        canonical_slug: openai/gpt-4
        context_length: 8192
        created: 1692901234
        default_parameters: null
        description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
        expiration_date: null
        id: openai/gpt-4
        knowledge_cutoff: null
        links:
          details: /api/v1/models/openai/gpt-5.4/endpoints
        name: GPT-4
        per_request_limits: null
        pricing:
          completion: '0.00006'
          image: '0'
          prompt: '0.00003'
          request: '0'
        supported_parameters:
          - temperature
          - top_p
          - max_tokens
        supported_voices: null
        top_provider:
          context_length: 8192
          is_moderated: true
          max_completion_tokens: 4096
      properties:
        architecture:
          $ref: '#/components/schemas/ModelArchitecture'
        canonical_slug:
          description: Canonical slug for the model
          example: openai/gpt-4
          type: string
        context_length:
          description: Maximum context length in tokens
          example: 8192
          nullable: true
          type: integer
        created:
          description: Unix timestamp of when the model was created
          example: 1692901234
          type: integer
        default_parameters:
          $ref: '#/components/schemas/DefaultParameters'
        description:
          description: Description of the model
          example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
          type: string
        expiration_date:
          description: The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration.
          example: '2025-06-01'
          nullable: true
          type: string
        hugging_face_id:
          description: Hugging Face model identifier, if applicable
          example: microsoft/DialoGPT-medium
          nullable: true
          type: string
        id:
          description: Unique identifier for the model
          example: openai/gpt-4
          type: string
        knowledge_cutoff:
          description: The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown.
          example: '2024-10-01'
          nullable: true
          type: string
        links:
          $ref: '#/components/schemas/ModelLinks'
        name:
          description: Display name of the model
          example: GPT-4
          type: string
        per_request_limits:
          $ref: '#/components/schemas/PerRequestLimits'
        pricing:
          $ref: '#/components/schemas/PublicPricing'
        supported_parameters:
          description: List of supported parameters for this model
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        supported_voices:
          description: List of supported voice identifiers for TTS models. Null for non-TTS models.
          example: null
          items:
            type: string
          nullable: true
          type: array
        top_provider:
          $ref: '#/components/schemas/TopProviderInfo'
      required:
        - id
        - canonical_slug
        - name
        - created
        - pricing
        - context_length
        - architecture
        - top_provider
        - per_request_limits
        - supported_parameters
        - default_parameters
        - supported_voices
        - links
      type: object
    ModelArchitecture:
      description: Model architecture information
      example:
        input_modalities:
          - text
        instruct_type: chatml
        modality: text->text
        output_modalities:
          - text
        tokenizer: GPT
      properties:
        input_modalities:
          description: Supported input modalities
          items:
            $ref: '#/components/schemas/InputModality'
          type: array
        instruct_type:
          description: Instruction format type
          enum:
            - none
            - airoboros
            - alpaca
            - alpaca-modif
            - chatml
            - claude
            - code-llama
            - gemma
            - llama2
            - llama3
            - mistral
            - nemotron
            - neural
            - openchat
            - phi3
            - rwkv
            - vicuna
            - zephyr
            - deepseek-r1
            - deepseek-v3.1
            - qwq
            - qwen3
            - null
          example: chatml
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        modality:
          description: Primary modality of the model
          example: text->text
          nullable: true
          type: string
        output_modalities:
          description: Supported output modalities
          items:
            $ref: '#/components/schemas/OutputModality'
          type: array
        tokenizer:
          $ref: '#/components/schemas/ModelGroup'
      required:
        - modality
        - input_modalities
        - output_modalities
      type: object
    ModelGroup:
      description: Tokenizer type used by the model
      enum:
        - Router
        - Media
        - Other
        - GPT
        - Claude
        - Gemini
        - Gemma
        - Grok
        - Cohere
        - Nova
        - Qwen
        - Yi
        - DeepSeek
        - Mistral
        - Llama2
        - Llama3
        - Llama4
        - PaLM
        - RWKV
        - Qwen3
      example: GPT
      type: string
      x-speakeasy-unknown-values: allow
    ModelLinks:
      description: Related API endpoints and resources for this model.
      example:
        details: /api/v1/models/openai/gpt-5.4/endpoints
      properties:
        details:
          description: URL for the model details/endpoints API
          example: /api/v1/models/openai/gpt-5.4/endpoints
          type: string
      required:
        - details
      type: object
    ModelName:
      description: Model to use for completion
      example: openai/gpt-4
      type: string
    ModelsCountResponse:
      description: Model count data
      example:
        data:
          count: 150
      properties:
        data:
          description: Model count data
          example:
            count: 150
          properties:
            count:
              description: Total number of available models
              example: 150
              type: integer
          required:
            - count
          type: object
      required:
        - data
      type: object
    ModelsListResponse:
      description: List of available models
      example:
        data:
          - architecture:
              input_modalities:
                - text
              instruct_type: chatml
              modality: text->text
              output_modalities:
                - text
              tokenizer: GPT
            canonical_slug: openai/gpt-4
            context_length: 8192
            created: 1692901234
            default_parameters: null
            description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
            expiration_date: null
            id: openai/gpt-4
            knowledge_cutoff: null
            links:
              details: /api/v1/models/openai/gpt-5.4/endpoints
            name: GPT-4
            per_request_limits: null
            pricing:
              completion: '0.00006'
              image: '0'
              prompt: '0.00003'
              request: '0'
            supported_parameters:
              - temperature
              - top_p
              - max_tokens
              - frequency_penalty
              - presence_penalty
            supported_voices: null
            top_provider:
              context_length: 8192
              is_moderated: true
              max_completion_tokens: 4096
      properties:
        data:
          $ref: '#/components/schemas/ModelsListResponseData'
      required:
        - data
      type: object
    ModelsListResponseData:
      description: List of available models
      example:
        - architecture:
            input_modalities:
              - text
            instruct_type: chatml
            modality: text->text
            output_modalities:
              - text
            tokenizer: GPT
          canonical_slug: openai/gpt-4
          context_length: 8192
          created: 1692901234
          default_parameters: null
          description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
          expiration_date: null
          id: openai/gpt-4
          knowledge_cutoff: null
          links:
            details: /api/v1/models/openai/gpt-5.4/endpoints
          name: GPT-4
          per_request_limits: null
          pricing:
            completion: '0.00006'
            image: '0'
            prompt: '0.00003'
            request: '0'
          supported_parameters:
            - temperature
            - top_p
            - max_tokens
          supported_voices: null
          top_provider:
            context_length: 8192
            is_moderated: true
            max_completion_tokens: 4096
      items:
        $ref: '#/components/schemas/Model'
      type: array
    ModerationPlugin:
      example:
        id: moderation
      properties:
        id:
          enum:
            - moderation
          type: string
      required:
        - id
      type: object
    MultimodalMedia:
      example:
        data: data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...
        format: wav
      properties:
        data:
          type: string
        format:
          type: string
      required:
        - data
      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:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    NotFoundResponseErrorData:
      description: Error data for NotFoundResponse
      example:
        code: 404
        message: Resource not found
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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
          nullable: true
          type: array
        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:
              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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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'
    ObservabilityFilterRulesConfig:
      description: Optional structured filter rules controlling which events are forwarded.
      example: null
      nullable: true
      properties:
        enabled:
          default: true
          type: boolean
        groups:
          items:
            properties:
              logic:
                default: and
                enum:
                  - and
                  - or
                type: string
                x-speakeasy-unknown-values: allow
              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
                      x-speakeasy-unknown-values: allow
                    operator:
                      enum:
                        - equals
                        - not_equals
                        - contains
                        - not_contains
                        - regex
                        - starts_with
                        - ends_with
                        - gt
                        - lt
                        - gte
                        - lte
                        - exists
                        - not_exists
                      type: string
                      x-speakeasy-unknown-values: allow
                    value:
                      anyOf:
                        - type: string
                        - type: number
                  required:
                    - field
                    - operator
                  type: object
                type: array
            required:
              - rules
            type: object
          type: array
      required:
        - groups
      type: object
    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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
              x-speakeasy-unknown-values: allow
          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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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:
          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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
        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
          nullable: true
          type: array
        config:
          properties:
            headers:
              additionalProperties:
                type: string
              type: object
            method:
              default: POST
              enum:
                - POST
                - PUT
              type: string
              x-speakeasy-unknown-values: allow
            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
          nullable: true
          type: string
        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:
          nullable: true
          type: string
        output:
          anyOf:
            - type: string
            - items:
                discriminator:
                  mapping:
                    input_file: '#/components/schemas/InputFile'
                    input_image: '#/components/schemas/InputImage'
                    input_text: '#/components/schemas/InputText'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/InputText'
                  - $ref: '#/components/schemas/InputImage'
                  - $ref: '#/components/schemas/InputFile'
              type: array
        status:
          allOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - nullable: true
        type:
          enum:
            - function_call_output
          type: string
      required:
        - type
        - call_id
        - output
      type: object
    OpenAIResponseInputMessageItem:
      example:
        content:
          - text: Hello, how are you?
            type: input_text
        id: msg-abc123
        role: user
        type: message
      properties:
        content:
          items:
            discriminator:
              mapping:
                input_audio: '#/components/schemas/InputAudio'
                input_file: '#/components/schemas/InputFile'
                input_image: '#/components/schemas/InputImage'
                input_text: '#/components/schemas/InputText'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/InputText'
              - $ref: '#/components/schemas/InputImage'
              - $ref: '#/components/schemas/InputFile'
              - $ref: '#/components/schemas/InputAudio'
          type: array
        id:
          type: string
        role:
          anyOf:
            - enum:
                - user
              type: string
            - enum:
                - system
              type: string
            - enum:
                - developer
              type: string
        type:
          enum:
            - message
          type: string
      required:
        - id
        - role
        - content
      type: object
    OpenAIResponsesAnnotation:
      anyOf:
        - $ref: '#/components/schemas/FileCitation'
        - $ref: '#/components/schemas/URLCitation'
        - $ref: '#/components/schemas/FilePath'
      example:
        file_id: file-abc123
        filename: research_paper.pdf
        index: 0
        type: file_citation
    OpenAIResponsesImageGenCallCompleted:
      example:
        item_id: ig_abc123
        output_index: 0
        sequence_number: 4
        type: response.image_generation_call.completed
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.image_generation_call.completed
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
      type: object
    OpenAIResponsesImageGenCallGenerating:
      example:
        item_id: ig_abc123
        output_index: 0
        sequence_number: 2
        type: response.image_generation_call.generating
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.image_generation_call.generating
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
      type: object
    OpenAIResponsesImageGenCallInProgress:
      example:
        item_id: ig_abc123
        output_index: 0
        sequence_number: 1
        type: response.image_generation_call.in_progress
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.image_generation_call.in_progress
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
      type: object
    OpenAIResponsesImageGenCallPartialImage:
      example:
        item_id: ig_abc123
        output_index: 0
        partial_image_b64: iVBORw0KGgo...
        partial_image_index: 0
        sequence_number: 3
        type: response.image_generation_call.partial_image
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        partial_image_b64:
          type: string
        partial_image_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.image_generation_call.partial_image
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
        - partial_image_b64
        - partial_image_index
      type: object
    OpenAIResponsesRefusalContent:
      example:
        refusal: I'm sorry, I cannot assist with that request
        type: refusal
      properties:
        refusal:
          type: string
        type:
          enum:
            - refusal
          type: string
      required:
        - type
        - refusal
      type: object
    OpenAIResponsesResponseStatus:
      enum:
        - completed
        - incomplete
        - in_progress
        - failed
        - cancelled
        - queued
      example: completed
      type: string
      x-speakeasy-unknown-values: allow
    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
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    OpenAIResponsesUsage:
      example:
        input_tokens: 100
        input_tokens_details:
          cached_tokens: 0
        output_tokens: 50
        output_tokens_details:
          reasoning_tokens: 0
        total_tokens: 150
      properties:
        input_tokens:
          type: integer
        input_tokens_details:
          properties:
            cached_tokens:
              type: integer
          required:
            - cached_tokens
          type: object
        output_tokens:
          type: integer
        output_tokens_details:
          properties:
            reasoning_tokens:
              type: integer
          required:
            - reasoning_tokens
          type: object
        total_tokens:
          type: integer
      required:
        - input_tokens
        - input_tokens_details
        - output_tokens
        - output_tokens_details
        - total_tokens
      type: object
    OpenAIResponsesWebSearchCallInProgress:
      example:
        item_id: ws_abc123
        output_index: 0
        sequence_number: 1
        type: response.web_search_call.in_progress
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.web_search_call.in_progress
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
      type: object
    OpenAIResponsesWebSearchCallSearching:
      example:
        item_id: ws_abc123
        output_index: 0
        sequence_number: 2
        type: response.web_search_call.searching
      properties:
        item_id:
          type: string
        output_index:
          type: integer
        sequence_number:
          type: integer
        type:
          enum:
            - response.web_search_call.searching
          type: string
      required:
        - type
        - item_id
        - output_index
        - sequence_number
      type: object
    OpenResponsesCreatedEvent:
      allOf:
        - $ref: '#/components/schemas/CreatedEvent'
        - properties:
            response:
              $ref: '#/components/schemas/OpenResponsesResult'
          type: object
      description: Event emitted when a response is created
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: in_progress
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 0
        type: response.created
    OpenResponsesInProgressEvent:
      allOf:
        - $ref: '#/components/schemas/InProgressEvent'
        - properties:
            response:
              $ref: '#/components/schemas/OpenResponsesResult'
          type: object
      description: Event emitted when a response is in progress
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: in_progress
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 1
        type: response.in_progress
    OpenResponsesLogProbs:
      description: Log probability information for a token
      example:
        logprob: -0.1
        token: world
        top_logprobs:
          - logprob: -0.5
            token: hello
      properties:
        bytes:
          items:
            type: integer
          type: array
        logprob:
          format: double
          type: number
        token:
          type: string
        top_logprobs:
          items:
            $ref: '#/components/schemas/OpenResponsesTopLogprobs'
          type: array
      required:
        - logprob
        - token
      type: object
    OpenResponsesResult:
      allOf:
        - $ref: '#/components/schemas/BaseResponsesResult'
        - properties:
            openrouter_metadata:
              $ref: '#/components/schemas/OpenRouterMetadata'
            output:
              items:
                $ref: '#/components/schemas/OutputItems'
              type: array
            service_tier:
              nullable: true
              type: string
            text:
              $ref: '#/components/schemas/TextExtendedConfig'
            usage:
              $ref: '#/components/schemas/Usage'
          type: object
      description: Complete non-streaming response from the Responses API
      example:
        created_at: 1704067200
        error: null
        id: resp-abc123
        incomplete_details: null
        instructions: null
        max_output_tokens: null
        metadata: null
        model: gpt-4
        object: response
        output:
          - content:
              - annotations: []
                text: Hello! How can I help you today?
                type: output_text
            id: msg-abc123
            role: assistant
            status: completed
            type: message
        parallel_tool_calls: true
        status: completed
        temperature: null
        tool_choice: auto
        tools: []
        top_p: null
        usage:
          input_tokens: 10
          input_tokens_details:
            cached_tokens: 0
          output_tokens: 25
          output_tokens_details:
            reasoning_tokens: 0
          total_tokens: 35
    OpenResponsesTopLogprobs:
      description: Alternative token with its log probability
      example:
        logprob: -0.5
        token: hello
      properties:
        bytes:
          items:
            type: integer
          type: array
        logprob:
          format: double
          type: number
        token:
          type: string
      type: object
    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:
          nullable: true
          type: string
        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: null
      oneOf:
        - $ref: '#/components/schemas/AnthropicDirectCaller'
        - $ref: '#/components/schemas/AnthropicCodeExecution20250825Caller'
        - $ref: '#/components/schemas/AnthropicCodeExecution20260120Caller'
        - nullable: true
    ORAnthropicServerToolUseBlock:
      example:
        caller: null
        id: srvtoolu_01abc
        input: {}
        name: advisor
        type: server_tool_use
      properties:
        caller:
          $ref: '#/components/schemas/ORAnthropicNullableCaller'
        id:
          type: string
        input:
          nullable: true
        name:
          type: string
        type:
          enum:
            - server_tool_use
          type: string
      required:
        - type
        - id
        - name
      type: object
    ORAnthropicStopReason:
      enum:
        - end_turn
        - max_tokens
        - stop_sequence
        - tool_use
        - pause_turn
        - refusal
        - compaction
        - null
      example: end_turn
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    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:
        command:
          type: string
        exitCode:
          type: integer
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        stderr:
          type: string
        stdout:
          type: string
        type:
          enum:
            - openrouter:bash
          type: string
      required:
        - status
        - type
      type: object
    OutputBrowserUseServerToolItem:
      description: An openrouter:browser_use server tool output item
      example:
        action: screenshot
        id: bu_tmp_abc123
        status: completed
        type: openrouter:browser_use
      properties:
        action:
          type: string
        id:
          type: string
        screenshotB64:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:browser_use
          type: string
      required:
        - status
        - type
      type: object
    OutputCodeInterpreterCallItem:
      allOf:
        - $ref: '#/components/schemas/CodeInterpreterCallItem'
        - properties: {}
          type: object
      description: A code interpreter execution call with outputs
      example:
        code: print("hello")
        container_id: ctr-xyz789
        id: ci-abc123
        outputs:
          - logs: |
              hello
            type: logs
        status: completed
        type: code_interpreter_call
    OutputCodeInterpreterServerToolItem:
      description: An openrouter:code_interpreter server tool output item
      example:
        code: print("hello")
        id: ci_tmp_abc123
        language: python
        status: completed
        stdout: |
          hello
        type: openrouter:code_interpreter
      properties:
        code:
          type: string
        exitCode:
          type: integer
        id:
          type: string
        language:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        stderr:
          type: string
        stdout:
          type: string
        type:
          enum:
            - openrouter:code_interpreter
          type: string
      required:
        - status
        - type
      type: object
    OutputComputerCallItem:
      example:
        action:
          type: screenshot
        call_id: call-abc123
        id: cu-abc123
        pending_safety_checks: []
        status: completed
        type: computer_call
      properties:
        action:
          nullable: true
        call_id:
          type: string
        id:
          type: string
        pending_safety_checks:
          items:
            properties:
              code:
                type: string
              id:
                type: string
              message:
                type: string
            required:
              - id
              - code
              - message
            type: object
          type: array
        status:
          enum:
            - completed
            - incomplete
            - in_progress
          type: string
          x-speakeasy-unknown-values: allow
        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
    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.
          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
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:fusion
          type: string
      required:
        - status
        - type
      type: object
    OutputImageGenerationCallItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemImageGenerationCall'
        - properties: {}
          type: object
      example:
        id: img-abc123
        result: null
        status: completed
        type: image_generation_call
    OutputImageGenerationServerToolItem:
      description: An openrouter:image_generation server tool output item
      example:
        id: ig_tmp_abc123
        imageUrl: https://example.com/image.png
        result: https://example.com/image.png
        status: completed
        type: openrouter:image_generation
      properties:
        id:
          type: string
        imageB64:
          type: string
        imageUrl:
          type: string
        result:
          description: The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format
          nullable: true
          type: string
        revisedPrompt:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:image_generation
          type: string
      required:
        - status
        - type
      type: object
    OutputItemAddedEvent:
      description: Event emitted when a new output item is added to the response
      example:
        item:
          content: []
          id: item-1
          role: assistant
          status: in_progress
          type: message
        output_index: 0
        sequence_number: 2
        type: response.output_item.added
      properties:
        item:
          discriminator:
            mapping:
              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
          x-speakeasy-unknown-values: allow
        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
          nullable: true
          type: string
        status:
          $ref: '#/components/schemas/ImageGenerationStatus'
        type:
          enum:
            - image_generation_call
          type: string
      required:
        - type
        - id
        - status
      type: object
    OutputItemReasoning:
      example:
        id: reasoning-abc123
        summary:
          - text: Analyzed the problem using first principles
            type: summary_text
        type: reasoning
      properties:
        content:
          items:
            $ref: '#/components/schemas/ReasoningTextContent'
          type: array
        encrypted_content:
          nullable: true
          type: string
        id:
          type: string
        status:
          anyOf:
            - enum:
                - completed
              type: string
            - enum:
                - incomplete
              type: string
            - enum:
                - in_progress
              type: string
        summary:
          items:
            $ref: '#/components/schemas/ReasoningSummaryText'
          type: array
        type:
          enum:
            - reasoning
          type: string
      required:
        - type
        - id
        - summary
      type: object
    OutputItems:
      description: An output item from the response
      discriminator:
        mapping:
          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:fusion: '#/components/schemas/OutputFusionServerToolItem'
          openrouter:image_generation: '#/components/schemas/OutputImageGenerationServerToolItem'
          openrouter:mcp: '#/components/schemas/OutputMcpServerToolItem'
          openrouter:memory: '#/components/schemas/OutputMemoryServerToolItem'
          openrouter:text_editor: '#/components/schemas/OutputTextEditorServerToolItem'
          openrouter:tool_search: '#/components/schemas/OutputToolSearchServerToolItem'
          openrouter:web_fetch: '#/components/schemas/OutputWebFetchServerToolItem'
          openrouter:web_search: '#/components/schemas/OutputWebSearchServerToolItem'
          reasoning: '#/components/schemas/OutputReasoningItem'
          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/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:
                  nullable: true
                  type: string
              required:
                - type
              type: object
            - properties:
                pattern:
                  type: string
                type:
                  enum:
                    - find_in_page
                  type: string
                url:
                  type: string
              required:
                - type
                - pattern
                - url
              type: object
        id:
          type: string
        status:
          $ref: '#/components/schemas/WebSearchStatus'
        type:
          enum:
            - web_search_call
          type: string
      required:
        - type
        - id
        - 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
          x-speakeasy-unknown-values: allow
        id:
          type: string
        key:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:memory
          type: string
        value:
          nullable: true
      required:
        - status
        - type
      type: object
    OutputMessage:
      example:
        content:
          - text: Hello! How can I help you today?
            type: output_text
        id: msg-abc123
        role: assistant
        status: completed
        type: message
      properties:
        content:
          items:
            anyOf:
              - $ref: '#/components/schemas/ResponseOutputText'
              - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
          type: array
        id:
          type: string
        phase:
          anyOf:
            - enum:
                - commentary
              type: string
            - enum:
                - final_answer
              type: string
            - nullable: true
          description: >-
            The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages.
        role:
          enum:
            - assistant
          type: string
        status:
          anyOf:
            - enum:
                - completed
              type: string
            - enum:
                - incomplete
              type: string
            - enum:
                - in_progress
              type: string
        type:
          enum:
            - message
          type: string
      required:
        - id
        - role
        - type
        - content
      type: object
    OutputMessageItem:
      allOf:
        - $ref: '#/components/schemas/OutputMessage'
        - properties: {}
          type: object
      description: An output message item
      example:
        content:
          - annotations: []
            text: Hello! How can I help you?
            type: output_text
        id: msg-123
        role: assistant
        status: completed
        type: message
    OutputModality:
      enum:
        - text
        - image
        - embeddings
        - audio
        - video
        - rerank
        - speech
        - transcription
      example: text
      type: string
      x-speakeasy-unknown-values: allow
    OutputModalityEnum:
      enum:
        - text
        - image
      example: text
      type: string
      x-speakeasy-unknown-values: allow
    OutputReasoningItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemReasoning'
        - properties:
            content:
              items:
                $ref: '#/components/schemas/ReasoningTextContent'
              nullable: true
              type: array
            format:
              $ref: '#/components/schemas/ReasoningFormat'
            signature:
              description: A signature for the reasoning content, used for verification
              example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
              nullable: true
              type: string
          type: object
      description: An output item containing reasoning
      example:
        content:
          - text: First, we analyze the problem...
            type: reasoning_text
        format: anthropic-claude-v1
        id: reasoning-123
        signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
        status: completed
        summary:
          - text: Analyzed the problem and found the optimal solution.
            type: summary_text
        type: reasoning
    OutputSearchModelsServerToolItem:
      description: An openrouter:experimental__search_models server tool output item
      example:
        arguments: '{"query":"Claude Opus"}'
        id: sm_tmp_abc123
        query: Claude Opus
        status: completed
        type: openrouter:experimental__search_models
      properties:
        arguments:
          description: The JSON arguments submitted to the search tool (e.g. {"query":"Claude"})
          type: string
        id:
          type: string
        query:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:experimental__search_models
          type: string
      required:
        - status
        - type
      type: object
    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:
              nullable: true
              type: integer
            timeout_ms:
              nullable: true
              type: integer
          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:
          nullable: true
          type: integer
        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
    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
          x-speakeasy-unknown-values: allow
        filePath:
          type: string
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:text_editor
          type: string
      required:
        - status
        - type
      type: object
    OutputToolSearchServerToolItem:
      description: An openrouter:tool_search server tool output item
      example:
        id: ts_tmp_abc123
        query: weather tools
        status: completed
        type: openrouter:tool_search
      properties:
        id:
          type: string
        query:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:tool_search
          type: string
      required:
        - status
        - type
      type: object
    OutputWebFetchServerToolItem:
      description: An openrouter:web_fetch server tool output item
      example:
        httpStatus: 200
        id: wf_tmp_abc123
        status: completed
        title: Example Domain
        type: openrouter:web_fetch
        url: https://example.com
      properties:
        content:
          type: string
        error:
          description: The error message if the fetch failed.
          type: string
        httpStatus:
          description: The HTTP status code returned by the upstream URL fetch.
          type: integer
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        title:
          type: string
        type:
          enum:
            - openrouter:web_fetch
          type: string
        url:
          type: string
      required:
        - status
        - type
      type: object
    OutputWebSearchCallItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemWebSearchCall'
        - properties: {}
          type: object
      example:
        id: ws-abc123
        status: completed
        type: web_search_call
    OutputWebSearchServerToolItem:
      description: An openrouter:web_search server tool output item
      example:
        action:
          query: latest AI news
          type: search
        id: ws_tmp_abc123
        status: completed
        type: openrouter:web_search
      properties:
        action:
          description: >-
            The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model issued and optional source URLs returned by the search provider.
          properties:
            query:
              type: string
            sources:
              items:
                properties:
                  type:
                    enum:
                      - url
                    type: string
                  url:
                    type: string
                required:
                  - type
                  - url
                type: object
              type: array
            type:
              enum:
                - search
              type: string
          required:
            - type
            - query
          type: object
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
        type:
          enum:
            - openrouter:web_search
          type: string
      required:
        - status
        - type
      type: object
    Parameter:
      enum:
        - temperature
        - top_p
        - top_k
        - min_p
        - top_a
        - frequency_penalty
        - presence_penalty
        - repetition_penalty
        - max_tokens
        - max_completion_tokens
        - logit_bias
        - logprobs
        - top_logprobs
        - seed
        - response_format
        - structured_outputs
        - stop
        - tools
        - tool_choice
        - parallel_tool_calls
        - include_reasoning
        - reasoning
        - reasoning_effort
        - web_search_options
        - verbosity
      example: temperature
      type: string
      x-speakeasy-unknown-values: allow
    ParetoRouterPlugin:
      example:
        enabled: true
        id: pareto-router
        min_coding_score: 0.8
      properties:
        enabled:
          description: Set to false to disable the pareto-router plugin for this request. Defaults to true.
          type: boolean
        id:
          enum:
            - pareto-router
          type: string
        min_coding_score:
          description: >-
            Minimum desired coding score between 0 and 1, where 1 is best. Higher values select from stronger coding models (sourced from Artificial Analysis coding percentiles). Maps internally to one of three tiers (low, medium, high). Omit to use the router default tier.
          example: 0.8
          format: double
          maximum: 1
          minimum: 0
          type: number
      required:
        - id
      type: object
    PayloadTooLargeResponse:
      description: Payload Too Large - Request payload exceeds size limits
      example:
        error:
          code: 413
          message: Request payload too large
      properties:
        error:
          $ref: '#/components/schemas/PayloadTooLargeResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    PayloadTooLargeResponseErrorData:
      description: Error data for PayloadTooLargeResponse
      example:
        code: 413
        message: Request payload too large
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    PaymentRequiredResponse:
      description: Payment Required - Insufficient credits or quota to complete request
      example:
        error:
          code: 402
          message: Insufficient credits. Add more using https://openrouter.ai/credits
      properties:
        error:
          $ref: '#/components/schemas/PaymentRequiredResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    PaymentRequiredResponseErrorData:
      description: Error data for PaymentRequiredResponse
      example:
        code: 402
        message: Insufficient credits. Add more using https://openrouter.ai/credits
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    PDFParserEngine:
      anyOf:
        - enum:
            - mistral-ocr
            - native
            - cloudflare-ai
          type: string
          x-speakeasy-unknown-values: allow
        - enum:
            - pdf-text
          type: string
      description: >-
        The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to "cloudflare-ai".
      example: cloudflare-ai
    PDFParserOptions:
      description: Options for PDF parsing.
      example:
        engine: cloudflare-ai
      properties:
        engine:
          $ref: '#/components/schemas/PDFParserEngine'
      type: object
    PercentileLatencyCutoffs:
      description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
      example:
        p50: 5
        p90: 10
      properties:
        p50:
          description: Maximum p50 latency (seconds)
          format: double
          nullable: true
          type: number
        p75:
          description: Maximum p75 latency (seconds)
          format: double
          nullable: true
          type: number
        p90:
          description: Maximum p90 latency (seconds)
          format: double
          nullable: true
          type: number
        p99:
          description: Maximum p99 latency (seconds)
          format: double
          nullable: true
          type: number
      type: object
    PercentileStats:
      description: >-
        Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests.
      example:
        p50: 25.5
        p75: 35.2
        p90: 48.7
        p99: 85.3
      nullable: true
      properties:
        p50:
          description: Median (50th percentile)
          example: 25.5
          format: double
          type: number
        p75:
          description: 75th percentile
          example: 35.2
          format: double
          type: number
        p90:
          description: 90th percentile
          example: 48.7
          format: double
          type: number
        p99:
          description: 99th percentile
          example: 85.3
          format: double
          type: number
      required:
        - p50
        - p75
        - p90
        - p99
      type: object
    PercentileThroughputCutoffs:
      description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
      example:
        p50: 100
        p90: 50
      properties:
        p50:
          description: Minimum p50 throughput (tokens/sec)
          format: double
          nullable: true
          type: number
        p75:
          description: Minimum p75 throughput (tokens/sec)
          format: double
          nullable: true
          type: number
        p90:
          description: Minimum p90 throughput (tokens/sec)
          format: double
          nullable: true
          type: number
        p99:
          description: Minimum p99 throughput (tokens/sec)
          format: double
          nullable: true
          type: number
      type: object
    PerRequestLimits:
      description: Per-request token limits
      example:
        completion_tokens: 1000
        prompt_tokens: 1000
      nullable: true
      properties:
        completion_tokens:
          description: Maximum completion tokens per request
          example: 1000
          type: number
        prompt_tokens:
          description: Maximum prompt tokens per request
          example: 1000
          type: number
      required:
        - prompt_tokens
        - completion_tokens
      type: object
    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
          nullable: true
          type: number
        data:
          additionalProperties:
            nullable: true
          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
      x-speakeasy-unknown-values: allow
    PreferredMaxLatency:
      anyOf:
        - format: double
          type: number
        - $ref: '#/components/schemas/PercentileLatencyCutoffs'
        - nullable: true
      description: >-
        Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold.
      example: 5
    PreferredMinThroughput:
      anyOf:
        - format: double
          type: number
        - $ref: '#/components/schemas/PercentileThroughputCutoffs'
        - nullable: true
      description: >-
        Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold.
      example: 100
    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:
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        designated_version_id:
          nullable: true
          type: string
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        status:
          $ref: '#/components/schemas/PresetStatus'
        status_updated_at:
          nullable: true
          type: string
        updated_at:
          type: string
        workspace_id:
          nullable: true
          type: string
      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
      nullable: true
      properties:
        config:
          additionalProperties:
            nullable: true
          type: object
        created_at:
          type: string
        creator_id:
          type: string
        id:
          type: string
        preset_id:
          type: string
        system_prompt:
          nullable: true
          type: string
        updated_at:
          type: string
        version:
          type: integer
      required:
        - id
        - preset_id
        - creator_id
        - version
        - system_prompt
        - config
        - created_at
        - updated_at
      type: object
    PresetStatus:
      description: The status of a preset.
      enum:
        - active
        - disabled
        - archived
      example: active
      type: string
      x-speakeasy-unknown-values: allow
    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, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchContextSizeEnum'
        type:
          enum:
            - web_search_preview_2025_03_11
          type: string
        user_location:
          $ref: '#/components/schemas/Preview_WebSearchUserLocation'
      required:
        - type
      type: object
    Preview_WebSearchServerTool:
      description: Web search preview tool configuration
      example:
        type: web_search_preview
      properties:
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        filters:
          $ref: '#/components/schemas/WebSearchDomainFilter'
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchContextSizeEnum'
        type:
          enum:
            - web_search_preview
          type: string
        user_location:
          $ref: '#/components/schemas/Preview_WebSearchUserLocation'
      required:
        - type
      type: object
    Preview_WebSearchUserLocation:
      example:
        city: San Francisco
        country: USA
        region: California
        timezone: America/Los_Angeles
        type: approximate
      nullable: true
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        region:
          nullable: true
          type: string
        timezone:
          nullable: true
          type: string
        type:
          enum:
            - approximate
          type: string
      required:
        - type
      type: object
    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
      x-speakeasy-unknown-values: allow
    ProviderName:
      enum:
        - AkashML
        - AI21
        - AionLabs
        - Alibaba
        - Ambient
        - Baidu
        - Amazon Bedrock
        - Amazon Nova
        - Anthropic
        - Arcee AI
        - AtlasCloud
        - Avian
        - Azure
        - BaseTen
        - BytePlus
        - Black Forest Labs
        - Cerebras
        - Chutes
        - Cirrascale
        - Clarifai
        - Cloudflare
        - Cohere
        - Crucible
        - Crusoe
        - Darkbloom
        - Decart
        - DeepInfra
        - DeepSeek
        - DekaLLM
        - DigitalOcean
        - Featherless
        - Fireworks
        - Friendli
        - GMICloud
        - Google
        - Google AI Studio
        - Groq
        - Inception
        - Inceptron
        - InferenceNet
        - Ionstream
        - Infermatic
        - Io Net
        - Inflection
        - Liquid
        - Mara
        - Mancer 2
        - Minimax
        - ModelRun
        - Mistral
        - Modular
        - Moonshot AI
        - Morph
        - NCompass
        - Nebius
        - Nex AGI
        - NextBit
        - Novita
        - Nvidia
        - OpenAI
        - OpenInference
        - Parasail
        - Poolside
        - Perceptron
        - Perplexity
        - Phala
        - Recraft
        - Reka
        - Relace
        - SambaNova
        - Seed
        - SiliconFlow
        - Sourceful
        - StepFun
        - Stealth
        - StreamLake
        - Switchpoint
        - Together
        - Upstage
        - Venice
        - Wafer
        - WandB
        - Xiaomi
        - xAI
        - Z.AI
        - FakeProvider
      example: OpenAI
      type: string
      x-speakeasy-unknown-values: allow
    ProviderOptions:
      description: >-
        Provider-specific options keyed by provider slug. The options for the matched provider are spread into the upstream request body.
      example:
        openai:
          max_tokens: 1000
      properties:
        01ai:
          additionalProperties:
            nullable: true
          type: object
        ai21:
          additionalProperties:
            nullable: true
          type: object
        aion-labs:
          additionalProperties:
            nullable: true
          type: object
        akashml:
          additionalProperties:
            nullable: true
          type: object
        alibaba:
          additionalProperties:
            nullable: true
          type: object
        amazon-bedrock:
          additionalProperties:
            nullable: true
          type: object
        amazon-nova:
          additionalProperties:
            nullable: true
          type: object
        ambient:
          additionalProperties:
            nullable: true
          type: object
        anthropic:
          additionalProperties:
            nullable: true
          type: object
        anyscale:
          additionalProperties:
            nullable: true
          type: object
        arcee-ai:
          additionalProperties:
            nullable: true
          type: object
        atlas-cloud:
          additionalProperties:
            nullable: true
          type: object
        atoma:
          additionalProperties:
            nullable: true
          type: object
        avian:
          additionalProperties:
            nullable: true
          type: object
        azure:
          additionalProperties:
            nullable: true
          type: object
        baidu:
          additionalProperties:
            nullable: true
          type: object
        baseten:
          additionalProperties:
            nullable: true
          type: object
        black-forest-labs:
          additionalProperties:
            nullable: true
          type: object
        byteplus:
          additionalProperties:
            nullable: true
          type: object
        centml:
          additionalProperties:
            nullable: true
          type: object
        cerebras:
          additionalProperties:
            nullable: true
          type: object
        chutes:
          additionalProperties:
            nullable: true
          type: object
        cirrascale:
          additionalProperties:
            nullable: true
          type: object
        clarifai:
          additionalProperties:
            nullable: true
          type: object
        cloudflare:
          additionalProperties:
            nullable: true
          type: object
        cohere:
          additionalProperties:
            nullable: true
          type: object
        crofai:
          additionalProperties:
            nullable: true
          type: object
        crucible:
          additionalProperties:
            nullable: true
          type: object
        crusoe:
          additionalProperties:
            nullable: true
          type: object
        darkbloom:
          additionalProperties:
            nullable: true
          type: object
        decart:
          additionalProperties:
            nullable: true
          type: object
        deepinfra:
          additionalProperties:
            nullable: true
          type: object
        deepseek:
          additionalProperties:
            nullable: true
          type: object
        dekallm:
          additionalProperties:
            nullable: true
          type: object
        digitalocean:
          additionalProperties:
            nullable: true
          type: object
        enfer:
          additionalProperties:
            nullable: true
          type: object
        fake-provider:
          additionalProperties:
            nullable: true
          type: object
        featherless:
          additionalProperties:
            nullable: true
          type: object
        fireworks:
          additionalProperties:
            nullable: true
          type: object
        friendli:
          additionalProperties:
            nullable: true
          type: object
        gmicloud:
          additionalProperties:
            nullable: true
          type: object
        google-ai-studio:
          additionalProperties:
            nullable: true
          type: object
        google-vertex:
          additionalProperties:
            nullable: true
          type: object
        gopomelo:
          additionalProperties:
            nullable: true
          type: object
        groq:
          additionalProperties:
            nullable: true
          type: object
        huggingface:
          additionalProperties:
            nullable: true
          type: object
        hyperbolic:
          additionalProperties:
            nullable: true
          type: object
        hyperbolic-quantized:
          additionalProperties:
            nullable: true
          type: object
        inception:
          additionalProperties:
            nullable: true
          type: object
        inceptron:
          additionalProperties:
            nullable: true
          type: object
        inference-net:
          additionalProperties:
            nullable: true
          type: object
        infermatic:
          additionalProperties:
            nullable: true
          type: object
        inflection:
          additionalProperties:
            nullable: true
          type: object
        inocloud:
          additionalProperties:
            nullable: true
          type: object
        io-net:
          additionalProperties:
            nullable: true
          type: object
        ionstream:
          additionalProperties:
            nullable: true
          type: object
        klusterai:
          additionalProperties:
            nullable: true
          type: object
        lambda:
          additionalProperties:
            nullable: true
          type: object
        lepton:
          additionalProperties:
            nullable: true
          type: object
        liquid:
          additionalProperties:
            nullable: true
          type: object
        lynn:
          additionalProperties:
            nullable: true
          type: object
        lynn-private:
          additionalProperties:
            nullable: true
          type: object
        mancer:
          additionalProperties:
            nullable: true
          type: object
        mancer-old:
          additionalProperties:
            nullable: true
          type: object
        mara:
          additionalProperties:
            nullable: true
          type: object
        meta:
          additionalProperties:
            nullable: true
          type: object
        minimax:
          additionalProperties:
            nullable: true
          type: object
        mistral:
          additionalProperties:
            nullable: true
          type: object
        modal:
          additionalProperties:
            nullable: true
          type: object
        modelrun:
          additionalProperties:
            nullable: true
          type: object
        modular:
          additionalProperties:
            nullable: true
          type: object
        moonshotai:
          additionalProperties:
            nullable: true
          type: object
        morph:
          additionalProperties:
            nullable: true
          type: object
        ncompass:
          additionalProperties:
            nullable: true
          type: object
        nebius:
          additionalProperties:
            nullable: true
          type: object
        nex-agi:
          additionalProperties:
            nullable: true
          type: object
        nextbit:
          additionalProperties:
            nullable: true
          type: object
        nineteen:
          additionalProperties:
            nullable: true
          type: object
        novita:
          additionalProperties:
            nullable: true
          type: object
        nvidia:
          additionalProperties:
            nullable: true
          type: object
        octoai:
          additionalProperties:
            nullable: true
          type: object
        open-inference:
          additionalProperties:
            nullable: true
          type: object
        openai:
          additionalProperties:
            nullable: true
          type: object
        parasail:
          additionalProperties:
            nullable: true
          type: object
        perceptron:
          additionalProperties:
            nullable: true
          type: object
        perplexity:
          additionalProperties:
            nullable: true
          type: object
        phala:
          additionalProperties:
            nullable: true
          type: object
        poolside:
          additionalProperties:
            nullable: true
          type: object
        recraft:
          additionalProperties:
            nullable: true
          type: object
        recursal:
          additionalProperties:
            nullable: true
          type: object
        reflection:
          additionalProperties:
            nullable: true
          type: object
        reka:
          additionalProperties:
            nullable: true
          type: object
        relace:
          additionalProperties:
            nullable: true
          type: object
        replicate:
          additionalProperties:
            nullable: true
          type: object
        sambanova:
          additionalProperties:
            nullable: true
          type: object
        sambanova-cloaked:
          additionalProperties:
            nullable: true
          type: object
        seed:
          additionalProperties:
            nullable: true
          type: object
        sf-compute:
          additionalProperties:
            nullable: true
          type: object
        siliconflow:
          additionalProperties:
            nullable: true
          type: object
        sourceful:
          additionalProperties:
            nullable: true
          type: object
        stealth:
          additionalProperties:
            nullable: true
          type: object
        stepfun:
          additionalProperties:
            nullable: true
          type: object
        streamlake:
          additionalProperties:
            nullable: true
          type: object
        switchpoint:
          additionalProperties:
            nullable: true
          type: object
        targon:
          additionalProperties:
            nullable: true
          type: object
        together:
          additionalProperties:
            nullable: true
          type: object
        together-lite:
          additionalProperties:
            nullable: true
          type: object
        ubicloud:
          additionalProperties:
            nullable: true
          type: object
        upstage:
          additionalProperties:
            nullable: true
          type: object
        venice:
          additionalProperties:
            nullable: true
          type: object
        wafer:
          additionalProperties:
            nullable: true
          type: object
        wandb:
          additionalProperties:
            nullable: true
          type: object
        xai:
          additionalProperties:
            nullable: true
          type: object
        xiaomi:
          additionalProperties:
            nullable: true
          type: object
        z-ai:
          additionalProperties:
            nullable: true
          type: object
      type: object
    ProviderOverloadedResponse:
      description: Provider Overloaded - Provider is temporarily overloaded
      example:
        error:
          code: 529
          message: Provider returned error
      properties:
        error:
          $ref: '#/components/schemas/ProviderOverloadedResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    ProviderOverloadedResponseErrorData:
      description: Error data for ProviderOverloadedResponse
      example:
        code: 529
        message: Provider returned error
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    ProviderPreferences:
      additionalProperties: false
      description: When multiple model providers are available, optionally indicate your routing preference.
      example:
        allow_fallbacks: true
      nullable: true
      properties:
        allow_fallbacks:
          description: >
            Whether to allow backup providers to serve requests

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

            - false: use only the primary/custom provider, and return the upstream error if it's unavailable.

          nullable: true
          type: boolean
        data_collection:
          description: >-
            Data collection setting. If no available model provider meets the requirement, your request will return an error.

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


            - deny: use only providers which do not collect user data.
          enum:
            - deny
            - allow
            - null
          example: allow
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        enforce_distillable_text:
          description: >-
            Whether to restrict routing to only models that allow text distillation. When true, only models where the author has allowed distillation will be used.
          example: true
          nullable: true
          type: boolean
        ignore:
          description: >-
            List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          nullable: true
          type: array
        max_price:
          description: >-
            The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion.
          properties:
            audio:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per audio unit
            completion:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per million completion tokens
            image:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per image
            prompt:
              $ref: '#/components/schemas/BigNumberUnion'
            request:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per request
          type: object
        only:
          description: >-
            List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          nullable: true
          type: array
        order:
          description: >-
            An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message.
          example:
            - openai
            - anthropic
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          nullable: true
          type: array
        preferred_max_latency:
          $ref: '#/components/schemas/PreferredMaxLatency'
        preferred_min_throughput:
          $ref: '#/components/schemas/PreferredMinThroughput'
        quantizations:
          description: A list of quantization levels to filter the provider by.
          items:
            $ref: '#/components/schemas/Quantization'
          nullable: true
          type: array
        require_parameters:
          description: >-
            Whether to filter providers to only those that support the parameters you've provided. If this setting is omitted or set to false, then providers will receive only the parameters they support, and ignore the rest.
          nullable: true
          type: boolean
        sort:
          anyOf:
            - $ref: '#/components/schemas/ProviderSort'
            - $ref: '#/components/schemas/ProviderSortConfig'
            - nullable: true
          description: >-
            The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed.
          example: price
        zdr:
          description: >-
            Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do not retain prompts will be used.
          example: true
          nullable: true
          type: boolean
      type: object
    ProviderResponse:
      description: Details of a provider response for a generation attempt
      example:
        endpoint_id: ep_abc123
        id: chatcmpl-abc123
        is_byok: false
        latency: 1200
        model_permaslug: openai/gpt-4
        provider_name: OpenAI
        status: 200
      properties:
        endpoint_id:
          description: Internal endpoint identifier
          example: ep_abc123
          type: string
        id:
          description: Upstream provider response identifier
          example: chatcmpl-abc123
          type: string
        is_byok:
          description: Whether the request used a bring-your-own-key
          example: false
          type: boolean
        latency:
          description: Response latency in milliseconds
          example: 1200
          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
            - Meta
            - Modal
            - Nineteen
            - OctoAI
            - Recursal
            - Reflection
            - Replicate
            - SambaNova 2
            - SF Compute
            - Targon
            - Together 2
            - Ubicloud
            - 01.AI
            - AkashML
            - AI21
            - AionLabs
            - Alibaba
            - Ambient
            - Baidu
            - Amazon Bedrock
            - Amazon Nova
            - Anthropic
            - Arcee AI
            - AtlasCloud
            - Avian
            - Azure
            - BaseTen
            - BytePlus
            - Black Forest Labs
            - Cerebras
            - Chutes
            - Cirrascale
            - Clarifai
            - Cloudflare
            - Cohere
            - Crucible
            - Crusoe
            - Darkbloom
            - Decart
            - DeepInfra
            - DeepSeek
            - DekaLLM
            - DigitalOcean
            - Featherless
            - Fireworks
            - Friendli
            - GMICloud
            - Google
            - Google AI Studio
            - Groq
            - Inception
            - Inceptron
            - InferenceNet
            - Ionstream
            - Infermatic
            - Io Net
            - Inflection
            - Liquid
            - Mara
            - Mancer 2
            - Minimax
            - ModelRun
            - Mistral
            - Modular
            - Moonshot AI
            - Morph
            - NCompass
            - Nebius
            - Nex AGI
            - NextBit
            - Novita
            - Nvidia
            - OpenAI
            - OpenInference
            - Parasail
            - Poolside
            - Perceptron
            - Perplexity
            - Phala
            - Recraft
            - Reka
            - Relace
            - SambaNova
            - Seed
            - SiliconFlow
            - Sourceful
            - StepFun
            - Stealth
            - StreamLake
            - Switchpoint
            - Together
            - Upstage
            - Venice
            - Wafer
            - WandB
            - Xiaomi
            - xAI
            - Z.AI
            - FakeProvider
          example: OpenAI
          type: string
          x-speakeasy-unknown-values: allow
        status:
          description: HTTP status code from the provider
          example: 200
          nullable: true
          type: integer
      required:
        - status
      type: object
    ProviderSort:
      description: The provider sorting strategy (price, throughput, latency)
      enum:
        - price
        - throughput
        - latency
        - exacto
      example: price
      type: string
      x-speakeasy-unknown-values: allow
    ProviderSortConfig:
      description: The provider sorting strategy (price, throughput, latency)
      example:
        by: price
        partition: model
      properties:
        by:
          description: The provider sorting strategy (price, throughput, latency)
          enum:
            - price
            - throughput
            - latency
            - exacto
            - null
          example: price
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        partition:
          description: >-
            Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model.
          enum:
            - model
            - none
            - null
          example: model
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
      type: object
    PublicEndpoint:
      description: Information about a specific model endpoint
      example:
        context_length: 8192
        latency_last_30m:
          p50: 0.25
          p75: 0.35
          p90: 0.48
          p99: 0.85
        max_completion_tokens: 4096
        max_prompt_tokens: 8192
        model_id: openai/gpt-4
        model_name: GPT-4
        name: 'OpenAI: GPT-4'
        pricing:
          completion: '0.00006'
          image: '0'
          prompt: '0.00003'
          request: '0'
        provider_name: OpenAI
        quantization: fp16
        status: 0
        supported_parameters:
          - temperature
          - top_p
          - max_tokens
        supports_implicit_caching: true
        tag: openai
        throughput_last_30m:
          p50: 45.2
          p75: 38.5
          p90: 28.3
          p99: 15.1
        uptime_last_1d: 99.8
        uptime_last_30m: 99.5
        uptime_last_5m: 100
      properties:
        context_length:
          type: integer
        latency_last_30m:
          $ref: '#/components/schemas/PercentileStats'
        max_completion_tokens:
          nullable: true
          type: integer
        max_prompt_tokens:
          nullable: true
          type: integer
        model_id:
          description: The unique identifier for the model (permaslug)
          example: openai/gpt-4
          type: string
        model_name:
          type: string
        name:
          type: string
        pricing:
          properties:
            audio:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            audio_output:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            completion:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            discount:
              format: double
              type: number
            image:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            image_output:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            image_token:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            input_audio_cache:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            input_cache_read:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            input_cache_write:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            internal_reasoning:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            prompt:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            request:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            web_search:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
          required:
            - prompt
            - completion
          type: object
        provider_name:
          $ref: '#/components/schemas/ProviderName'
        quantization:
          allOf:
            - $ref: '#/components/schemas/Quantization'
            - nullable: true
        status:
          $ref: '#/components/schemas/EndpointStatus'
        supported_parameters:
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        supports_implicit_caching:
          type: boolean
        tag:
          type: string
        throughput_last_30m:
          allOf:
            - $ref: '#/components/schemas/PercentileStats'
            - description: >-
                Throughput percentiles in tokens per second over the last 30 minutes. Throughput measures output token generation speed. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests.
        uptime_last_1d:
          description: >-
            Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data.
          format: double
          nullable: true
          type: number
        uptime_last_30m:
          format: double
          nullable: true
          type: number
        uptime_last_5m:
          description: >-
            Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data.
          format: double
          nullable: true
          type: number
      required:
        - name
        - model_id
        - model_name
        - context_length
        - pricing
        - provider_name
        - tag
        - quantization
        - max_completion_tokens
        - max_prompt_tokens
        - supported_parameters
        - uptime_last_30m
        - uptime_last_5m
        - uptime_last_1d
        - supports_implicit_caching
        - latency_last_30m
        - throughput_last_30m
      type: object
    PublicPricing:
      description: Pricing information for the model
      example:
        completion: '0.00006'
        image: '0'
        prompt: '0.00003'
        request: '0'
      properties:
        audio:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        audio_output:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        completion:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        discount:
          format: double
          type: number
        image:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        image_output:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        image_token:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        input_audio_cache:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        input_cache_read:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        input_cache_write:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        internal_reasoning:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        prompt:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        request:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        web_search:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
      required:
        - prompt
        - completion
      type: object
    Quantization:
      enum:
        - int4
        - int8
        - fp4
        - fp6
        - fp8
        - fp16
        - bf16
        - fp32
        - unknown
      example: fp16
      type: string
      x-speakeasy-unknown-values: allow
    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:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningConfig'
        - nullable: true
          properties:
            enabled:
              nullable: true
              type: boolean
            max_tokens:
              nullable: true
              type: integer
          type: object
      description: Configuration for reasoning mode in the response
      example:
        enabled: true
        summary: auto
    ReasoningDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningDeltaEvent'
        - properties: {}
          type: object
      description: Event emitted when reasoning text delta is streamed
      example:
        content_index: 0
        delta: First, we need
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.reasoning_text.delta
    ReasoningDetailEncrypted:
      description: Reasoning detail encrypted schema
      example:
        data: encrypted data
        type: reasoning.encrypted
      properties:
        data:
          type: string
        format:
          $ref: '#/components/schemas/ReasoningFormat'
        id:
          nullable: true
          type: string
        index:
          type: integer
        type:
          enum:
            - reasoning.encrypted
          type: string
      required:
        - type
        - data
      type: object
    ReasoningDetailSummary:
      description: Reasoning detail summary schema
      example:
        summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
        type: reasoning.summary
      properties:
        format:
          $ref: '#/components/schemas/ReasoningFormat'
        id:
          nullable: true
          type: string
        index:
          type: integer
        summary:
          type: string
        type:
          enum:
            - reasoning.summary
          type: string
      required:
        - type
        - summary
      type: object
    ReasoningDetailText:
      description: Reasoning detail text schema
      example:
        signature: signature
        text: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
        type: reasoning.text
      properties:
        format:
          $ref: '#/components/schemas/ReasoningFormat'
        id:
          nullable: true
          type: string
        index:
          type: integer
        signature:
          nullable: true
          type: string
        text:
          nullable: true
          type: string
        type:
          enum:
            - reasoning.text
          type: string
      required:
        - type
      type: object
    ReasoningDetailUnion:
      description: Reasoning detail union schema
      discriminator:
        mapping:
          reasoning.encrypted: '#/components/schemas/ReasoningDetailEncrypted'
          reasoning.summary: '#/components/schemas/ReasoningDetailSummary'
          reasoning.text: '#/components/schemas/ReasoningDetailText'
        propertyName: type
      example:
        summary: The model analyzed the problem by first identifying key constraints, then evaluating possible solutions...
        type: reasoning.summary
      oneOf:
        - $ref: '#/components/schemas/ReasoningDetailSummary'
        - $ref: '#/components/schemas/ReasoningDetailEncrypted'
        - $ref: '#/components/schemas/ReasoningDetailText'
    ReasoningDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningDoneEvent'
        - properties: {}
          type: object
      description: Event emitted when reasoning text streaming is complete
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        sequence_number: 6
        text: First, we need to identify the key components and then combine them logically.
        type: response.reasoning_text.done
    ReasoningEffort:
      enum:
        - xhigh
        - high
        - medium
        - low
        - minimal
        - none
        - null
      example: medium
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ReasoningFormat:
      enum:
        - unknown
        - openai-responses-v1
        - azure-openai-responses-v1
        - xai-responses-v1
        - anthropic-claude-v1
        - google-gemini-v1
        - null
      example: unknown
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ReasoningItem:
      allOf:
        - $ref: '#/components/schemas/OutputItemReasoning'
        - properties:
            content:
              items:
                $ref: '#/components/schemas/ReasoningTextContent'
              nullable: true
              type: array
            format:
              $ref: '#/components/schemas/ReasoningFormat'
            signature:
              nullable: true
              type: string
          type: object
      description: Reasoning output item with signature and format extensions
      example:
        id: reasoning-abc123
        summary:
          - text: Step by step analysis
            type: summary_text
        type: reasoning
    ReasoningSummaryPartAddedEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningSummaryPartAddedEvent'
        - properties: {}
          type: object
      description: Event emitted when a reasoning summary part is added
      example:
        item_id: item-1
        output_index: 0
        part:
          text: ''
          type: summary_text
        sequence_number: 3
        summary_index: 0
        type: response.reasoning_summary_part.added
    ReasoningSummaryPartDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningSummaryPartDoneEvent'
        - properties: {}
          type: object
      description: Event emitted when a reasoning summary part is complete
      example:
        item_id: item-1
        output_index: 0
        part:
          text: Analyzing the problem step by step to find the optimal solution.
          type: summary_text
        sequence_number: 7
        summary_index: 0
        type: response.reasoning_summary_part.done
    ReasoningSummaryText:
      example:
        text: Analyzed the problem using first principles
        type: summary_text
      properties:
        text:
          type: string
        type:
          enum:
            - summary_text
          type: string
      required:
        - type
        - text
      type: object
    ReasoningSummaryTextDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningSummaryTextDeltaEvent'
        - properties: {}
          type: object
      description: Event emitted when reasoning summary text delta is streamed
      example:
        delta: Analyzing
        item_id: item-1
        output_index: 0
        sequence_number: 4
        summary_index: 0
        type: response.reasoning_summary_text.delta
    ReasoningSummaryTextDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseReasoningSummaryTextDoneEvent'
        - properties: {}
          type: object
      description: Event emitted when reasoning summary text streaming is complete
      example:
        item_id: item-1
        output_index: 0
        sequence_number: 6
        summary_index: 0
        text: Analyzing the problem step by step to find the optimal solution.
        type: response.reasoning_summary_text.done
    ReasoningSummaryVerbosity:
      enum:
        - auto
        - concise
        - detailed
        - null
      example: auto
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ReasoningTextContent:
      example:
        text: Let me think step by step about this problem...
        type: reasoning_text
      properties:
        text:
          type: string
        type:
          enum:
            - reasoning_text
          type: string
      required:
        - type
        - text
      type: object
    RefusalDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseRefusalDeltaEvent'
        - properties: {}
          type: object
      description: Event emitted when a refusal delta is streamed
      example:
        content_index: 0
        delta: I'm sorry
        item_id: item-1
        output_index: 0
        sequence_number: 4
        type: response.refusal.delta
    RefusalDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseRefusalDoneEvent'
        - properties: {}
          type: object
      description: Event emitted when refusal streaming is complete
      example:
        content_index: 0
        item_id: item-1
        output_index: 0
        refusal: I'm sorry, but I can't assist with that request.
        sequence_number: 6
        type: response.refusal.done
    RequestMetadata:
      additionalProperties:
        maxLength: 512
        type: string
      description: >-
        Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed.
      example:
        session_id: abc-def-ghi
        user_id: '123'
      nullable: true
      type: object
    RequestTimeoutResponse:
      description: Request Timeout - Operation exceeded time limit
      example:
        error:
          code: 408
          message: Operation timed out. Please try again later.
      properties:
        error:
          $ref: '#/components/schemas/RequestTimeoutResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    RequestTimeoutResponseErrorData:
      description: Error data for RequestTimeoutResponse
      example:
        code: 408
        message: Operation timed out. Please try again later.
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    ResponseHealingPlugin:
      example:
        enabled: true
        id: response-healing
      properties:
        enabled:
          description: Set to false to disable the response-healing plugin for this request. Defaults to true.
          type: boolean
        id:
          enum:
            - response-healing
          type: string
      required:
        - id
      type: object
    ResponseIncludesEnum:
      enum:
        - file_search_call.results
        - message.input_image.image_url
        - computer_call_output.output.image_url
        - reasoning.encrypted_content
        - code_interpreter_call.outputs
      example: file_search_call.results
      type: string
      x-speakeasy-unknown-values: allow
    ResponseOutputText:
      example:
        annotations:
          - end_index: 42
            start_index: 0
            title: Paris - Wikipedia
            type: url_citation
            url: https://en.wikipedia.org/wiki/Paris
        text: The capital of France is Paris.
        type: output_text
      properties:
        annotations:
          items:
            $ref: '#/components/schemas/OpenAIResponsesAnnotation'
          type: array
        logprobs:
          items:
            properties:
              bytes:
                items:
                  type: integer
                type: array
              logprob:
                format: double
                type: number
              token:
                type: string
              top_logprobs:
                items:
                  properties:
                    bytes:
                      items:
                        type: integer
                      type: array
                    logprob:
                      format: double
                      type: number
                    token:
                      type: string
                  required:
                    - token
                    - bytes
                    - logprob
                  type: object
                type: array
            required:
              - token
              - bytes
              - logprob
              - top_logprobs
            type: object
          type: array
        text:
          type: string
        type:
          enum:
            - output_text
          type: string
      required:
        - type
        - text
      type: object
    ResponsesErrorField:
      description: Error information returned from the API
      example:
        code: rate_limit_exceeded
        message: Rate limit exceeded. Please try again later.
      nullable: true
      properties:
        code:
          enum:
            - server_error
            - rate_limit_exceeded
            - invalid_prompt
            - vector_store_timeout
            - invalid_image
            - invalid_image_format
            - invalid_base64_image
            - invalid_image_url
            - image_too_large
            - image_too_small
            - image_parse_error
            - image_content_policy_violation
            - invalid_image_mode
            - image_file_too_large
            - unsupported_image_media_type
            - empty_image_file
            - failed_to_download_image
            - image_file_not_found
          type: string
          x-speakeasy-unknown-values: allow
        message:
          type: string
      required:
        - code
        - message
      type: object
    ResponsesRequest:
      description: Request schema for Responses endpoint
      example:
        input:
          - content: Hello, how are you?
            role: user
            type: message
        model: anthropic/claude-4.5-sonnet-20250929
        temperature: 0.7
        tools:
          - description: Get the current weather in a given location
            name: get_current_weather
            parameters:
              properties:
                location:
                  type: string
              type: object
            type: function
        top_p: 0.9
      properties:
        background:
          nullable: true
          type: boolean
        cache_control:
          $ref: '#/components/schemas/AnthropicCacheControlDirective'
        frequency_penalty:
          format: double
          nullable: true
          type: number
        image_config:
          $ref: '#/components/schemas/ImageConfig'
        include:
          items:
            $ref: '#/components/schemas/ResponseIncludesEnum'
          nullable: true
          type: array
        input:
          $ref: '#/components/schemas/Inputs'
        instructions:
          nullable: true
          type: string
        max_output_tokens:
          nullable: true
          type: integer
        max_tool_calls:
          nullable: true
          type: integer
        metadata:
          $ref: '#/components/schemas/RequestMetadata'
        modalities:
          description: Output modalities for the response. Supported values are "text" and "image".
          example:
            - text
            - image
          items:
            $ref: '#/components/schemas/OutputModalityEnum'
          type: array
        model:
          type: string
        models:
          items:
            type: string
          type: array
        parallel_tool_calls:
          nullable: true
          type: boolean
        plugins:
          description: Plugins you want to enable for this request, including their settings.
          items:
            discriminator:
              mapping:
                auto-router: '#/components/schemas/AutoRouterPlugin'
                context-compression: '#/components/schemas/ContextCompressionPlugin'
                file-parser: '#/components/schemas/FileParserPlugin'
                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/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
          nullable: true
          type: number
        previous_response_id:
          nullable: true
          type: string
        prompt:
          $ref: '#/components/schemas/StoredPromptTemplate'
        prompt_cache_key:
          nullable: true
          type: string
        provider:
          $ref: '#/components/schemas/ProviderPreferences'
        reasoning:
          $ref: '#/components/schemas/ReasoningConfig'
        route:
          $ref: '#/components/schemas/DeprecatedRoute'
        safety_identifier:
          nullable: true
          type: string
        service_tier:
          default: auto
          enum:
            - auto
            - default
            - flex
            - priority
            - scale
            - null
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
        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
          nullable: true
          type: number
        text:
          $ref: '#/components/schemas/TextExtendedConfig'
        tool_choice:
          $ref: '#/components/schemas/OpenAIResponsesToolChoice'
        tools:
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/FunctionTool'
                  - properties: {}
                    type: object
                description: Function tool definition
                example:
                  description: Get the current weather in a location
                  name: get_weather
                  parameters:
                    properties:
                      location:
                        description: The city and state
                        type: string
                      unit:
                        enum:
                          - celsius
                          - fahrenheit
                        type: string
                        x-speakeasy-unknown-values: allow
                    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/AdvisorServerTool_OpenRouter'
              - $ref: '#/components/schemas/DatetimeServerTool'
              - $ref: '#/components/schemas/FusionServerTool_OpenRouter'
              - $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
              - $ref: '#/components/schemas/ChatSearchModelsServerTool'
              - $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:
          nullable: true
          type: integer
        top_p:
          format: double
          nullable: true
          type: number
        trace:
          $ref: '#/components/schemas/TraceConfig'
        truncation:
          $ref: '#/components/schemas/OpenAIResponsesTruncation'
        user:
          description: >-
            A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters.
          maxLength: 256
          type: string
      type: object
    ResponsesStreamingResponse:
      example:
        data:
          delta: Hello
          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:
        nullable: true
      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
      x-speakeasy-unknown-values: allow
    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
      x-speakeasy-unknown-values: allow
    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 and Parallel 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. Overridden by `max_characters` when both are set.
      enum:
        - low
        - medium
        - high
      example: medium
      type: string
      x-speakeasy-unknown-values: allow
    ServiceTier:
      enum:
        - auto
        - default
        - flex
        - priority
        - scale
        - null
      example: default
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    ServiceUnavailableResponse:
      description: Service Unavailable - Service temporarily unavailable
      example:
        error:
          code: 503
          message: Service temporarily unavailable
      properties:
        error:
          $ref: '#/components/schemas/ServiceUnavailableResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    ServiceUnavailableResponseErrorData:
      description: Error data for ServiceUnavailableResponse
      example:
        code: 503
        message: Service temporarily unavailable
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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:
              nullable: true
              type: integer
            timeout_ms:
              nullable: true
              type: integer
          required:
            - commands
          type: object
        call_id:
          type: string
        environment:
          nullable: true
        id:
          nullable: true
          type: string
        status:
          allOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - nullable: true
        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:
          nullable: true
          type: string
        max_output_length:
          nullable: true
          type: integer
        output:
          items:
            additionalProperties:
              nullable: true
            properties:
              content:
                nullable: true
                type: string
              exit_code:
                nullable: true
                type: integer
              type:
                type: string
            required:
              - type
            type: object
          type: array
        status:
          allOf:
            - $ref: '#/components/schemas/ToolCallStatus'
            - nullable: true
        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
      x-speakeasy-unknown-values: allow
    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
      x-speakeasy-unknown-values: allow
    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: elevenlabs/eleven-turbo-v2
        response_format: pcm
        speed: 1
        voice: alloy
      properties:
        input:
          description: Text to synthesize
          example: Hello world
          type: string
        model:
          description: TTS model identifier
          example: elevenlabs/eleven-turbo-v2
          type: string
        provider:
          description: Provider-specific passthrough configuration
          properties:
            options:
              $ref: '#/components/schemas/ProviderOptions'
          type: object
        response_format:
          default: pcm
          description: Audio output format
          enum:
            - mp3
            - pcm
          example: pcm
          type: string
          x-speakeasy-unknown-values: allow
        speed:
          description: >-
            Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers.
          example: 1
          format: double
          type: number
        voice:
          description: Voice identifier (provider-specific).
          example: alloy
          type: string
      required:
        - model
        - input
        - voice
      type: object
    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`.
      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
      nullable: true
      properties:
        id:
          type: string
        variables:
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/InputText'
              - $ref: '#/components/schemas/InputImage'
              - $ref: '#/components/schemas/InputFile'
          nullable: true
          type: object
      required:
        - id
      type: object
    StreamEvents:
      description: Union of all possible event types emitted during response streaming
      discriminator:
        mapping:
          error: '#/components/schemas/ErrorEvent'
          response.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.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:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: in_progress
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 0
        type: response.created
      oneOf:
        - $ref: '#/components/schemas/OpenResponsesCreatedEvent'
        - $ref: '#/components/schemas/OpenResponsesInProgressEvent'
        - $ref: '#/components/schemas/StreamEventsResponseCompleted'
        - $ref: '#/components/schemas/StreamEventsResponseIncomplete'
        - $ref: '#/components/schemas/StreamEventsResponseFailed'
        - $ref: '#/components/schemas/ErrorEvent'
        - $ref: '#/components/schemas/StreamEventsResponseOutputItemAdded'
        - $ref: '#/components/schemas/StreamEventsResponseOutputItemDone'
        - $ref: '#/components/schemas/ContentPartAddedEvent'
        - $ref: '#/components/schemas/ContentPartDoneEvent'
        - $ref: '#/components/schemas/TextDeltaEvent'
        - $ref: '#/components/schemas/TextDoneEvent'
        - $ref: '#/components/schemas/RefusalDeltaEvent'
        - $ref: '#/components/schemas/RefusalDoneEvent'
        - $ref: '#/components/schemas/AnnotationAddedEvent'
        - $ref: '#/components/schemas/FunctionCallArgsDeltaEvent'
        - $ref: '#/components/schemas/FunctionCallArgsDoneEvent'
        - $ref: '#/components/schemas/ReasoningDeltaEvent'
        - $ref: '#/components/schemas/ReasoningDoneEvent'
        - $ref: '#/components/schemas/ReasoningSummaryPartAddedEvent'
        - $ref: '#/components/schemas/ReasoningSummaryPartDoneEvent'
        - $ref: '#/components/schemas/ReasoningSummaryTextDeltaEvent'
        - $ref: '#/components/schemas/ReasoningSummaryTextDoneEvent'
        - $ref: '#/components/schemas/ImageGenCallInProgressEvent'
        - $ref: '#/components/schemas/ImageGenCallGeneratingEvent'
        - $ref: '#/components/schemas/ImageGenCallPartialImageEvent'
        - $ref: '#/components/schemas/ImageGenCallCompletedEvent'
        - $ref: '#/components/schemas/WebSearchCallInProgressEvent'
        - $ref: '#/components/schemas/WebSearchCallSearchingEvent'
        - $ref: '#/components/schemas/WebSearchCallCompletedEvent'
        - $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'
    StreamEventsResponseCompleted:
      allOf:
        - $ref: '#/components/schemas/CompletedEvent'
        - properties:
            response:
              $ref: '#/components/schemas/OpenResponsesResult'
          type: object
      description: Event emitted when a response has completed successfully
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: completed
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 10
        type: response.completed
    StreamEventsResponseFailed:
      allOf:
        - $ref: '#/components/schemas/FailedEvent'
        - properties:
            response:
              $ref: '#/components/schemas/OpenResponsesResult'
          type: object
      description: Event emitted when a response has failed
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: failed
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 3
        type: response.failed
    StreamEventsResponseIncomplete:
      allOf:
        - $ref: '#/components/schemas/IncompleteEvent'
        - properties:
            response:
              $ref: '#/components/schemas/OpenResponsesResult'
          type: object
      description: Event emitted when a response is incomplete
      example:
        response:
          created_at: 1704067200
          error: null
          id: resp-abc123
          incomplete_details: null
          instructions: null
          max_output_tokens: null
          metadata: null
          model: gpt-4
          object: response
          output: []
          parallel_tool_calls: true
          status: incomplete
          temperature: null
          tool_choice: auto
          tools: []
          top_p: null
        sequence_number: 5
        type: response.incomplete
    StreamEventsResponseOutputItemAdded:
      allOf:
        - $ref: '#/components/schemas/OutputItemAddedEvent'
        - properties:
            item:
              $ref: '#/components/schemas/OutputItems'
          type: object
      description: Event emitted when a new output item is added to the response
      example:
        item:
          content: []
          id: item-1
          role: assistant
          status: in_progress
          type: message
        output_index: 0
        sequence_number: 2
        type: response.output_item.added
    StreamEventsResponseOutputItemDone:
      allOf:
        - $ref: '#/components/schemas/OutputItemDoneEvent'
        - properties:
            item:
              $ref: '#/components/schemas/OutputItems'
          type: object
      description: Event emitted when an output item is complete
      example:
        item:
          content:
            - annotations: []
              text: Hello! How can I help you?
              type: output_text
          id: item-1
          role: assistant
          status: completed
          type: message
        output_index: 0
        sequence_number: 8
        type: response.output_item.done
    StreamLogprob:
      allOf:
        - $ref: '#/components/schemas/OpenResponsesLogProbs'
        - properties:
            top_logprobs:
              items:
                $ref: '#/components/schemas/StreamLogprobTopLogprob'
              type: array
          type: object
      description: Log probability information for a token
      example:
        bytes:
          - 72
          - 101
          - 108
          - 108
          - 111
        logprob: -0.5
        token: Hello
        top_logprobs: []
    StreamLogprobTopLogprob:
      allOf:
        - $ref: '#/components/schemas/OpenResponsesTopLogprobs'
        - properties: {}
          type: object
      description: Alternative token with its log probability
      example:
        bytes:
          - 72
          - 101
          - 108
          - 108
          - 111
        logprob: -0.5
        token: Hello
    STTInputAudio:
      description: Base64-encoded audio to transcribe
      example:
        data: UklGRiQA...
        format: wav
      properties:
        data:
          description: Base64-encoded audio data (raw bytes, not a data URI)
          type: string
        format:
          description: Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider.
          type: string
      required:
        - data
        - format
      type: object
    STTRequest:
      description: Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio.
      example:
        input_audio:
          data: UklGRiQA...
          format: wav
        language: en
        model: openai/whisper-large-v3
      properties:
        input_audio:
          $ref: '#/components/schemas/STTInputAudio'
        language:
          description: ISO-639-1 language code (e.g., "en", "ja"). Auto-detected if omitted.
          example: en
          type: string
        model:
          description: STT model identifier
          example: openai/whisper-large-v3
          type: string
        provider:
          description: Provider-specific passthrough configuration
          properties:
            options:
              $ref: '#/components/schemas/ProviderOptions'
          type: object
        temperature:
          description: Sampling temperature for transcription
          example: 0
          format: double
          type: number
      required:
        - model
        - input_audio
      type: object
    STTResponse:
      description: STT response containing transcribed text and optional usage statistics
      example:
        text: Hello, this is a test of OpenAI speech-to-text transcription.
        usage:
          cost: 0.000508
          input_tokens: 83
          output_tokens: 30
          seconds: 9.2
          total_tokens: 113
      properties:
        text:
          description: The transcribed text
          example: >-
            Hello, this is a test of OpenAI speech-to-text transcription. The weather is sunny today and the temperature is around 72 degrees.
          type: string
        usage:
          $ref: '#/components/schemas/STTUsage'
      required:
        - text
      type: object
    STTUsage:
      description: Aggregated usage statistics for the request
      example:
        cost: 0.000508
        input_tokens: 83
        output_tokens: 30
        seconds: 9.2
        total_tokens: 113
      properties:
        cost:
          description: Total cost of the request in USD
          example: 0.000508
          format: double
          type: number
        input_tokens:
          description: Number of input tokens billed for this request
          example: 83
          type: integer
        output_tokens:
          description: Number of output tokens generated
          example: 30
          type: integer
        seconds:
          description: Duration of the input audio in seconds
          example: 9.2
          format: double
          type: number
        total_tokens:
          description: Total number of tokens used (input + output)
          example: 113
          type: integer
      type: object
    TextConfig:
      description: Text output configuration including format and verbosity
      example:
        format:
          type: text
        verbosity: medium
      properties:
        format:
          $ref: '#/components/schemas/Formats'
        verbosity:
          enum:
            - high
            - low
            - medium
            - null
          nullable: true
          type: string
          x-speakeasy-unknown-values: allow
      type: object
    TextDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/BaseTextDeltaEvent'
        - properties:
            logprobs:
              items:
                $ref: '#/components/schemas/StreamLogprob'
              type: array
          type: object
      description: Event emitted when a text delta is streamed
      example:
        content_index: 0
        delta: Hello
        item_id: item-1
        logprobs: []
        output_index: 0
        sequence_number: 4
        type: response.output_text.delta
    TextDoneEvent:
      allOf:
        - $ref: '#/components/schemas/BaseTextDoneEvent'
        - properties:
            logprobs:
              items:
                $ref: '#/components/schemas/StreamLogprob'
              type: array
          type: object
      description: Event emitted when text streaming is complete
      example:
        content_index: 0
        item_id: item-1
        logprobs: []
        output_index: 0
        sequence_number: 6
        text: Hello! How can I help you?
        type: response.output_text.done
    TextExtendedConfig:
      allOf:
        - $ref: '#/components/schemas/TextConfig'
        - properties:
            verbosity:
              enum:
                - low
                - medium
                - high
                - xhigh
                - max
                - null
              nullable: true
              type: string
              x-speakeasy-unknown-values: allow
          type: object
      description: Text output configuration including format and verbosity
      example:
        format:
          type: text
    ToolCallStatus:
      enum:
        - in_progress
        - completed
        - incomplete
      example: completed
      type: string
      x-speakeasy-unknown-values: allow
    ToolChoiceAllowed:
      description: Constrains the model to a pre-defined set of allowed tools
      example:
        mode: auto
        tools:
          - name: get_weather
            type: function
        type: allowed_tools
      properties:
        mode:
          anyOf:
            - enum:
                - auto
              type: string
            - enum:
                - required
              type: string
        tools:
          items:
            additionalProperties:
              nullable: true
            type: object
          type: array
        type:
          enum:
            - allowed_tools
          type: string
      required:
        - type
        - mode
        - tools
      type: object
    TooManyRequestsResponse:
      description: Too Many Requests - Rate limit exceeded
      example:
        error:
          code: 429
          message: Rate limit exceeded
      properties:
        error:
          $ref: '#/components/schemas/TooManyRequestsResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    TooManyRequestsResponseErrorData:
      description: Error data for TooManyRequestsResponse
      example:
        code: 429
        message: Rate limit exceeded
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    TopProviderInfo:
      description: Information about the top provider for this model
      example:
        context_length: 8192
        is_moderated: true
        max_completion_tokens: 4096
      properties:
        context_length:
          description: Context length from the top provider
          example: 8192
          nullable: true
          type: integer
        is_moderated:
          description: Whether the top provider moderates content
          example: true
          type: boolean
        max_completion_tokens:
          description: Maximum completion tokens from the top provider
          example: 4096
          nullable: true
          type: integer
      required:
        - is_moderated
      type: object
    TraceConfig:
      additionalProperties:
        nullable: true
      description: >-
        Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.
      example:
        trace_id: trace-abc123
        trace_name: my-app-trace
      properties:
        generation_name:
          type: string
        parent_span_id:
          type: string
        span_name:
          type: string
        trace_id:
          type: string
        trace_name:
          type: string
      type: object
    Truncation:
      enum:
        - auto
        - disabled
        - null
      example: auto
      nullable: true
      type: string
      x-speakeasy-unknown-values: allow
    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:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    UnauthorizedResponseErrorData:
      description: Error data for UnauthorizedResponse
      example:
        code: 401
        message: Missing Authentication header
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    UnprocessableEntityResponse:
      description: Unprocessable Entity - Semantic validation failure
      example:
        error:
          code: 422
          message: Invalid argument
      properties:
        error:
          $ref: '#/components/schemas/UnprocessableEntityResponseErrorData'
        openrouter_metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
        user_id:
          nullable: true
          type: string
      required:
        - error
      type: object
    UnprocessableEntityResponseErrorData:
      description: Error data for UnprocessableEntityResponse
      example:
        code: 422
        message: Invalid argument
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          additionalProperties:
            nullable: true
          nullable: true
          type: object
      required:
        - code
        - message
      type: object
    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
          nullable: true
          type: array
        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
          nullable: true
          type: array
        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
          nullable: true
          type: string
      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
          nullable: true
          type: array
        allowed_providers:
          description: New list of allowed provider IDs
          example:
            - openai
            - anthropic
            - deepseek
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        content_filter_builtins:
          description: >-
            Builtin content filters to apply. Set to null to remove. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only.
          example:
            - action: block
              slug: regex-prompt-injection
          items:
            $ref: '#/components/schemas/ContentFilterBuiltinEntryInput'
          nullable: true
          type: array
        content_filters:
          description: Custom regex content filters to apply. Set to null to remove.
          example: null
          items:
            $ref: '#/components/schemas/ContentFilterEntry'
          nullable: true
          type: array
        description:
          description: New description for the guardrail
          example: Updated description
          maxLength: 1000
          nullable: true
          type: string
        enforce_zdr:
          deprecated: true
          description: >-
            Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, 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
          nullable: true
          type: boolean
        enforce_zdr_anthropic:
          description: Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided.
          example: true
          nullable: true
          type: boolean
        enforce_zdr_google:
          description: Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided.
          example: true
          nullable: true
          type: boolean
        enforce_zdr_openai:
          description: Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided.
          example: true
          nullable: true
          type: boolean
        enforce_zdr_other:
          description: >-
            Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided.
          example: true
          nullable: true
          type: boolean
        ignored_models:
          description: Array of model identifiers to exclude from routing (slug or canonical_slug accepted)
          example:
            - openai/gpt-4o-mini
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        ignored_providers:
          description: List of provider IDs to exclude from routing
          example:
            - azure
          items:
            type: string
          minItems: 1
          nullable: true
          type: array
        limit_usd:
          description: New spending limit in USD
          example: 75
          format: double
          nullable: true
          type: number
        name:
          description: New name for the guardrail
          example: Updated Guardrail Name
          maxLength: 200
          minLength: 1
          type: string
        reset_interval:
          $ref: '#/components/schemas/GuardrailInterval'
      type: object
    UpdateGuardrailResponse:
      example:
        data:
          allowed_models: null
          allowed_providers:
            - openai
          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
          id: 550e8400-e29b-41d4-a716-446655440000
          ignored_models: null
          ignored_providers: null
          limit_usd: 75
          name: Updated Guardrail Name
          reset_interval: weekly
          updated_at: '2025-08-24T16:00:00Z'
          workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/Guardrail'
            - description: The updated guardrail
      required:
        - data
      type: object
    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
          nullable: true
          type: array
        config:
          additionalProperties:
            nullable: true
          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/ObservabilityFilterRulesConfig'
            - 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
          nullable: true
          type: string
        default_provider_sort:
          description: Default provider sort preference (price, throughput, latency, exacto)
          example: price
          nullable: true
          type: string
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          nullable: true
          type: string
        description:
          description: New description for the workspace
          example: Updated description
          maxLength: 500
          nullable: true
          type: string
        io_logging_api_key_ids:
          description: Optional array of API key IDs to filter I/O logging
          example: null
          items:
            type: integer
          nullable: true
          type: array
        io_logging_sampling_rate:
          description: Sampling rate for I/O logging (0.0001-1)
          example: 1
          format: double
          type: number
        is_data_discount_logging_enabled:
          description: Whether data discount logging is enabled
          example: true
          type: boolean
        is_observability_broadcast_enabled:
          description: Whether broadcast is enabled
          example: false
          type: boolean
        is_observability_io_logging_enabled:
          description: Whether private logging is enabled
          example: false
          type: boolean
        name:
          description: New name for the workspace
          example: Updated Workspace
          maxLength: 100
          minLength: 1
          type: string
        slug:
          description: >-
            New URL-friendly slug (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_image_model: openai/dall-e-3
          default_provider_sort: price
          default_text_model: openai/gpt-4o
          description: Production environment workspace
          id: 550e8400-e29b-41d4-a716-446655440000
          io_logging_api_key_ids: null
          io_logging_sampling_rate: 1
          is_data_discount_logging_enabled: true
          is_observability_broadcast_enabled: false
          is_observability_io_logging_enabled: false
          name: Updated Workspace
          slug: updated-workspace
          updated_at: '2025-08-25T10:00:00Z'
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/Workspace'
            - description: The updated workspace
      required:
        - data
      type: object
    URLCitation:
      example:
        end_index: 42
        start_index: 0
        title: OpenRouter Documentation
        type: url_citation
        url: https://openrouter.ai/docs
      properties:
        end_index:
          type: integer
        start_index:
          type: integer
        title:
          type: string
        type:
          enum:
            - url_citation
          type: string
        url:
          type: string
      required:
        - type
        - url
        - title
        - start_index
        - end_index
      type: object
    Usage:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesUsage'
        - nullable: true
          properties:
            cost:
              description: Cost of the completion
              format: double
              nullable: true
              type: number
            cost_details:
              properties:
                upstream_inference_cost:
                  format: double
                  nullable: true
                  type: number
                upstream_inference_input_cost:
                  format: double
                  type: number
                upstream_inference_output_cost:
                  format: double
                  type: number
              required:
                - upstream_inference_input_cost
                - upstream_inference_output_cost
              type: object
            is_byok:
              description: Whether a request was made using a Bring Your Own Key configuration
              type: boolean
          type: object
      description: Token usage information for the response
      example:
        cost: 0.0012
        cost_details:
          upstream_inference_cost: null
          upstream_inference_input_cost: 0.0008
          upstream_inference_output_cost: 0.0004
        input_tokens: 10
        input_tokens_details:
          cached_tokens: 0
        output_tokens: 25
        output_tokens_details:
          reasoning_tokens: 0
        total_tokens: 35
    VideoGenerationRequest:
      example:
        aspect_ratio: '16:9'
        duration: 8
        model: google/veo-3.1
        prompt: A serene mountain landscape at sunset
        resolution: 720p
      properties:
        aspect_ratio:
          description: Aspect ratio of the generated video
          enum:
            - '16:9'
            - '9:16'
            - '1:1'
            - '4:3'
            - '3:4'
            - '3:2'
            - '2:3'
            - '21:9'
            - '9:21'
          example: '16:9'
          type: string
          x-speakeasy-unknown-values: allow
        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:
          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
          x-speakeasy-unknown-values: allow
        seed:
          description: >-
            If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers.
          type: integer
        size:
          description: >-
            Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable with resolution + aspect_ratio.
          example: 1280x720
          type: string
      required:
        - prompt
        - model
      type: object
    VideoGenerationResponse:
      example:
        generation_id: gen-xyz789
        id: job-abc123
        polling_url: /api/v1/videos/job-abc123
        status: pending
      properties:
        error:
          type: string
        generation_id:
          description: The generation ID associated with this video generation job. Available once the job has been processed.
          type: string
        id:
          type: string
        polling_url:
          type: string
        status:
          enum:
            - pending
            - in_progress
            - completed
            - failed
            - cancelled
            - expired
          type: string
          x-speakeasy-unknown-values: allow
        unsigned_urls:
          items:
            type: string
          type: array
        usage:
          $ref: '#/components/schemas/VideoGenerationUsage'
      required:
        - id
        - polling_url
        - status
      type: object
    VideoGenerationUsage:
      description: Usage and cost information for the video generation. Available once the job has completed.
      example:
        cost: 0.5
        is_byok: false
      properties:
        cost:
          description: The cost of the video generation in USD.
          format: double
          nullable: true
          type: number
        is_byok:
          description: Whether the request was made using a Bring Your Own Key configuration.
          type: boolean
      type: object
    VideoModel:
      example:
        allowed_passthrough_parameters: []
        canonical_slug: google/veo-3.1
        created: 1700000000
        description: Google video generation model
        generate_audio: true
        id: google/veo-3.1
        name: Veo 3.1
        pricing_skus:
          generate: '0.50'
        seed: null
        supported_aspect_ratios:
          - '16:9'
        supported_durations:
          - 5
          - 8
        supported_frame_images:
          - first_frame
          - last_frame
        supported_resolutions:
          - 720p
        supported_sizes: null
      properties:
        allowed_passthrough_parameters:
          description: List of parameters that are allowed to be passed through to the provider
          items:
            type: string
          type: array
        canonical_slug:
          description: Canonical slug for the model
          example: openai/gpt-4
          type: string
        created:
          description: Unix timestamp of when the model was created
          example: 1692901234
          type: integer
        description:
          description: Description of the model
          example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
          type: string
        generate_audio:
          description: Whether the model supports generating audio alongside video
          nullable: true
          type: boolean
        hugging_face_id:
          description: Hugging Face model identifier, if applicable
          example: microsoft/DialoGPT-medium
          nullable: true
          type: string
        id:
          description: Unique identifier for the model
          example: openai/gpt-4
          type: string
        name:
          description: Display name of the model
          example: GPT-4
          type: string
        pricing_skus:
          additionalProperties:
            type: string
          description: Pricing SKUs with provider prefix stripped, values as strings
          nullable: true
          type: object
        seed:
          description: Whether the model supports deterministic generation via seed parameter
          nullable: true
          type: boolean
        supported_aspect_ratios:
          description: Supported output aspect ratios
          items:
            enum:
              - '16:9'
              - '9:16'
              - '1:1'
              - '4:3'
              - '3:4'
              - '3:2'
              - '2:3'
              - '21:9'
              - '9:21'
            type: string
            x-speakeasy-unknown-values: allow
          nullable: true
          type: array
        supported_durations:
          description: Supported video durations in seconds
          items:
            type: integer
          nullable: true
          type: array
        supported_frame_images:
          description: Supported frame image types (e.g. first_frame, last_frame)
          items:
            enum:
              - first_frame
              - last_frame
            type: string
            x-speakeasy-unknown-values: allow
          nullable: true
          type: array
        supported_resolutions:
          description: Supported output resolutions
          items:
            enum:
              - 480p
              - 720p
              - 1080p
              - 1K
              - 2K
              - 4K
            type: string
            x-speakeasy-unknown-values: allow
          nullable: true
          type: array
        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
            x-speakeasy-unknown-values: allow
          nullable: true
          type: array
      required:
        - id
        - canonical_slug
        - name
        - created
        - supported_resolutions
        - supported_aspect_ratios
        - supported_sizes
        - supported_durations
        - supported_frame_images
        - generate_audio
        - seed
        - allowed_passthrough_parameters
      type: object
    VideoModelsListResponse:
      example:
        data:
          - allowed_passthrough_parameters: []
            canonical_slug: google/veo-3.1
            created: 1700000000
            description: Google video generation model
            generate_audio: true
            id: google/veo-3.1
            name: Veo 3.1
            pricing_skus:
              generate: '0.50'
            seed: null
            supported_aspect_ratios:
              - '16:9'
            supported_durations:
              - 5
              - 8
            supported_frame_images:
              - first_frame
              - last_frame
            supported_resolutions:
              - 720p
            supported_sizes: null
      properties:
        data:
          items:
            $ref: '#/components/schemas/VideoModel'
          type: array
      required:
        - data
      type: object
    WebFetchEngineEnum:
      description: >-
        Which fetch engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in fetch. "exa" uses Exa Contents API. "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
      x-speakeasy-unknown-values: allow
    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, and most native providers (Anthropic, OpenAI, xAI). Not supported with Perplexity. 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, Anthropic, and xAI. Not supported with OpenAI (silently ignored) or Perplexity. 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 and Parallel 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). When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence for both engines. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        max_total_results:
          description: >-
            Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified.
          example: 50
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchQualityLevel'
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocationServerTool'
      type: object
    WebSearchDomainFilter:
      example:
        allowed_domains:
          - example.com
        excluded_domains:
          - spam.com
      nullable: true
      properties:
        allowed_domains:
          items:
            type: string
          nullable: true
          type: array
        excluded_domains:
          items:
            type: string
          nullable: true
          type: array
      type: object
    WebSearchEngine:
      description: The search engine to use for web search.
      enum:
        - native
        - exa
        - firecrawl
        - parallel
      example: exa
      type: string
      x-speakeasy-unknown-values: allow
    WebSearchEngineEnum:
      description: >-
        Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API.
      enum:
        - auto
        - native
        - exa
        - parallel
        - firecrawl
      example: auto
      type: string
      x-speakeasy-unknown-values: allow
    WebSearchPlugin:
      example:
        enabled: true
        id: web
        max_results: 5
      properties:
        enabled:
          description: Set to false to disable the web-search plugin for this request. Defaults to true.
          type: boolean
        engine:
          $ref: '#/components/schemas/WebSearchEngine'
        exclude_domains:
          description: >-
            A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog").
          example:
            - example.com
            - '*.substack.com'
            - openai.com/blog
          items:
            type: string
          type: array
        id:
          enum:
            - web
          type: string
        include_domains:
          description: >-
            A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog").
          example:
            - example.com
            - '*.substack.com'
            - openai.com/blog
          items:
            type: string
          type: array
        max_results:
          type: integer
        max_uses:
          description: >-
            Maximum number of times the model can invoke web search in a single turn. Passed through to native providers that support it (e.g. Anthropic).
          type: integer
        search_prompt:
          type: string
        user_location:
          allOf:
            - $ref: '#/components/schemas/WebSearchUserLocation'
            - description: >-
                Approximate user location for location-biased search results. Passed through to native providers that support it (e.g. Anthropic).
              example:
                city: San Francisco
                country: US
                region: California
                timezone: America/Los_Angeles
                type: approximate
              required:
                - type
      required:
        - id
      type: object
    WebSearchServerTool:
      description: Web search tool configuration (2025-08-26 version)
      example:
        engine: auto
        filters:
          allowed_domains:
            - example.com
        type: web_search_2025_08_26
      properties:
        engine:
          $ref: '#/components/schemas/WebSearchEngineEnum'
        filters:
          $ref: '#/components/schemas/WebSearchDomainFilter'
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        search_context_size:
          $ref: '#/components/schemas/SearchContextSizeEnum'
        type:
          enum:
            - web_search_2025_08_26
          type: string
        user_location:
          $ref: '#/components/schemas/WebSearchUserLocation'
      required:
        - type
      type: object
    WebSearchServerTool_OpenRouter:
      description: 'OpenRouter built-in server tool: searches the web for current information'
      example:
        parameters:
          max_results: 5
        type: openrouter:web_search
      properties:
        parameters:
          $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, and most native providers (Anthropic, OpenAI, xAI). Not supported with Perplexity. 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, Anthropic, and xAI. Not supported with OpenAI (silently ignored) or Perplexity. 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 and Parallel 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). When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence for both engines. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel).
          example: 2000
          type: integer
        max_results:
          description: >-
            Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, and Parallel engines; ignored with native provider search.
          example: 5
          type: integer
        max_total_results:
          description: >-
            Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified.
          example: 50
          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
      x-speakeasy-unknown-values: allow
    WebSearchUserLocation:
      description: User location information for web search
      example:
        city: San Francisco
        country: USA
        region: California
        timezone: America/Los_Angeles
        type: approximate
      nullable: true
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        region:
          nullable: true
          type: string
        timezone:
          nullable: true
          type: string
        type:
          enum:
            - approximate
          type: string
      type: object
    WebSearchUserLocationServerTool:
      description: Approximate user location for location-biased results.
      example:
        city: San Francisco
        country: US
        region: California
        timezone: America/Los_Angeles
        type: approximate
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        region:
          nullable: true
          type: string
        timezone:
          nullable: true
          type: string
        type:
          enum:
            - approximate
          type: string
      type: object
    Workspace:
      example:
        created_at: '2025-08-24T10:30:00Z'
        created_by: user_abc123
        default_image_model: openai/dall-e-3
        default_provider_sort: price
        default_text_model: openai/gpt-4o
        description: Production environment workspace
        id: 550e8400-e29b-41d4-a716-446655440000
        io_logging_api_key_ids: null
        io_logging_sampling_rate: 1
        is_data_discount_logging_enabled: true
        is_observability_broadcast_enabled: false
        is_observability_io_logging_enabled: false
        name: Production
        slug: production
        updated_at: '2025-08-24T15:45:00Z'
      properties:
        created_at:
          description: ISO 8601 timestamp of when the workspace was created
          example: '2025-08-24T10:30:00Z'
          type: string
        created_by:
          description: User ID of the workspace creator
          example: user_abc123
          nullable: true
          type: string
        default_image_model:
          description: Default image model for this workspace
          example: openai/dall-e-3
          nullable: true
          type: string
        default_provider_sort:
          description: Default provider sort preference (price, throughput, latency, exacto)
          example: price
          nullable: true
          type: string
        default_text_model:
          description: Default text model for this workspace
          example: openai/gpt-4o
          nullable: true
          type: string
        description:
          description: Description of the workspace
          example: Production environment workspace
          nullable: true
          type: string
        id:
          description: Unique identifier for the workspace
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        io_logging_api_key_ids:
          description: Optional array of API key IDs to filter I/O logging. Null means all keys are logged.
          example: null
          items:
            type: integer
          nullable: true
          type: array
        io_logging_sampling_rate:
          description: Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged.
          example: 1
          format: double
          type: number
        is_data_discount_logging_enabled:
          description: Whether data discount logging is enabled for this workspace
          example: true
          type: boolean
        is_observability_broadcast_enabled:
          description: Whether broadcast is enabled for this workspace
          example: false
          type: boolean
        is_observability_io_logging_enabled:
          description: Whether private logging is enabled for this workspace
          example: false
          type: boolean
        name:
          description: Name of the workspace
          example: Production
          type: string
        slug:
          description: URL-friendly slug for the workspace
          example: production
          type: string
        updated_at:
          description: ISO 8601 timestamp of when the workspace was last updated
          example: '2025-08-24T15:45:00Z'
          nullable: true
          type: string
      required:
        - id
        - name
        - slug
        - description
        - default_text_model
        - default_image_model
        - default_provider_sort
        - is_observability_io_logging_enabled
        - is_observability_broadcast_enabled
        - is_data_discount_logging_enabled
        - io_logging_sampling_rate
        - io_logging_api_key_ids
        - created_at
        - updated_at
        - created_by
      type: object
    WorkspaceMember:
      example:
        created_at: '2025-08-24T10:30:00Z'
        id: 660e8400-e29b-41d4-a716-446655440000
        role: member
        user_id: user_abc123
        workspace_id: 550e8400-e29b-41d4-a716-446655440000
      properties:
        created_at:
          description: ISO 8601 timestamp of when the membership was created
          example: '2025-08-24T10:30:00Z'
          type: string
        id:
          description: Unique identifier for the workspace membership
          example: 660e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        role:
          description: Role of the member in the workspace
          enum:
            - admin
            - member
          example: member
          type: string
          x-speakeasy-unknown-values: allow
        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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
                              x-speakeasy-unknown-values: allow
                          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
                              x-speakeasy-unknown-values: allow
                            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
                              x-speakeasy-unknown-values: allow
                            value_type:
                              description: Whether the operator expects a single value or an array
                              enum:
                                - scalar
                                - array
                              type: string
                              x-speakeasy-unknown-values: allow
                          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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
                dimensions:
                  items:
                    description: Dimension name
                    example: model
                    type: string
                  maxItems: 2
                  type: array
                filters:
                  items:
                    properties:
                      field:
                        description: Dimension to filter on
                        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)
                    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 (ClickHouse LIMIT n BY). 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
                      x-speakeasy-unknown-values: allow
                    field:
                      description: Field to order by
                      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
                    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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /audio/speech:
    post:
      description: >-
        Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav).
      operationId: createAudioSpeech
      requestBody:
        content:
          application/json:
            example:
              input: Hello world
              model: elevenlabs/eleven-turbo-v2
              response_format: pcm
              speed: 1
              voice: alloy
            schema:
              $ref: '#/components/schemas/SpeechRequest'
        required: true
      responses:
        '200':
          content:
            audio/*:
              schema:
                description: >-
                  Raw audio bytestream. Content-Type varies by requested format (audio/mpeg for mp3, audio/pcm for pcm — 16-bit little-endian).
                example: <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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /audio/transcriptions:
    post:
      description: Transcribes audio into text. Accepts base64-encoded audio input and returns the transcribed text.
      operationId: createAudioTranscriptions
      requestBody:
        content:
          application/json:
            example:
              input_audio:
                data: UklGRiQA...
                format: wav
              language: en
              model: openai/whisper-large-v3
            schema:
              $ref: '#/components/schemas/STTRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                text: Hello, this is a test of OpenAI speech-to-text transcription.
                usage:
                  cost: 0.000508
                  input_tokens: 83
                  output_tokens: 30
                  seconds: 9.2
                  total_tokens: 113
              schema:
                $ref: '#/components/schemas/STTResponse'
          description: Transcription result
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '402':
          content:
            application/json:
              example:
                error:
                  code: 402
                  message: Insufficient credits. Add more using https://openrouter.ai/credits
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
          description: Payment Required - Insufficient credits or quota to complete request
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
        '502':
          content:
            application/json:
              example:
                error:
                  code: 502
                  message: Provider returned error
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
          description: Bad Gateway - Provider/upstream API failure
        '503':
          content:
            application/json:
              example:
                error:
                  code: 503
                  message: Service temporarily unavailable
              schema:
                $ref: '#/components/schemas/ServiceUnavailableResponse'
          description: Service Unavailable - Service temporarily unavailable
        '524':
          content:
            application/json:
              example:
                error:
                  code: 524
                  message: Request timed out. Please try again later.
              schema:
                $ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
          description: Infrastructure Timeout - Provider request timed out at edge network
        '529':
          content:
            application/json:
              example:
                error:
                  code: 529
                  message: Provider returned error
              schema:
                $ref: '#/components/schemas/ProviderOverloadedResponse'
          description: Provider Overloaded - Provider is temporarily overloaded
      summary: Create transcription
      tags:
        - STT
      x-speakeasy-max-method-params: 1
      x-speakeasy-name-override: createTranscription
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /auth/keys:
    post:
      description: Exchange an authorization code from the PKCE flow for a user-controlled API key
      operationId: exchangeAuthCodeForAPIKey
      requestBody:
        content:
          application/json:
            example:
              code: auth_code_abc123def456
              code_challenge_method: S256
              code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
            schema:
              example:
                code: auth_code_abc123def456
                code_challenge_method: S256
                code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
              properties:
                code:
                  description: The authorization code received from the OAuth redirect
                  example: auth_code_abc123def456
                  type: string
                code_challenge_method:
                  description: The method used to generate the code challenge
                  enum:
                    - S256
                    - plain
                    - null
                  example: S256
                  nullable: true
                  type: string
                  x-speakeasy-unknown-values: allow
                code_verifier:
                  description: The code verifier if code_challenge was used in the authorization request
                  example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
                  type: string
              required:
                - code
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                key: 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
                user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
              schema:
                example:
                  key: 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
                  user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
                properties:
                  key:
                    description: The API key to use for OpenRouter requests
                    example: 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
                    type: string
                  user_id:
                    description: User ID associated with the API key
                    example: user_2yOPcMpKoQhcd4bVgSMlELRaIah
                    nullable: true
                    type: string
                required:
                  - key
                  - user_id
                type: object
          description: Successfully exchanged code for an API key
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Exchange authorization code for API key
      tags:
        - OAuth
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /auth/keys/code:
    post:
      description: Create an authorization code for the PKCE flow to generate a user-controlled API key
      operationId: createAuthKeysCode
      requestBody:
        content:
          application/json:
            example:
              callback_url: https://myapp.com/auth/callback
              code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
              code_challenge_method: S256
              limit: 100
            schema:
              example:
                callback_url: https://myapp.com/auth/callback
                code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
                code_challenge_method: S256
                limit: 100
              properties:
                callback_url:
                  description: >-
                    The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are allowed.
                  example: https://myapp.com/auth/callback
                  format: uri
                  type: string
                code_challenge:
                  description: PKCE code challenge for enhanced security
                  example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
                  type: string
                code_challenge_method:
                  description: The method used to generate the code challenge
                  enum:
                    - S256
                    - plain
                  example: S256
                  type: string
                  x-speakeasy-unknown-values: allow
                expires_at:
                  description: Optional expiration time for the API key to be created
                  example: '2027-12-31T23:59:59Z'
                  format: date-time
                  nullable: true
                  type: string
                key_label:
                  description: Optional custom label for the API key. Defaults to the app name if not provided.
                  example: My Custom Key
                  maxLength: 100
                  type: string
                limit:
                  description: Credit limit for the API key to be created
                  example: 100
                  format: double
                  type: number
                spawn_agent:
                  description: Agent identifier for spawn telemetry
                  example: my-agent
                  type: string
                  x-fern-ignore: true
                  x-speakeasy-ignore: true
                spawn_cloud:
                  description: Cloud identifier for spawn telemetry
                  example: aws-us-east-1
                  type: string
                  x-fern-ignore: true
                  x-speakeasy-ignore: true
                usage_limit_type:
                  description: Optional credit limit reset interval. When set, the credit limit resets on this interval.
                  enum:
                    - daily
                    - weekly
                    - monthly
                  example: monthly
                  type: string
                  x-speakeasy-unknown-values: allow
              required:
                - callback_url
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  app_id: 12345
                  created_at: '2025-08-24T10:30:00Z'
                  id: auth_code_xyz789
              schema:
                example:
                  data:
                    app_id: 12345
                    created_at: '2025-08-24T10:30:00Z'
                    id: auth_code_xyz789
                properties:
                  data:
                    description: Auth code data
                    example:
                      app_id: 12345
                      created_at: '2025-08-24T10:30:00Z'
                      id: auth_code_xyz789
                    properties:
                      app_id:
                        description: The application ID associated with this auth code
                        example: 12345
                        type: integer
                      created_at:
                        description: ISO 8601 timestamp of when the auth code was created
                        example: '2025-08-24T10:30:00Z'
                        type: string
                      id:
                        description: The authorization code ID to use in the exchange request
                        example: auth_code_xyz789
                        type: string
                    required:
                      - id
                      - app_id
                      - created_at
                    type: object
                required:
                  - data
                type: object
          description: Successfully created authorization code
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '409':
          content:
            application/json:
              example:
                error:
                  code: 409
                  message: Resource conflict. Please try again later.
              schema:
                $ref: '#/components/schemas/ConflictResponse'
          description: Conflict - Resource conflict or concurrent modification
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Create authorization code
      tags:
        - OAuth
      x-speakeasy-name-override: createAuthCode
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: 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
              - crusoe
              - darkbloom
              - decart
              - deepinfra
              - deepseek
              - dekallm
              - digitalocean
              - featherless
              - fireworks
              - friendli
              - gmicloud
              - google-ai-studio
              - google-vertex
              - groq
              - inception
              - inceptron
              - inference-net
              - infermatic
              - inflection
              - io-net
              - ionstream
              - liquid
              - mancer
              - mara
              - minimax
              - mistral
              - modelrun
              - modular
              - moonshotai
              - morph
              - ncompass
              - nebius
              - nex-agi
              - nextbit
              - novita
              - nvidia
              - open-inference
              - openai
              - parasail
              - perceptron
              - perplexity
              - phala
              - poolside
              - recraft
              - reka
              - relace
              - sambanova
              - seed
              - siliconflow
              - sourceful
              - stepfun
              - streamlake
              - switchpoint
              - together
              - upstage
              - venice
              - wafer
              - wandb
              - xai
              - xiaomi
              - z-ai
            example: openai
            type: string
            x-speakeasy-unknown-values: allow
      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
        '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. [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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
                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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
            x-speakeasy-unknown-values: allow
        - 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
            x-speakeasy-unknown-values: allow
        - 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
            x-speakeasy-unknown-values: allow
        - 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
            nullable: false
            type: integer
      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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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.

        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
      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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
                  x-speakeasy-unknown-values: allow
                input:
                  anyOf:
                    - type: string
                    - items:
                        type: string
                      type: array
                    - items:
                        type: number
                      type: array
                    - items:
                        items:
                          type: number
                        type: array
                      type: array
                    - items:
                        properties:
                          content:
                            items:
                              oneOf:
                                - properties:
                                    text:
                                      type: string
                                    type:
                                      enum:
                                        - text
                                      type: string
                                  required:
                                    - type
                                    - text
                                  type: object
                                - properties:
                                    image_url:
                                      properties:
                                        url:
                                          type: string
                                      required:
                                        - url
                                      type: object
                                    type:
                                      enum:
                                        - image_url
                                      type: string
                                  required:
                                    - type
                                    - image_url
                                  type: object
                                - $ref: '#/components/schemas/ContentPartInputAudio'
                                - $ref: '#/components/schemas/ContentPartInputVideo'
                                - $ref: '#/components/schemas/ContentPartInputFile'
                            type: array
                        required:
                          - content
                        type: object
                      type: array
                  description: Text, token, or multimodal input(s) to embed
                  example: The quick brown fox jumps over the lazy dog
                input_type:
                  description: The type of input (e.g. search_query, search_document)
                  example: search_query
                  type: string
                model:
                  description: The model to use for embeddings
                  example: openai/text-embedding-3-small
                  type: string
                provider:
                  allOf:
                    - $ref: '#/components/schemas/ProviderPreferences'
                    - description: Provider routing preferences for the request.
                user:
                  description: A unique identifier for the end-user
                  example: user-1234
                  type: string
              required:
                - input
                - model
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Embeddings response containing embedding vectors
                example:
                  data:
                    - embedding:
                        - 0.0023064255
                        - -0.009327292
                        - 0.015797347
                      index: 0
                      object: embedding
                  model: openai/text-embedding-3-small
                  object: list
                  usage:
                    prompt_tokens: 8
                    total_tokens: 8
                properties:
                  data:
                    description: List of embedding objects
                    example:
                      - embedding:
                          - 0.0023064255
                          - -0.009327292
                          - 0.015797347
                        index: 0
                        object: embedding
                    items:
                      description: A single embedding object
                      example:
                        embedding:
                          - 0.0023064255
                          - -0.009327292
                          - 0.015797347
                        index: 0
                        object: embedding
                      properties:
                        embedding:
                          anyOf:
                            - items:
                                type: number
                              type: array
                            - type: string
                          description: Embedding vector as an array of floats or a base64 string
                          example:
                            - 0.0023064255
                            - -0.009327292
                            - 0.015797347
                        index:
                          description: Index of the embedding in the input list
                          example: 0
                          type: integer
                        object:
                          enum:
                            - embedding
                          type: string
                      required:
                        - object
                        - embedding
                      type: object
                    type: array
                  id:
                    description: Unique identifier for the embeddings response
                    example: embd-1234567890
                    type: string
                  model:
                    description: The model used for embeddings
                    example: openai/text-embedding-3-small
                    type: string
                  object:
                    enum:
                      - list
                    type: string
                  usage:
                    description: Token usage statistics
                    example:
                      prompt_tokens: 8
                      total_tokens: 8
                    properties:
                      cost:
                        description: Cost of the request in credits
                        example: 0.0001
                        format: double
                        type: number
                      prompt_tokens:
                        description: Number of tokens in the input
                        example: 8
                        type: integer
                      prompt_tokens_details:
                        description: >-
                          Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text + image) and the upstream provider returns modality-level usage data. Only non-zero modality counts are included.
                        properties:
                          audio_tokens:
                            description: Number of audio tokens in the input
                            type: integer
                          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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /embeddings/models:
    get:
      description: Returns a list of all available embeddings models and their properties
      operationId: listEmbeddingsModels
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - architecture:
                      input_modalities:
                        - text
                      instruct_type: null
                      modality: text->text
                      output_modalities:
                        - embeddings
                      tokenizer: GPT
                    canonical_slug: openai/text-embedding-3-small
                    context_length: 8192
                    created: 1692901234
                    default_parameters: null
                    description: OpenAI text embedding model optimized for performance.
                    expiration_date: null
                    id: openai/text-embedding-3-small
                    knowledge_cutoff: null
                    links:
                      details: /api/v1/models/openai/text-embedding-3-small/endpoints
                    name: Text Embedding 3 Small
                    per_request_limits: null
                    pricing:
                      completion: '0'
                      image: '0'
                      prompt: '0.00000002'
                      request: '0'
                    supported_parameters: []
                    supported_voices: null
                    top_provider:
                      context_length: 8192
                      is_moderated: false
                      max_completion_tokens: null
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
          description: Returns a list of embeddings models
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all embeddings models
      tags:
        - Embeddings
      x-speakeasy-name-override: listModels
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /endpoints/zdr:
    get:
      operationId: listEndpointsZdr
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - context_length: 8192
                    latency_last_30m:
                      p50: 0.25
                      p75: 0.35
                      p90: 0.48
                      p99: 0.85
                    max_completion_tokens: 4096
                    max_prompt_tokens: 8192
                    model_id: openai/gpt-4
                    model_name: GPT-4
                    name: 'OpenAI: GPT-4'
                    pricing:
                      completion: '0.00006'
                      image: '0'
                      prompt: '0.00003'
                      request: '0'
                    provider_name: OpenAI
                    quantization: fp16
                    status: default
                    supported_parameters:
                      - temperature
                      - top_p
                      - max_tokens
                    supports_implicit_caching: true
                    tag: openai
                    throughput_last_30m:
                      p50: 45.2
                      p75: 38.5
                      p90: 28.3
                      p99: 15.1
                    uptime_last_1d: 99.8
                    uptime_last_30m: 99.5
                    uptime_last_5m: 100
              schema:
                example:
                  data:
                    - context_length: 8192
                      latency_last_30m:
                        p50: 0.25
                        p75: 0.35
                        p90: 0.48
                        p99: 0.85
                      max_completion_tokens: 4096
                      max_prompt_tokens: 8192
                      model_id: openai/gpt-4
                      model_name: GPT-4
                      name: 'OpenAI: GPT-4'
                      pricing:
                        completion: '0.00006'
                        image: '0'
                        prompt: '0.00003'
                        request: '0'
                      provider_name: OpenAI
                      quantization: fp16
                      status: default
                      supported_parameters:
                        - temperature
                        - top_p
                        - max_tokens
                      supports_implicit_caching: true
                      tag: openai
                      throughput_last_30m:
                        p50: 45.2
                        p75: 38.5
                        p90: 28.3
                        p99: 15.1
                      uptime_last_1d: 99.8
                      uptime_last_30m: 99.5
                      uptime_last_5m: 100
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PublicEndpoint'
                    type: array
                required:
                  - data
                type: object
          description: Returns a list of endpoints
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Preview the impact of ZDR on the available endpoints
      tags:
        - Endpoints
      x-speakeasy-name-override: listZdrEndpoints
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /generation:
    get:
      operationId: getGeneration
      parameters:
        - description: The generation ID
          in: query
          name: id
          required: true
          schema:
            description: The generation ID
            example: gen-1234567890
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  api_type: completions
                  app_id: 12345
                  cache_discount: null
                  cancelled: false
                  created_at: '2024-07-15T23:33:19.433273+00:00'
                  external_user: user-123
                  finish_reason: stop
                  generation_time: 1200
                  http_referer: https://openrouter.ai/
                  id: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
                  is_byok: false
                  latency: 1250
                  model: sao10k/l3-stheno-8b
                  moderation_latency: 50
                  native_finish_reason: stop
                  native_tokens_cached: 3
                  native_tokens_completion: 25
                  native_tokens_completion_images: 0
                  native_tokens_prompt: 10
                  native_tokens_reasoning: 5
                  num_input_audio_prompt: 0
                  num_media_completion: 0
                  num_media_prompt: 1
                  num_search_results: 5
                  origin: https://openrouter.ai/
                  provider_name: Infermatic
                  provider_responses: null
                  request_id: req-1727282430-aBcDeFgHiJkLmNoPqRsT
                  router: openrouter/auto
                  session_id: null
                  streamed: true
                  tokens_completion: 25
                  tokens_prompt: 10
                  total_cost: 0.0015
                  upstream_id: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
                  upstream_inference_cost: 0.0012
                  usage: 0.0015
                  user_agent: Mozilla/5.0
              schema:
                $ref: '#/components/schemas/GenerationResponse'
          description: Returns the request metadata for this generation
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '402':
          content:
            application/json:
              example:
                error:
                  code: 402
                  message: Insufficient credits. Add more using https://openrouter.ai/credits
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
          description: Payment Required - Insufficient credits or quota to complete request
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
        '502':
          content:
            application/json:
              example:
                error:
                  code: 502
                  message: Provider returned error
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
          description: Bad Gateway - Provider/upstream API failure
        '524':
          content:
            application/json:
              example:
                error:
                  code: 524
                  message: Request timed out. Please try again later.
              schema:
                $ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
          description: Infrastructure Timeout - Provider request timed out at edge network
        '529':
          content:
            application/json:
              example:
                error:
                  code: 529
                  message: Provider returned error
              schema:
                $ref: '#/components/schemas/ProviderOverloadedResponse'
          description: Provider Overloaded - Provider is temporarily overloaded
      summary: Get request & usage metadata for a generation
      tags:
        - Generations
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails:
    get:
      description: >-
        List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listGuardrails
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned.
          in: query
          name: workspace_id
          required: false
          schema:
            description: Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned.
            example: 0df9e665-d932-5740-b2c7-b52af166bc11
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - allowed_models: null
                    allowed_providers:
                      - openai
                      - anthropic
                      - google
                    created_at: '2025-08-24T10:30:00Z'
                    description: Guardrail for production environment
                    enforce_zdr: false
                    id: 550e8400-e29b-41d4-a716-446655440000
                    ignored_models: null
                    ignored_providers: null
                    limit_usd: 100
                    name: Production Guardrail
                    reset_interval: monthly
                    updated_at: '2025-08-24T15:45:00Z'
                    workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListGuardrailsResponse'
          description: List of guardrails
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List guardrails
      tags:
        - Guardrails
      x-speakeasy-name-override: list
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    post:
      description: >-
        Create a new guardrail for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createGuardrail
      requestBody:
        content:
          application/json:
            example:
              allowed_models: null
              allowed_providers:
                - openai
                - anthropic
                - deepseek
              description: A guardrail for limiting API usage
              enforce_zdr_anthropic: true
              enforce_zdr_google: false
              enforce_zdr_openai: true
              enforce_zdr_other: 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
                  id: 550e8400-e29b-41d4-a716-446655440000
                  ignored_models: null
                  ignored_providers: null
                  limit_usd: 50
                  name: My New Guardrail
                  reset_interval: monthly
                  updated_at: null
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                $ref: '#/components/schemas/CreateGuardrailResponse'
          description: Guardrail created successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Create a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: create
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails/{id}:
    delete:
      description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: deleteGuardrail
      parameters:
        - description: The unique identifier of the guardrail to delete
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail to delete
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                $ref: '#/components/schemas/DeleteGuardrailResponse'
          description: Guardrail deleted successfully
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Delete a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: delete
    get:
      description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: getGuardrail
      parameters:
        - description: The unique identifier of the guardrail to retrieve
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail to retrieve
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  allowed_models: null
                  allowed_providers:
                    - openai
                    - anthropic
                    - google
                  created_at: '2025-08-24T10:30:00Z'
                  description: Guardrail for production environment
                  enforce_zdr: false
                  id: 550e8400-e29b-41d4-a716-446655440000
                  ignored_models: null
                  ignored_providers: null
                  limit_usd: 100
                  name: Production Guardrail
                  reset_interval: monthly
                  updated_at: '2025-08-24T15:45:00Z'
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                $ref: '#/components/schemas/GetGuardrailResponse'
          description: Guardrail details
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Get a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: get
    patch:
      description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateGuardrail
      parameters:
        - description: The unique identifier of the guardrail to update
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail to update
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            example:
              description: Updated description
              limit_usd: 75
              name: Updated Guardrail Name
              reset_interval: weekly
            schema:
              $ref: '#/components/schemas/UpdateGuardrailRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  allowed_models: null
                  allowed_providers:
                    - openai
                  created_at: '2025-08-24T10:30:00Z'
                  description: Updated description
                  enforce_zdr: null
                  enforce_zdr_anthropic: true
                  enforce_zdr_google: true
                  enforce_zdr_openai: true
                  enforce_zdr_other: true
                  id: 550e8400-e29b-41d4-a716-446655440000
                  ignored_models: null
                  ignored_providers: null
                  limit_usd: 75
                  name: Updated Guardrail Name
                  reset_interval: weekly
                  updated_at: '2025-08-24T16:00:00Z'
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                $ref: '#/components/schemas/UpdateGuardrailResponse'
          description: Guardrail updated successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Update a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: update
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails/{id}/assignments/keys:
    get:
      description: >-
        List all API key assignments for a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listGuardrailKeyAssignments
      parameters:
        - description: The unique identifier of the guardrail
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - assigned_by: user_abc123
                    created_at: '2025-08-24T10:30:00Z'
                    guardrail_id: 550e8400-e29b-41d4-a716-446655440001
                    id: 550e8400-e29b-41d4-a716-446655440000
                    key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
                    key_label: prod-key
                    key_name: Production Key
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListKeyAssignmentsResponse'
          description: List of key assignments
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List key assignments for a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: listGuardrailKeyAssignments
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    post:
      description: >-
        Assign multiple API keys to a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: bulkAssignKeysToGuardrail
      parameters:
        - description: The unique identifier of the guardrail
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            example:
              key_hashes:
                - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
            schema:
              $ref: '#/components/schemas/BulkAssignKeysRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                assigned_count: 3
              schema:
                $ref: '#/components/schemas/BulkAssignKeysResponse'
          description: Assignment result
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Bulk assign keys to a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: bulkAssignKeys
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails/{id}/assignments/members:
    get:
      description: >-
        List all organization member assignments for a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listGuardrailMemberAssignments
      parameters:
        - description: The unique identifier of the guardrail
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - assigned_by: user_abc123
                    created_at: '2025-08-24T10:30:00Z'
                    guardrail_id: 550e8400-e29b-41d4-a716-446655440001
                    id: 550e8400-e29b-41d4-a716-446655440000
                    organization_id: org_xyz789
                    user_id: user_abc123
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListMemberAssignmentsResponse'
          description: List of member assignments
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List member assignments for a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: listGuardrailMemberAssignments
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    post:
      description: >-
        Assign multiple organization members to a specific guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: bulkAssignMembersToGuardrail
      parameters:
        - description: The unique identifier of the guardrail
          in: path
          name: id
          required: true
          schema:
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            example:
              member_user_ids:
                - user_abc123
                - user_def456
            schema:
              $ref: '#/components/schemas/BulkAssignMembersRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                assigned_count: 2
              schema:
                $ref: '#/components/schemas/BulkAssignMembersResponse'
          description: Assignment result
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Bulk assign members to a guardrail
      tags:
        - Guardrails
      x-speakeasy-name-override: bulkAssignMembers
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails/assignments/keys:
    get:
      description: >-
        List all API key guardrail assignments for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listKeyAssignments
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - assigned_by: user_abc123
                    created_at: '2025-08-24T10:30:00Z'
                    guardrail_id: 550e8400-e29b-41d4-a716-446655440001
                    id: 550e8400-e29b-41d4-a716-446655440000
                    key_hash: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
                    key_label: prod-key
                    key_name: Production Key
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListKeyAssignmentsResponse'
          description: List of key assignments
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all key assignments
      tags:
        - Guardrails
      x-speakeasy-name-override: listKeyAssignments
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /guardrails/assignments/members:
    get:
      description: >-
        List all organization member guardrail assignments for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listMemberAssignments
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - assigned_by: user_abc123
                    created_at: '2025-08-24T10:30:00Z'
                    guardrail_id: 550e8400-e29b-41d4-a716-446655440001
                    id: 550e8400-e29b-41d4-a716-446655440000
                    organization_id: org_xyz789
                    user_id: user_abc123
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListMemberAssignmentsResponse'
          description: List of member assignments
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all member assignments
      tags:
        - Guardrails
      x-speakeasy-name-override: listMemberAssignments
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /key:
    get:
      description: Get information on the API key associated with the current authentication session
      operationId: getCurrentKey
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  byok_usage: 17.38
                  byok_usage_daily: 17.38
                  byok_usage_monthly: 17.38
                  byok_usage_weekly: 17.38
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  expires_at: '2027-12-31T23:59:59Z'
                  include_byok_in_limit: false
                  is_free_tier: false
                  is_management_key: false
                  is_provisioning_key: false
                  label: sk-or-v1-au7...890
                  limit: 100
                  limit_remaining: 74.5
                  limit_reset: monthly
                  rate_limit:
                    interval: 1h
                    note: This field is deprecated and safe to ignore.
                    requests: 1000
                  usage: 25.5
                  usage_daily: 25.5
                  usage_monthly: 25.5
                  usage_weekly: 25.5
              schema:
                example:
                  data:
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_monthly: 17.38
                    byok_usage_weekly: 17.38
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    expires_at: '2027-12-31T23:59:59Z'
                    include_byok_in_limit: false
                    is_free_tier: false
                    is_management_key: false
                    is_provisioning_key: false
                    label: sk-or-v1-au7...890
                    limit: 100
                    limit_remaining: 74.5
                    limit_reset: monthly
                    rate_limit:
                      interval: 1h
                      note: This field is deprecated and safe to ignore.
                      requests: 1000
                    usage: 25.5
                    usage_daily: 25.5
                    usage_monthly: 25.5
                    usage_weekly: 25.5
                properties:
                  data:
                    description: Current API key information
                    example:
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_monthly: 17.38
                      byok_usage_weekly: 17.38
                      creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                      expires_at: '2027-12-31T23:59:59Z'
                      include_byok_in_limit: false
                      is_free_tier: false
                      is_management_key: false
                      is_provisioning_key: false
                      label: sk-or-v1-au7...890
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      rate_limit:
                        interval: 1h
                        note: This field is deprecated and safe to ignore.
                        requests: 1000
                      usage: 25.5
                      usage_daily: 25.5
                      usage_monthly: 25.5
                      usage_weekly: 25.5
                    properties:
                      byok_usage:
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_daily:
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_monthly:
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_weekly:
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                        format: double
                        type: number
                      creator_user_id:
                        description: >-
                          The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID.
                        example: user_2dHFtVWx2n56w6HkM0000000000
                        nullable: true
                        type: string
                      expires_at:
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                        format: date-time
                        nullable: true
                        type: string
                      include_byok_in_limit:
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                        type: boolean
                      is_free_tier:
                        description: Whether this is a free tier API key
                        example: false
                        type: boolean
                      is_management_key:
                        description: Whether this is a management key
                        example: false
                        type: boolean
                      is_provisioning_key:
                        deprecated: true
                        description: Whether this is a management key
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        nullable: true
                        type: number
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        nullable: true
                        type: number
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        nullable: true
                        type: string
                      rate_limit:
                        deprecated: true
                        description: Legacy rate limit information about a key. Will always return -1.
                        example:
                          interval: 1h
                          note: This field is deprecated and safe to ignore.
                          requests: 1000
                        properties:
                          interval:
                            description: Rate limit interval
                            example: 1h
                            type: string
                          note:
                            description: Note about the rate limit
                            example: This field is deprecated and safe to ignore.
                            type: string
                          requests:
                            description: Number of requests allowed per interval
                            example: 1000
                            type: integer
                        required:
                          - requests
                          - interval
                          - note
                        type: object
                      usage:
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                        format: double
                        type: number
                      usage_daily:
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                        format: double
                        type: number
                      usage_monthly:
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                        format: double
                        type: number
                      usage_weekly:
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                        format: double
                        type: number
                    required:
                      - label
                      - limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - is_free_tier
                      - is_management_key
                      - is_provisioning_key
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - creator_user_id
                      - rate_limit
                    type: object
                required:
                  - data
                type: object
          description: API key details
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Get current API key
      tags:
        - API Keys
      x-speakeasy-name-override: getCurrentKeyMetadata
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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: boolean
            x-openrouter-type: boolean
        - description: Number of API keys to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of API keys to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Filter API keys by workspace ID. By default, keys in the default workspace are returned.
          in: query
          name: workspace_id
          required: false
          schema:
            description: Filter API keys by workspace ID. By default, keys in the default workspace are returned.
            example: 0df9e665-d932-5740-b2c7-b52af166bc11
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_monthly: 17.38
                    byok_usage_weekly: 17.38
                    created_at: '2025-08-24T10:30:00Z'
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    disabled: false
                    expires_at: '2027-12-31T23:59:59Z'
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    include_byok_in_limit: false
                    label: Production API Key
                    limit: 100
                    limit_remaining: 74.5
                    limit_reset: monthly
                    name: My Production Key
                    updated_at: '2025-08-24T15:45:00Z'
                    usage: 25.5
                    usage_daily: 25.5
                    usage_monthly: 25.5
                    usage_weekly: 25.5
                    workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                example:
                  data:
                    - byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_monthly: 17.38
                      byok_usage_weekly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                      disabled: false
                      expires_at: '2027-12-31T23:59:59Z'
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      include_byok_in_limit: false
                      label: Production API Key
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      name: My Production Key
                      updated_at: '2025-08-24T15:45:00Z'
                      usage: 25.5
                      usage_daily: 25.5
                      usage_monthly: 25.5
                      usage_weekly: 25.5
                      workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                properties:
                  data:
                    description: List of API keys
                    items:
                      example:
                        byok_usage: 17.38
                        byok_usage_daily: 17.38
                        byok_usage_monthly: 17.38
                        byok_usage_weekly: 17.38
                        created_at: '2025-08-24T10:30:00Z'
                        creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                        disabled: false
                        expires_at: '2027-12-31T23:59:59Z'
                        hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        include_byok_in_limit: false
                        label: sk-or-v1-0e6...1c96
                        limit: 100
                        limit_remaining: 74.5
                        limit_reset: monthly
                        name: My Production Key
                        updated_at: '2025-08-24T15:45:00Z'
                        usage: 25.5
                        usage_daily: 25.5
                        usage_monthly: 25.5
                        usage_weekly: 25.5
                        workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                      properties:
                        byok_usage:
                          description: Total external BYOK usage (in USD) for the API key
                          example: 17.38
                          format: double
                          type: number
                        byok_usage_daily:
                          description: External BYOK usage (in USD) for the current UTC day
                          example: 17.38
                          format: double
                          type: number
                        byok_usage_monthly:
                          description: External BYOK usage (in USD) for current UTC month
                          example: 17.38
                          format: double
                          type: number
                        byok_usage_weekly:
                          description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                          example: 17.38
                          format: double
                          type: number
                        created_at:
                          description: ISO 8601 timestamp of when the API key was created
                          example: '2025-08-24T10:30:00Z'
                          type: string
                        creator_user_id:
                          description: >-
                            The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID.
                          example: user_2dHFtVWx2n56w6HkM0000000000
                          nullable: true
                          type: string
                        disabled:
                          description: Whether the API key is disabled
                          example: false
                          type: boolean
                        expires_at:
                          description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                          example: '2027-12-31T23:59:59Z'
                          format: date-time
                          nullable: true
                          type: string
                        hash:
                          description: Unique hash identifier for the API key
                          example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                          type: string
                        include_byok_in_limit:
                          description: Whether to include external BYOK usage in the credit limit
                          example: false
                          type: boolean
                        label:
                          description: Human-readable label for the API key
                          example: sk-or-v1-0e6...1c96
                          type: string
                        limit:
                          description: Spending limit for the API key in USD
                          example: 100
                          format: double
                          nullable: true
                          type: number
                        limit_remaining:
                          description: Remaining spending limit in USD
                          example: 74.5
                          format: double
                          nullable: true
                          type: number
                        limit_reset:
                          description: Type of limit reset for the API key
                          example: monthly
                          nullable: true
                          type: string
                        name:
                          description: Name of the API key
                          example: My Production Key
                          type: string
                        updated_at:
                          description: ISO 8601 timestamp of when the API key was last updated
                          example: '2025-08-24T15:45:00Z'
                          nullable: true
                          type: string
                        usage:
                          description: Total OpenRouter credit usage (in USD) for the API key
                          example: 25.5
                          format: double
                          type: number
                        usage_daily:
                          description: OpenRouter credit usage (in USD) for the current UTC day
                          example: 25.5
                          format: double
                          type: number
                        usage_monthly:
                          description: OpenRouter credit usage (in USD) for the current UTC month
                          example: 25.5
                          format: double
                          type: number
                        usage_weekly:
                          description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                          example: 25.5
                          format: double
                          type: number
                        workspace_id:
                          description: The workspace ID this API key belongs to.
                          example: 0df9e665-d932-5740-b2c7-b52af166bc11
                          type: string
                      required:
                        - hash
                        - name
                        - label
                        - disabled
                        - limit
                        - limit_remaining
                        - limit_reset
                        - include_byok_in_limit
                        - usage
                        - usage_daily
                        - usage_weekly
                        - usage_monthly
                        - byok_usage
                        - byok_usage_daily
                        - byok_usage_weekly
                        - byok_usage_monthly
                        - created_at
                        - updated_at
                        - creator_user_id
                        - workspace_id
                      type: object
                    type: array
                required:
                  - data
                type: object
          description: List of API keys
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List API keys
      tags:
        - API Keys
      x-speakeasy-name-override: list
    post:
      description: >-
        Create a new API key for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createKeys
      requestBody:
        content:
          application/json:
            example:
              expires_at: '2027-12-31T23:59:59Z'
              include_byok_in_limit: true
              limit: 50
              limit_reset: monthly
              name: My New API Key
            schema:
              example:
                expires_at: '2027-12-31T23:59:59Z'
                include_byok_in_limit: true
                limit: 50
                limit_reset: monthly
                name: My New API Key
              properties:
                creator_user_id:
                  description: >-
                    Optional user ID of the key creator. Only meaningful for organization-owned keys where a specific member is creating the key.
                  example: user_2dHFtVWx2n56w6HkM0000000000
                  minLength: 1
                  nullable: true
                  type: string
                expires_at:
                  description: >-
                    Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected
                  example: '2027-12-31T23:59:59Z'
                  format: date-time
                  nullable: true
                  type: string
                include_byok_in_limit:
                  description: Whether to include BYOK usage in the limit
                  example: true
                  type: boolean
                limit:
                  description: Optional spending limit for the API key in USD
                  example: 50
                  format: double
                  nullable: true
                  type: number
                limit_reset:
                  description: >-
                    Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday.
                  enum:
                    - daily
                    - weekly
                    - monthly
                    - null
                  example: monthly
                  nullable: true
                  type: string
                  x-speakeasy-unknown-values: allow
                name:
                  description: Name for the new API key
                  example: My New API Key
                  minLength: 1
                  type: string
                workspace_id:
                  description: The workspace to create the API key in. Defaults to the default workspace if not provided.
                  example: 0df9e665-d932-5740-b2c7-b52af166bc11
                  format: uuid
                  type: string
              required:
                - name
              type: object
        required: true
      responses:
        '201':
          content:
            application/json:
              example:
                data:
                  byok_usage: 0
                  byok_usage_daily: 0
                  byok_usage_monthly: 0
                  byok_usage_weekly: 0
                  created_at: '2025-08-24T10:30:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  disabled: false
                  expires_at: '2027-12-31T23:59:59Z'
                  hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                  include_byok_in_limit: true
                  label: My New API Key
                  limit: 50
                  limit_remaining: 50
                  limit_reset: monthly
                  name: My New API Key
                  updated_at: null
                  usage: 0
                  usage_daily: 0
                  usage_monthly: 0
                  usage_weekly: 0
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                key: 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
              schema:
                example:
                  data:
                    byok_usage: 0
                    byok_usage_daily: 0
                    byok_usage_monthly: 0
                    byok_usage_weekly: 0
                    created_at: '2025-08-24T10:30:00Z'
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    disabled: false
                    expires_at: '2027-12-31T23:59:59Z'
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    include_byok_in_limit: true
                    label: My New API Key
                    limit: 50
                    limit_remaining: 50
                    limit_reset: monthly
                    name: My New API Key
                    updated_at: null
                    usage: 0
                    usage_daily: 0
                    usage_monthly: 0
                    usage_weekly: 0
                    workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                  key: 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
                properties:
                  data:
                    description: The created API key information
                    example:
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_monthly: 17.38
                      byok_usage_weekly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                      disabled: false
                      expires_at: '2027-12-31T23:59:59Z'
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      include_byok_in_limit: false
                      label: sk-or-v1-0e6...1c96
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      name: My Production Key
                      updated_at: '2025-08-24T15:45:00Z'
                      usage: 25.5
                      usage_daily: 25.5
                      usage_monthly: 25.5
                      usage_weekly: 25.5
                      workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                    properties:
                      byok_usage:
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_daily:
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_monthly:
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_weekly:
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                        format: double
                        type: number
                      created_at:
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                        type: string
                      creator_user_id:
                        description: >-
                          The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID.
                        example: user_2dHFtVWx2n56w6HkM0000000000
                        nullable: true
                        type: string
                      disabled:
                        description: Whether the API key is disabled
                        example: false
                        type: boolean
                      expires_at:
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                        format: date-time
                        nullable: true
                        type: string
                      hash:
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        nullable: true
                        type: number
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        nullable: true
                        type: number
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        nullable: true
                        type: string
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                        nullable: true
                        type: string
                      usage:
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                        format: double
                        type: number
                      usage_daily:
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                        format: double
                        type: number
                      usage_monthly:
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                        format: double
                        type: number
                      usage_weekly:
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                        format: double
                        type: number
                      workspace_id:
                        description: The workspace ID this API key belongs to.
                        example: 0df9e665-d932-5740-b2c7-b52af166bc11
                        type: string
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                      - creator_user_id
                      - workspace_id
                    type: object
                  key:
                    description: The actual API key string (only shown once)
                    example: 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
                    type: string
                required:
                  - data
                  - key
                type: object
          description: API key created successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Create a new API key
      tags:
        - API Keys
      x-speakeasy-name-override: create
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /keys/{hash}:
    delete:
      description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: deleteKeys
      parameters:
        - description: The hash identifier of the API key to delete
          in: path
          name: hash
          required: true
          schema:
            description: The hash identifier of the API key to delete
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                example:
                  deleted: true
                properties:
                  deleted:
                    const: true
                    description: Confirmation that the API key was deleted
                    example: true
                    type: boolean
                required:
                  - deleted
                type: object
          description: API key deleted successfully
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Delete an API key
      tags:
        - API Keys
      x-speakeasy-name-override: delete
    get:
      description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: getKey
      parameters:
        - description: The hash identifier of the API key to retrieve
          in: path
          name: hash
          required: true
          schema:
            description: The hash identifier of the API key to retrieve
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  byok_usage: 17.38
                  byok_usage_daily: 17.38
                  byok_usage_monthly: 17.38
                  byok_usage_weekly: 17.38
                  created_at: '2025-08-24T10:30:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  disabled: false
                  expires_at: '2027-12-31T23:59:59Z'
                  hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                  include_byok_in_limit: false
                  label: Production API Key
                  limit: 100
                  limit_remaining: 74.5
                  limit_reset: monthly
                  name: My Production Key
                  updated_at: '2025-08-24T15:45:00Z'
                  usage: 25.5
                  usage_daily: 25.5
                  usage_monthly: 25.5
                  usage_weekly: 25.5
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                example:
                  data:
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_monthly: 17.38
                    byok_usage_weekly: 17.38
                    created_at: '2025-08-24T10:30:00Z'
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    disabled: false
                    expires_at: '2027-12-31T23:59:59Z'
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    include_byok_in_limit: false
                    label: Production API Key
                    limit: 100
                    limit_remaining: 74.5
                    limit_reset: monthly
                    name: My Production Key
                    updated_at: '2025-08-24T15:45:00Z'
                    usage: 25.5
                    usage_daily: 25.5
                    usage_monthly: 25.5
                    usage_weekly: 25.5
                    workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                properties:
                  data:
                    description: The API key information
                    example:
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_monthly: 17.38
                      byok_usage_weekly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                      disabled: false
                      expires_at: '2027-12-31T23:59:59Z'
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      include_byok_in_limit: false
                      label: sk-or-v1-0e6...1c96
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      name: My Production Key
                      updated_at: '2025-08-24T15:45:00Z'
                      usage: 25.5
                      usage_daily: 25.5
                      usage_monthly: 25.5
                      usage_weekly: 25.5
                      workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                    properties:
                      byok_usage:
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_daily:
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_monthly:
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_weekly:
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                        format: double
                        type: number
                      created_at:
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                        type: string
                      creator_user_id:
                        description: >-
                          The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID.
                        example: user_2dHFtVWx2n56w6HkM0000000000
                        nullable: true
                        type: string
                      disabled:
                        description: Whether the API key is disabled
                        example: false
                        type: boolean
                      expires_at:
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                        format: date-time
                        nullable: true
                        type: string
                      hash:
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        nullable: true
                        type: number
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        nullable: true
                        type: number
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        nullable: true
                        type: string
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                        nullable: true
                        type: string
                      usage:
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                        format: double
                        type: number
                      usage_daily:
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                        format: double
                        type: number
                      usage_monthly:
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                        format: double
                        type: number
                      usage_weekly:
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                        format: double
                        type: number
                      workspace_id:
                        description: The workspace ID this API key belongs to.
                        example: 0df9e665-d932-5740-b2c7-b52af166bc11
                        type: string
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                      - creator_user_id
                      - workspace_id
                    type: object
                required:
                  - data
                type: object
          description: API key details
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Get a single API key
      tags:
        - API Keys
      x-speakeasy-name-override: get
    patch:
      description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateKeys
      parameters:
        - description: The hash identifier of the API key to update
          in: path
          name: hash
          required: true
          schema:
            description: The hash identifier of the API key to update
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
            type: string
      requestBody:
        content:
          application/json:
            example:
              disabled: false
              include_byok_in_limit: true
              limit: 75
              limit_reset: daily
              name: Updated API Key Name
            schema:
              example:
                disabled: false
                include_byok_in_limit: true
                limit: 75
                limit_reset: daily
                name: Updated API Key Name
              properties:
                disabled:
                  description: Whether to disable the API key
                  example: false
                  type: boolean
                include_byok_in_limit:
                  description: Whether to include BYOK usage in the limit
                  example: true
                  type: boolean
                limit:
                  description: New spending limit for the API key in USD
                  example: 75
                  format: double
                  nullable: true
                  type: number
                limit_reset:
                  description: >-
                    New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday.
                  enum:
                    - daily
                    - weekly
                    - monthly
                    - null
                  example: daily
                  nullable: true
                  type: string
                  x-speakeasy-unknown-values: allow
                name:
                  description: New name for the API key
                  example: Updated API Key Name
                  type: string
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  byok_usage: 17.38
                  byok_usage_daily: 17.38
                  byok_usage_monthly: 17.38
                  byok_usage_weekly: 17.38
                  created_at: '2025-08-24T10:30:00Z'
                  creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                  disabled: false
                  expires_at: null
                  hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                  include_byok_in_limit: true
                  label: Updated API Key Name
                  limit: 75
                  limit_remaining: 49.5
                  limit_reset: daily
                  name: Updated API Key Name
                  updated_at: '2025-08-24T16:00:00Z'
                  usage: 25.5
                  usage_daily: 25.5
                  usage_monthly: 25.5
                  usage_weekly: 25.5
                  workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
              schema:
                example:
                  data:
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_monthly: 17.38
                    byok_usage_weekly: 17.38
                    created_at: '2025-08-24T10:30:00Z'
                    creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                    disabled: false
                    expires_at: null
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    include_byok_in_limit: true
                    label: Updated API Key Name
                    limit: 75
                    limit_remaining: 49.5
                    limit_reset: daily
                    name: Updated API Key Name
                    updated_at: '2025-08-24T16:00:00Z'
                    usage: 25.5
                    usage_daily: 25.5
                    usage_monthly: 25.5
                    usage_weekly: 25.5
                    workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                properties:
                  data:
                    description: The updated API key information
                    example:
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_monthly: 17.38
                      byok_usage_weekly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
                      disabled: false
                      expires_at: '2027-12-31T23:59:59Z'
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      include_byok_in_limit: false
                      label: sk-or-v1-0e6...1c96
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      name: My Production Key
                      updated_at: '2025-08-24T15:45:00Z'
                      usage: 25.5
                      usage_daily: 25.5
                      usage_monthly: 25.5
                      usage_weekly: 25.5
                      workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
                    properties:
                      byok_usage:
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_daily:
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_monthly:
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                        format: double
                        type: number
                      byok_usage_weekly:
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                        format: double
                        type: number
                      created_at:
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                        type: string
                      creator_user_id:
                        description: >-
                          The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID.
                        example: user_2dHFtVWx2n56w6HkM0000000000
                        nullable: true
                        type: string
                      disabled:
                        description: Whether the API key is disabled
                        example: false
                        type: boolean
                      expires_at:
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                        format: date-time
                        nullable: true
                        type: string
                      hash:
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        type: string
                      include_byok_in_limit:
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                        type: boolean
                      label:
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                        type: string
                      limit:
                        description: Spending limit for the API key in USD
                        example: 100
                        format: double
                        nullable: true
                        type: number
                      limit_remaining:
                        description: Remaining spending limit in USD
                        example: 74.5
                        format: double
                        nullable: true
                        type: number
                      limit_reset:
                        description: Type of limit reset for the API key
                        example: monthly
                        nullable: true
                        type: string
                      name:
                        description: Name of the API key
                        example: My Production Key
                        type: string
                      updated_at:
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                        nullable: true
                        type: string
                      usage:
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                        format: double
                        type: number
                      usage_daily:
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                        format: double
                        type: number
                      usage_monthly:
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                        format: double
                        type: number
                      usage_weekly:
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                        format: double
                        type: number
                      workspace_id:
                        description: The workspace ID this API key belongs to.
                        example: 0df9e665-d932-5740-b2c7-b52af166bc11
                        type: string
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                      - creator_user_id
                      - workspace_id
                    type: object
                required:
                  - data
                type: object
          description: API key updated successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '429':
          content:
            application/json:
              example:
                error:
                  code: 429
                  message: Rate limit exceeded
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests - Rate limit exceeded
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Update an API key
      tags:
        - API Keys
      x-speakeasy-name-override: update
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
                content:
                  - text: I'm doing well, thank you for asking! How can I help you today?
                    type: text
                id: msg_abc123
                model: anthropic/claude-sonnet-4
                role: assistant
                stop_reason: end_turn
                type: message
                usage:
                  input_tokens: 12
                  output_tokens: 18
              schema:
                $ref: '#/components/schemas/MessagesResult'
            text/event-stream:
              example:
                data:
                  delta:
                    text: Hello
                    type: text_delta
                  index: 0
                  type: content_block_delta
                event: content_block_delta
              schema:
                $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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /models:
    get:
      operationId: getModels
      parameters:
        - description: Filter models by use case category
          in: query
          name: category
          required: false
          schema:
            description: Filter models by use case category
            enum:
              - programming
              - roleplay
              - marketing
              - marketing/seo
              - technology
              - science
              - translation
              - legal
              - finance
              - health
              - trivia
              - academia
            example: programming
            type: string
            x-speakeasy-unknown-values: allow
        - 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). 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). 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
            example: newest
            type: string
            x-speakeasy-unknown-values: allow
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - architecture:
                      input_modalities:
                        - text
                      instruct_type: chatml
                      modality: text->text
                      output_modalities:
                        - text
                      tokenizer: GPT
                    canonical_slug: openai/gpt-4
                    context_length: 8192
                    created: 1692901234
                    default_parameters: null
                    description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
                    expiration_date: null
                    id: openai/gpt-4
                    knowledge_cutoff: null
                    links:
                      details: /api/v1/models/openai/gpt-5.4/endpoints
                    name: GPT-4
                    per_request_limits: null
                    pricing:
                      completion: '0.00006'
                      image: '0'
                      prompt: '0.00003'
                      request: '0'
                    supported_parameters:
                      - temperature
                      - top_p
                      - max_tokens
                    supported_voices: null
                    top_provider:
                      context_length: 8192
                      is_moderated: true
                      max_completion_tokens: 4096
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
          description: Returns a list of models or RSS feed
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all models and their properties
      tags:
        - Models
      x-speakeasy-name-override: list
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /models/{author}/{slug}/endpoints:
    get:
      operationId: listEndpoints
      parameters:
        - description: The author/organization of the model
          in: path
          name: author
          required: true
          schema:
            description: The author/organization of the model
            example: openai
            type: string
        - description: The model slug
          in: path
          name: slug
          required: true
          schema:
            description: The model slug
            example: gpt-4
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  architecture:
                    input_modalities:
                      - text
                    instruct_type: chatml
                    modality: text->text
                    output_modalities:
                      - text
                    tokenizer: GPT
                  created: 1692901234
                  description: GPT-4 is a large multimodal model.
                  endpoints: []
                  id: openai/gpt-4
                  name: GPT-4
              schema:
                example:
                  data:
                    architecture:
                      input_modalities:
                        - text
                      instruct_type: chatml
                      modality: text->text
                      output_modalities:
                        - text
                      tokenizer: GPT
                    created: 1692901234
                    description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
                    endpoints:
                      - context_length: 8192
                        latency_last_30m:
                          p50: 0.25
                          p75: 0.35
                          p90: 0.48
                          p99: 0.85
                        max_completion_tokens: 4096
                        max_prompt_tokens: 8192
                        model_id: openai/gpt-4
                        model_name: GPT-4
                        name: 'OpenAI: GPT-4'
                        pricing:
                          completion: '0.00006'
                          image: '0'
                          prompt: '0.00003'
                          request: '0'
                        provider_name: OpenAI
                        quantization: fp16
                        status: default
                        supported_parameters:
                          - temperature
                          - top_p
                          - max_tokens
                        supports_implicit_caching: true
                        tag: openai
                        throughput_last_30m:
                          p50: 45.2
                          p75: 38.5
                          p90: 28.3
                          p99: 15.1
                        uptime_last_1d: 99.8
                        uptime_last_30m: 99.5
                        uptime_last_5m: 100
                    id: openai/gpt-4
                    name: GPT-4
                properties:
                  data:
                    $ref: '#/components/schemas/ListEndpointsResponse'
                required:
                  - data
                type: object
          description: Returns a list of endpoints
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all endpoints for a model
      tags:
        - Endpoints
      x-speakeasy-name-override: list
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /models/count:
    get:
      operationId: listModelsCount
      parameters:
        - description: >-
            Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text".
          in: query
          name: output_modalities
          required: false
          schema:
            description: >-
              Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or "all" to include all models. Defaults to "text".
            example: text
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  count: 150
              schema:
                $ref: '#/components/schemas/ModelsCountResponse'
          description: Returns the total count of available models
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Get total count of available models
      tags:
        - Models
      x-speakeasy-name-override: count
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /models/user:
    get:
      description: >-
        List models filtered by user provider preferences, [privacy settings](https://openrouter.ai/docs/guides/privacy/provider-logging), and [guardrails](https://openrouter.ai/docs/guides/features/guardrails). If requesting through `eu.openrouter.ai/api/v1/...` the results will be filtered to models that satisfy [EU in-region routing](https://openrouter.ai/docs/guides/privacy/provider-logging#enterprise-eu-in-region-routing).
      operationId: listModelsUser
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - architecture:
                      input_modalities:
                        - text
                      instruct_type: chatml
                      modality: text->text
                      output_modalities:
                        - text
                      tokenizer: GPT
                    canonical_slug: openai/gpt-4
                    context_length: 8192
                    created: 1692901234
                    default_parameters: null
                    description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
                    expiration_date: null
                    id: openai/gpt-4
                    knowledge_cutoff: null
                    links:
                      details: /api/v1/models/openai/gpt-5.4/endpoints
                    name: GPT-4
                    per_request_limits: null
                    pricing:
                      completion: '0.00006'
                      image: '0'
                      prompt: '0.00003'
                      request: '0'
                    supported_parameters:
                      - temperature
                      - top_p
                      - max_tokens
                    supported_voices: null
                    top_provider:
                      context_length: 8192
                      is_moderated: true
                      max_completion_tokens: 4096
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
          description: Returns a list of models filtered by user provider preferences
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      security:
        - bearer: []
      summary: List models filtered by user provider preferences, privacy settings, and guardrails
      tags:
        - Models
      x-speakeasy-name-override: listForUser
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
        - description: 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
        '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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /organization/members:
    get:
      description: >-
        List all members of the organization associated with the authenticated management key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listOrganizationMembers
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - email: jane.doe@example.com
                    first_name: Jane
                    id: user_2dHFtVWx2n56w6HkM0000000000
                    last_name: Doe
                    role: member
                total_count: 25
              schema:
                properties:
                  data:
                    description: List of organization members
                    items:
                      properties:
                        email:
                          description: Email address of the member
                          example: jane.doe@example.com
                          type: string
                        first_name:
                          description: First name of the member
                          example: Jane
                          nullable: true
                          type: string
                        id:
                          description: User ID of the organization member
                          example: user_2dHFtVWx2n56w6HkM0000000000
                          type: string
                        last_name:
                          description: Last name of the member
                          example: Doe
                          nullable: true
                          type: string
                        role:
                          description: Role of the member in the organization
                          enum:
                            - org:admin
                            - org:member
                          example: org:member
                          type: string
                          x-speakeasy-unknown-values: allow
                      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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - created_at: '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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - 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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
                            x-speakeasy-unknown-values: allow
                          nullable: true
                          type: array
                        headquarters:
                          description: ISO 3166-1 Alpha-2 country code of the provider headquarters
                          enum:
                            - AD
                            - AE
                            - AF
                            - AG
                            - AI
                            - AL
                            - AM
                            - AO
                            - AQ
                            - AR
                            - AS
                            - AT
                            - AU
                            - AW
                            - AX
                            - AZ
                            - BA
                            - BB
                            - BD
                            - BE
                            - BF
                            - BG
                            - BH
                            - BI
                            - BJ
                            - BL
                            - BM
                            - BN
                            - BO
                            - BQ
                            - BR
                            - BS
                            - BT
                            - BV
                            - BW
                            - BY
                            - BZ
                            - CA
                            - CC
                            - CD
                            - CF
                            - CG
                            - CH
                            - CI
                            - CK
                            - CL
                            - CM
                            - CN
                            - CO
                            - CR
                            - CU
                            - CV
                            - CW
                            - CX
                            - CY
                            - CZ
                            - DE
                            - DJ
                            - DK
                            - DM
                            - DO
                            - DZ
                            - EC
                            - EE
                            - EG
                            - EH
                            - ER
                            - ES
                            - ET
                            - FI
                            - FJ
                            - FK
                            - FM
                            - FO
                            - FR
                            - GA
                            - GB
                            - GD
                            - GE
                            - GF
                            - GG
                            - GH
                            - GI
                            - GL
                            - GM
                            - GN
                            - GP
                            - GQ
                            - GR
                            - GS
                            - GT
                            - GU
                            - GW
                            - GY
                            - HK
                            - HM
                            - HN
                            - HR
                            - HT
                            - HU
                            - ID
                            - IE
                            - IL
                            - IM
                            - IN
                            - IO
                            - IQ
                            - IR
                            - IS
                            - IT
                            - JE
                            - JM
                            - JO
                            - JP
                            - KE
                            - KG
                            - KH
                            - KI
                            - KM
                            - KN
                            - KP
                            - KR
                            - KW
                            - KY
                            - KZ
                            - LA
                            - LB
                            - LC
                            - LI
                            - LK
                            - LR
                            - LS
                            - LT
                            - LU
                            - LV
                            - LY
                            - MA
                            - MC
                            - MD
                            - ME
                            - MF
                            - MG
                            - MH
                            - MK
                            - ML
                            - MM
                            - MN
                            - MO
                            - MP
                            - MQ
                            - MR
                            - MS
                            - MT
                            - MU
                            - MV
                            - MW
                            - MX
                            - MY
                            - MZ
                            - NA
                            - NC
                            - NE
                            - NF
                            - NG
                            - NI
                            - NL
                            - 'NO'
                            - NP
                            - NR
                            - NU
                            - NZ
                            - OM
                            - PA
                            - PE
                            - PF
                            - PG
                            - PH
                            - PK
                            - PL
                            - PM
                            - PN
                            - PR
                            - PS
                            - PT
                            - PW
                            - PY
                            - QA
                            - RE
                            - RO
                            - RS
                            - RU
                            - RW
                            - SA
                            - SB
                            - SC
                            - SD
                            - SE
                            - SG
                            - SH
                            - SI
                            - SJ
                            - SK
                            - SL
                            - SM
                            - SN
                            - SO
                            - SR
                            - SS
                            - ST
                            - SV
                            - SX
                            - SY
                            - SZ
                            - TC
                            - TD
                            - TF
                            - TG
                            - TH
                            - TJ
                            - TK
                            - TL
                            - TM
                            - TN
                            - TO
                            - TR
                            - TT
                            - TV
                            - TW
                            - TZ
                            - UA
                            - UG
                            - UM
                            - US
                            - UY
                            - UZ
                            - VA
                            - VC
                            - VE
                            - VG
                            - VI
                            - VN
                            - VU
                            - WF
                            - WS
                            - YE
                            - YT
                            - ZA
                            - ZM
                            - ZW
                            - null
                          example: US
                          nullable: true
                          type: string
                          x-speakeasy-unknown-values: allow
                        name:
                          description: Display name of the provider
                          example: OpenAI
                          type: string
                        privacy_policy_url:
                          description: URL to the provider's privacy policy
                          example: https://openai.com/privacy
                          nullable: true
                          type: string
                        slug:
                          description: URL-friendly identifier for the provider
                          example: openai
                          type: string
                        status_page_url:
                          description: URL to the provider's status page
                          example: https://status.openai.com
                          nullable: true
                          type: string
                        terms_of_service_url:
                          description: URL to the provider's terms of service
                          example: https://openai.com/terms
                          nullable: true
                          type: string
                      required:
                        - name
                        - slug
                        - privacy_policy_url
                      type: object
                    type: array
                required:
                  - data
                type: object
          description: Returns a list of providers
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List all providers
      tags:
        - Providers
      x-speakeasy-name-override: list
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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:
                created_at: 1700000000
                id: resp_abc123
                model: openai/gpt-4o
                object: response
                output:
                  - content:
                      - text: Why did the chicken cross the road? To get to the other side!
                        type: output_text
                    role: assistant
                    type: message
                status: completed
                usage:
                  completion_tokens: 20
                  prompt_tokens: 10
                  total_tokens: 30
              schema:
                $ref: '#/components/schemas/OpenResponsesResult'
            text/event-stream:
              example:
                data:
                  delta: Hello
                  type: response.output_text.delta
              schema:
                $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:
        - beta.responses
      x-speakeasy-name-override: send
      x-speakeasy-stream-request-field: stream
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /videos/{jobId}/content:
    get:
      description: Streams the generated video content from the upstream provider
      operationId: listVideosContent
      parameters:
        - in: path
          name: jobId
          required: true
          schema:
            example: job-abc123
            minLength: 1
            type: string
        - in: query
          name: index
          required: false
          schema:
            default: 0
            example: 0
            minimum: 0
            nullable: true
            type: integer
      responses:
        '200':
          content:
            application/octet-stream:
              example: <binary video data>
              schema:
                format: binary
                type: string
          description: Video content stream
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
        '502':
          content:
            application/json:
              example:
                error:
                  code: 502
                  message: Provider returned error
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
          description: Bad Gateway - Provider/upstream API failure
      summary: Download generated video content
      tags:
        - Video Generation
      x-speakeasy-name-override: getVideoContent
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /workspaces:
    get:
      description: >-
        List all workspaces for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: listWorkspaces
      parameters:
        - description: Number of records to skip for pagination
          in: query
          name: offset
          required: false
          schema:
            description: Number of records to skip for pagination
            example: 0
            minimum: 0
            nullable: false
            type: integer
        - description: Maximum number of records to return (max 100)
          in: query
          name: limit
          required: false
          schema:
            description: Maximum number of records to return (max 100)
            example: 50
            maximum: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - created_at: '2025-08-24T10:30:00Z'
                    created_by: user_abc123
                    default_image_model: openai/dall-e-3
                    default_provider_sort: price
                    default_text_model: openai/gpt-4o
                    description: Production environment workspace
                    id: 550e8400-e29b-41d4-a716-446655440000
                    io_logging_api_key_ids: null
                    io_logging_sampling_rate: 1
                    is_data_discount_logging_enabled: true
                    is_observability_broadcast_enabled: false
                    is_observability_io_logging_enabled: false
                    name: Production
                    slug: production
                    updated_at: '2025-08-24T15:45:00Z'
                total_count: 1
              schema:
                $ref: '#/components/schemas/ListWorkspacesResponse'
          description: List of workspaces
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: List workspaces
      tags:
        - Workspaces
      x-speakeasy-name-override: list
      x-speakeasy-pagination:
        inputs:
          - in: parameters
            name: offset
            type: offset
          - in: parameters
            name: limit
            type: limit
        outputs:
          results: $.data
        type: offsetLimit
    post:
      description: >-
        Create a new workspace for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: createWorkspace
      requestBody:
        content:
          application/json:
            example:
              default_image_model: openai/dall-e-3
              default_provider_sort: price
              default_text_model: openai/gpt-4o
              description: Production environment workspace
              name: Production
              slug: production
            schema:
              $ref: '#/components/schemas/CreateWorkspaceRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              example:
                data:
                  created_at: '2025-08-24T10:30:00Z'
                  created_by: user_abc123
                  default_image_model: openai/dall-e-3
                  default_provider_sort: price
                  default_text_model: openai/gpt-4o
                  description: Production environment workspace
                  id: 550e8400-e29b-41d4-a716-446655440000
                  io_logging_api_key_ids: null
                  io_logging_sampling_rate: 1
                  is_data_discount_logging_enabled: true
                  is_observability_broadcast_enabled: false
                  is_observability_io_logging_enabled: false
                  name: Production
                  slug: production
                  updated_at: null
              schema:
                $ref: '#/components/schemas/CreateWorkspaceResponse'
          description: Workspace created successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Create a workspace
      tags:
        - Workspaces
      x-speakeasy-name-override: create
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /workspaces/{id}:
    delete:
      description: >-
        Delete an existing workspace. The default workspace cannot be deleted. Workspaces with active API keys cannot be deleted. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: deleteWorkspace
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          required: true
          schema:
            description: The workspace ID (UUID) or slug
            example: production
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                deleted: true
              schema:
                $ref: '#/components/schemas/DeleteWorkspaceResponse'
          description: Workspace deleted successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Delete a workspace
      tags:
        - Workspaces
      x-speakeasy-name-override: delete
    get:
      description: Get a single workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: getWorkspace
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          required: true
          schema:
            description: The workspace ID (UUID) or slug
            example: production
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2025-08-24T10:30:00Z'
                  created_by: user_abc123
                  default_image_model: openai/dall-e-3
                  default_provider_sort: price
                  default_text_model: openai/gpt-4o
                  description: Production environment workspace
                  id: 550e8400-e29b-41d4-a716-446655440000
                  io_logging_api_key_ids: null
                  io_logging_sampling_rate: 1
                  is_data_discount_logging_enabled: true
                  is_observability_broadcast_enabled: false
                  is_observability_io_logging_enabled: false
                  name: Production
                  slug: production
                  updated_at: '2025-08-24T15:45:00Z'
              schema:
                $ref: '#/components/schemas/GetWorkspaceResponse'
          description: Workspace details
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Get a workspace
      tags:
        - Workspaces
      x-speakeasy-name-override: get
    patch:
      description: >-
        Update an existing workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: updateWorkspace
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          required: true
          schema:
            description: The workspace ID (UUID) or slug
            example: production
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              name: Updated Workspace
              slug: updated-workspace
            schema:
              $ref: '#/components/schemas/UpdateWorkspaceRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  created_at: '2025-08-24T10:30:00Z'
                  created_by: user_abc123
                  default_image_model: openai/dall-e-3
                  default_provider_sort: price
                  default_text_model: openai/gpt-4o
                  description: Production environment workspace
                  id: 550e8400-e29b-41d4-a716-446655440000
                  io_logging_api_key_ids: null
                  io_logging_sampling_rate: 1
                  is_data_discount_logging_enabled: true
                  is_observability_broadcast_enabled: false
                  is_observability_io_logging_enabled: false
                  name: Updated Workspace
                  slug: updated-workspace
                  updated_at: '2025-08-25T10:00:00Z'
              schema:
                $ref: '#/components/schemas/UpdateWorkspaceResponse'
          description: Workspace updated successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Update a workspace
      tags:
        - Workspaces
      x-speakeasy-name-override: update
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /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
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
  /workspaces/{id}/members/remove:
    post:
      description: >-
        Remove multiple members from a workspace. Members with active API keys in the workspace cannot be removed. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      operationId: bulkRemoveWorkspaceMembers
      parameters:
        - description: The workspace ID (UUID) or slug
          in: path
          name: id
          required: true
          schema:
            description: The workspace ID (UUID) or slug
            example: production
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            example:
              user_ids:
                - user_abc123
                - user_def456
            schema:
              $ref: '#/components/schemas/BulkRemoveWorkspaceMembersRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                removed_count: 2
              schema:
                $ref: '#/components/schemas/BulkRemoveWorkspaceMembersResponse'
          description: Members removed successfully
        '400':
          content:
            application/json:
              example:
                error:
                  code: 400
                  message: Invalid request parameters
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request - Invalid request parameters or malformed input
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Missing Authentication header
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized - Authentication required or invalid credentials
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Only management keys can perform this operation
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden - Authentication successful but insufficient permissions
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Resource not found
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found - Resource does not exist
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: Internal Server Error
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
          description: Internal Server Error - Unexpected server error
      summary: Bulk remove members from a workspace
      tags:
        - Workspaces
      x-speakeasy-name-override: bulkRemoveMembers
    parameters:
      - $ref: "#/components/parameters/AppIdentifier"
      - $ref: "#/components/parameters/AppDisplayName"
      - $ref: "#/components/parameters/AppCategories"
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: Chat completion endpoints
    name: Chat
  - description: Credit management endpoints
    name: Credits
  - description: Datasets endpoints
    name: Datasets
  - description: Text embedding endpoints
    name: Embeddings
  - description: Endpoint information
    name: Endpoints
  - description: Generation history endpoints
    name: Generations
  - description: Guardrails endpoints
    name: Guardrails
  - description: Model information endpoints
    name: Models
  - description: OAuth authentication endpoints
    name: OAuth
  - description: 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: 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
  - description: beta.responses endpoints
    name: beta.responses
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
x-speakeasy-globals:
  parameters:
    - $ref: "#/components/parameters/AppIdentifier"
    - $ref: "#/components/parameters/AppDisplayName"
    - $ref: "#/components/parameters/AppCategories"
