openapi: 3.1.0
info:
  title: OpenRouter API
  version: 1.0.0
  description: OpenAI-compatible API with additional OpenRouter features
  contact:
    name: OpenRouter Support
    url: https://openrouter.ai/docs
    email: support@openrouter.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
components:
  schemas:
    OpenAIResponsesResponseStatus:
      type: string
      enum:
        - completed
        - incomplete
        - in_progress
        - failed
        - cancelled
        - queued
    FileCitation:
      type: object
      properties:
        type:
          type: string
          enum:
            - file_citation
        file_id:
          type: string
        filename:
          type: string
        index:
          type: number
      required:
        - type
        - file_id
        - filename
        - index
      example:
        type: file_citation
        file_id: file-abc123
        filename: research_paper.pdf
        index: 0
    URLCitation:
      type: object
      properties:
        type:
          type: string
          enum:
            - url_citation
        url:
          type: string
        title:
          type: string
        start_index:
          type: number
        end_index:
          type: number
      required:
        - type
        - url
        - title
        - start_index
        - end_index
      example:
        type: url_citation
        start_index: 0
        end_index: 42
        title: OpenRouter Documentation
        url: https://openrouter.ai/docs
    FilePath:
      type: object
      properties:
        type:
          type: string
          enum:
            - file_path
        file_id:
          type: string
        index:
          type: number
      required:
        - type
        - file_id
        - index
      example:
        type: file_path
        file_id: file-xyz789
        index: 0
    OpenAIResponsesAnnotation:
      anyOf:
        - $ref: '#/components/schemas/FileCitation'
        - $ref: '#/components/schemas/URLCitation'
        - $ref: '#/components/schemas/FilePath'
    ResponseOutputText:
      type: object
      properties:
        type:
          type: string
          enum:
            - output_text
        text:
          type: string
        annotations:
          type: array
          items:
            $ref: '#/components/schemas/OpenAIResponsesAnnotation'
        logprobs:
          type: array
          items:
            type: object
            properties:
              token:
                type: string
              bytes:
                type: array
                items:
                  type: number
              logprob:
                type: number
              top_logprobs:
                type: array
                items:
                  type: object
                  properties:
                    token:
                      type: string
                    bytes:
                      type: array
                      items:
                        type: number
                    logprob:
                      type: number
                  required:
                    - token
                    - bytes
                    - logprob
            required:
              - token
              - bytes
              - logprob
              - top_logprobs
      required:
        - type
        - text
      example:
        type: output_text
        text: The capital of France is Paris.
        annotations:
          - type: url_citation
            start_index: 0
            end_index: 42
            title: Paris - Wikipedia
            url: https://en.wikipedia.org/wiki/Paris
    OpenAIResponsesRefusalContent:
      type: object
      properties:
        type:
          type: string
          enum:
            - refusal
        refusal:
          type: string
      required:
        - type
        - refusal
      example:
        type: refusal
        refusal: I'm sorry, I cannot assist with that request
    OutputMessage:
      type: object
      properties:
        id:
          type: string
        role:
          type: string
          enum:
            - assistant
        type:
          type: string
          enum:
            - message
        status:
          anyOf:
            - type: string
              enum:
                - completed
            - type: string
              enum:
                - incomplete
            - type: string
              enum:
                - in_progress
        content:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/ResponseOutputText'
              - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
      required:
        - id
        - role
        - type
        - content
      example:
        id: msg-abc123
        role: assistant
        type: message
        status: completed
        content:
          - type: output_text
            text: Hello! How can I help you today?
    ResponsesOutputMessage:
      allOf:
        - $ref: '#/components/schemas/OutputMessage'
        - type: object
          properties: {}
      example:
        id: msg-123
        type: message
        role: assistant
        status: completed
        content:
          - type: output_text
            text: Hello! How can I help you?
            annotations: []
      description: An output message item
    ReasoningTextContent:
      type: object
      properties:
        type:
          type: string
          enum:
            - reasoning_text
        text:
          type: string
      required:
        - type
        - text
      example:
        type: reasoning_text
        text: Let me think step by step about this problem...
    ReasoningSummaryText:
      type: object
      properties:
        type:
          type: string
          enum:
            - summary_text
        text:
          type: string
      required:
        - type
        - text
      example:
        type: summary_text
        text: Analyzed the problem using first principles
    OutputItemReasoning:
      type: object
      properties:
        type:
          type: string
          enum:
            - reasoning
        id:
          type: string
        content:
          type: array
          items:
            $ref: '#/components/schemas/ReasoningTextContent'
        summary:
          type: array
          items:
            $ref: '#/components/schemas/ReasoningSummaryText'
        encrypted_content:
          type: string
          nullable: true
        status:
          anyOf:
            - type: string
              enum:
                - completed
            - type: string
              enum:
                - incomplete
            - type: string
              enum:
                - in_progress
      required:
        - type
        - id
        - summary
      example:
        type: reasoning
        id: reasoning-abc123
        summary:
          - type: summary_text
            text: Analyzed the problem using first principles
    ResponsesOutputItemReasoning:
      allOf:
        - $ref: '#/components/schemas/OutputItemReasoning'
        - type: object
          properties:
            signature:
              type: string
              nullable: true
              description: A signature for the reasoning content, used for verification
              example: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
            format:
              type: string
              nullable: true
              enum:
                - unknown
                - openai-responses-v1
                - azure-openai-responses-v1
                - xai-responses-v1
                - anthropic-claude-v1
                - google-gemini-v1
              description: The format of the reasoning content
              example: anthropic-claude-v1
      example:
        id: reasoning-123
        type: reasoning
        status: completed
        summary:
          - type: summary_text
            text: Analyzed the problem and found the optimal solution.
        content:
          - type: reasoning_text
            text: First, we analyze the problem...
        signature: EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj...
        format: anthropic-claude-v1
      description: An output item containing reasoning
    OutputItemFunctionCall:
      type: object
      properties:
        type:
          type: string
          enum:
            - function_call
        id:
          type: string
        name:
          type: string
        arguments:
          type: string
        call_id:
          type: string
        status:
          anyOf:
            - type: string
              enum:
                - completed
            - type: string
              enum:
                - incomplete
            - type: string
              enum:
                - in_progress
      required:
        - type
        - name
        - arguments
        - call_id
      example:
        type: function_call
        id: call-abc123
        name: get_weather
        arguments: '{"location":"San Francisco","unit":"celsius"}'
        call_id: call-abc123
    ResponsesOutputItemFunctionCall:
      allOf:
        - $ref: '#/components/schemas/OutputItemFunctionCall'
        - type: object
          properties: {}
      example:
        type: function_call
        id: call-abc123
        name: get_weather
        arguments: '{"location":"San Francisco","unit":"celsius"}'
        call_id: call-abc123
    WebSearchStatus:
      type: string
      enum:
        - completed
        - searching
        - in_progress
        - failed
      example: completed
    OutputItemWebSearchCall:
      type: object
      properties:
        type:
          type: string
          enum:
            - web_search_call
        id:
          type: string
        status:
          $ref: '#/components/schemas/WebSearchStatus'
      required:
        - type
        - id
        - status
      example:
        type: web_search_call
        id: search-abc123
        status: completed
    ResponsesWebSearchCallOutput:
      allOf:
        - $ref: '#/components/schemas/OutputItemWebSearchCall'
        - type: object
          properties: {}
      example:
        type: web_search_call
        id: search-abc123
        status: completed
    OutputItemFileSearchCall:
      type: object
      properties:
        type:
          type: string
          enum:
            - file_search_call
        id:
          type: string
        queries:
          type: array
          items:
            type: string
        status:
          $ref: '#/components/schemas/WebSearchStatus'
      required:
        - type
        - id
        - queries
        - status
      example:
        type: file_search_call
        id: filesearch-abc123
        queries:
          - machine learning algorithms
          - neural networks
        status: completed
    ResponsesOutputItemFileSearchCall:
      allOf:
        - $ref: '#/components/schemas/OutputItemFileSearchCall'
        - type: object
          properties: {}
      example:
        type: file_search_call
        id: filesearch-abc123
        queries:
          - machine learning algorithms
          - neural networks
        status: completed
    ImageGenerationStatus:
      type: string
      enum:
        - in_progress
        - completed
        - generating
        - failed
      example: completed
    OutputItemImageGenerationCall:
      type: object
      properties:
        type:
          type: string
          enum:
            - image_generation_call
        id:
          type: string
        result:
          type: string
          nullable: true
          default: null
        status:
          $ref: '#/components/schemas/ImageGenerationStatus'
      required:
        - type
        - id
        - status
      example:
        type: image_generation_call
        id: imagegen-abc123
        result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
        status: completed
    ResponsesImageGenerationCall:
      allOf:
        - $ref: '#/components/schemas/OutputItemImageGenerationCall'
        - type: object
          properties: {}
      example:
        type: image_generation_call
        id: imagegen-abc123
        result: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
        status: completed
    ResponsesOutputItem:
      anyOf:
        - $ref: '#/components/schemas/ResponsesOutputMessage'
        - $ref: '#/components/schemas/ResponsesOutputItemReasoning'
        - $ref: '#/components/schemas/ResponsesOutputItemFunctionCall'
        - $ref: '#/components/schemas/ResponsesWebSearchCallOutput'
        - $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall'
        - $ref: '#/components/schemas/ResponsesImageGenerationCall'
      description: An output item from the response
      example:
        id: msg-abc123
        role: assistant
        type: message
        status: completed
        content:
          - type: output_text
            text: Hello! How can I help you today?
    ResponsesErrorField:
      type: object
      nullable: true
      properties:
        code:
          type: string
          enum:
            - server_error
            - rate_limit_exceeded
            - invalid_prompt
            - vector_store_timeout
            - invalid_image
            - invalid_image_format
            - invalid_base64_image
            - invalid_image_url
            - image_too_large
            - image_too_small
            - image_parse_error
            - image_content_policy_violation
            - invalid_image_mode
            - image_file_too_large
            - unsupported_image_media_type
            - empty_image_file
            - failed_to_download_image
            - image_file_not_found
        message:
          type: string
      required:
        - code
        - message
      description: Error information returned from the API
      example:
        code: rate_limit_exceeded
        message: Rate limit exceeded. Please try again later.
    OpenAIResponsesIncompleteDetails:
      type: object
      nullable: true
      properties:
        reason:
          type: string
          enum:
            - max_output_tokens
            - content_filter
    OpenAIResponsesUsage:
      type: object
      properties:
        input_tokens:
          type: number
        input_tokens_details:
          type: object
          properties:
            cached_tokens:
              type: number
          required:
            - cached_tokens
        output_tokens:
          type: number
        output_tokens_details:
          type: object
          properties:
            reasoning_tokens:
              type: number
          required:
            - reasoning_tokens
        total_tokens:
          type: number
      required:
        - input_tokens
        - input_tokens_details
        - output_tokens
        - output_tokens_details
        - total_tokens
    OpenResponsesUsage:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesUsage'
        - type: object
          nullable: true
          properties:
            cost:
              type: number
              nullable: true
              description: Cost of the completion
            is_byok:
              type: boolean
              description: Whether a request was made using a Bring Your Own Key configuration
            cost_details:
              type: object
              properties:
                upstream_inference_cost:
                  type: number
                  nullable: true
                upstream_inference_input_cost:
                  type: number
                upstream_inference_output_cost:
                  type: number
              required:
                - upstream_inference_input_cost
                - upstream_inference_output_cost
      description: Token usage information for the response
      example:
        input_tokens: 10
        output_tokens: 25
        total_tokens: 35
        input_tokens_details:
          cached_tokens: 0
        output_tokens_details:
          reasoning_tokens: 0
        cost: 0.0012
        cost_details:
          upstream_inference_cost: null
          upstream_inference_input_cost: 0.0008
          upstream_inference_output_cost: 0.0004
    ResponseInputText:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_text
        text:
          type: string
      required:
        - type
        - text
      description: Text input content item
      example:
        type: input_text
        text: Hello, how can I help you?
    ResponseInputImage:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_image
        detail:
          type: string
          enum:
            - auto
            - high
            - low
        image_url:
          type: string
          nullable: true
      required:
        - type
        - detail
      description: Image input content item
      example:
        type: input_image
        detail: auto
        image_url: https://example.com/image.jpg
    ResponseInputFile:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_file
        file_id:
          type: string
          nullable: true
        file_data:
          type: string
        filename:
          type: string
        file_url:
          type: string
      required:
        - type
      description: File input content item
      example:
        type: input_file
        file_id: file-abc123
        filename: document.pdf
    ResponseInputAudio:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_audio
        input_audio:
          type: object
          properties:
            data:
              type: string
            format:
              type: string
              enum:
                - mp3
                - wav
          required:
            - data
            - format
      required:
        - type
        - input_audio
      description: Audio input content item
      example:
        type: input_audio
        input_audio:
          data: SGVsbG8gV29ybGQ=
          format: mp3
    ToolCallStatus:
      type: string
      nullable: true
      enum:
        - in_progress
        - completed
        - incomplete
      example: completed
    OpenAIResponsesInput:
      anyOf:
        - type: string
        - type: array
          items:
            anyOf:
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - message
                  role:
                    anyOf:
                      - type: string
                        enum:
                          - user
                      - type: string
                        enum:
                          - system
                      - type: string
                        enum:
                          - assistant
                      - type: string
                        enum:
                          - developer
                  content:
                    anyOf:
                      - type: array
                        items:
                          oneOf:
                            - $ref: '#/components/schemas/ResponseInputText'
                            - $ref: '#/components/schemas/ResponseInputImage'
                            - $ref: '#/components/schemas/ResponseInputFile'
                            - $ref: '#/components/schemas/ResponseInputAudio'
                          discriminator:
                            propertyName: type
                            mapping:
                              input_text: '#/components/schemas/ResponseInputText'
                              input_image: '#/components/schemas/ResponseInputImage'
                              input_file: '#/components/schemas/ResponseInputFile'
                              input_audio: '#/components/schemas/ResponseInputAudio'
                      - type: string
                required:
                  - role
                  - content
              - type: object
                properties:
                  id:
                    type: string
                  type:
                    type: string
                    enum:
                      - message
                  role:
                    anyOf:
                      - type: string
                        enum:
                          - user
                      - type: string
                        enum:
                          - system
                      - type: string
                        enum:
                          - developer
                  content:
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/ResponseInputText'
                        - $ref: '#/components/schemas/ResponseInputImage'
                        - $ref: '#/components/schemas/ResponseInputFile'
                        - $ref: '#/components/schemas/ResponseInputAudio'
                      discriminator:
                        propertyName: type
                        mapping:
                          input_text: '#/components/schemas/ResponseInputText'
                          input_image: '#/components/schemas/ResponseInputImage'
                          input_file: '#/components/schemas/ResponseInputFile'
                          input_audio: '#/components/schemas/ResponseInputAudio'
                required:
                  - id
                  - role
                  - content
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - function_call_output
                  id:
                    type: string
                    nullable: true
                  call_id:
                    type: string
                  output:
                    type: string
                  status:
                    $ref: '#/components/schemas/ToolCallStatus'
                required:
                  - type
                  - call_id
                  - output
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - function_call
                  call_id:
                    type: string
                  name:
                    type: string
                  arguments:
                    type: string
                  id:
                    type: string
                  status:
                    $ref: '#/components/schemas/ToolCallStatus'
                required:
                  - type
                  - call_id
                  - name
                  - arguments
              - $ref: '#/components/schemas/OutputItemImageGenerationCall'
              - $ref: '#/components/schemas/OutputMessage'
        - nullable: true
    OpenResponsesRequestMetadata:
      type: object
      nullable: true
      additionalProperties:
        type: string
        maxLength: 512
      description: >-
        Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must
        be ≤512 characters. Maximum 16 pairs allowed.
      example:
        user_id: '123'
        session_id: abc-def-ghi
    OpenResponsesFunctionTool:
      type: object
      properties:
        type:
          type: string
          enum:
            - function
        name:
          type: string
        description:
          type: string
          nullable: true
        strict:
          type: boolean
          nullable: true
        parameters:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - type
        - name
        - parameters
      description: Function tool definition
      example:
        type: function
        name: get_weather
        description: Get the current weather in a location
        parameters:
          type: object
          properties:
            location:
              type: string
              description: The city and state
            unit:
              type: string
              enum:
                - celsius
                - fahrenheit
          required:
            - location
    ResponsesSearchContextSize:
      type: string
      enum:
        - low
        - medium
        - high
      description: Size of the search context for web search tools
      example: medium
    WebSearchPreviewToolUserLocation:
      type: object
      nullable: true
      properties:
        type:
          type: string
          enum:
            - approximate
        city:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        region:
          type: string
          nullable: true
        timezone:
          type: string
          nullable: true
      required:
        - type
    OpenResponsesWebSearchPreviewTool:
      type: object
      properties:
        type:
          type: string
          enum:
            - web_search_preview
        search_context_size:
          $ref: '#/components/schemas/ResponsesSearchContextSize'
        user_location:
          $ref: '#/components/schemas/WebSearchPreviewToolUserLocation'
      required:
        - type
      description: Web search preview tool configuration
      example:
        type: web_search_preview
    OpenResponsesWebSearchPreview20250311Tool:
      type: object
      properties:
        type:
          type: string
          enum:
            - web_search_preview_2025_03_11
        search_context_size:
          $ref: '#/components/schemas/ResponsesSearchContextSize'
        user_location:
          $ref: '#/components/schemas/WebSearchPreviewToolUserLocation'
      required:
        - type
      description: Web search preview tool configuration (2025-03-11 version)
      example:
        type: web_search_preview_2025_03_11
    ResponsesWebSearchUserLocation:
      type: object
      nullable: true
      properties:
        type:
          type: string
          enum:
            - approximate
        city:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        region:
          type: string
          nullable: true
        timezone:
          type: string
          nullable: true
      description: User location information for web search
      example:
        type: approximate
        city: San Francisco
        country: USA
        region: California
        timezone: America/Los_Angeles
    OpenResponsesWebSearchTool:
      type: object
      properties:
        type:
          type: string
          enum:
            - web_search
        filters:
          type: object
          nullable: true
          properties:
            allowed_domains:
              type: array
              nullable: true
              items:
                type: string
        search_context_size:
          $ref: '#/components/schemas/ResponsesSearchContextSize'
        user_location:
          $ref: '#/components/schemas/ResponsesWebSearchUserLocation'
      required:
        - type
      description: Web search tool configuration
      example:
        type: web_search
        filters:
          allowed_domains:
            - example.com
    OpenResponsesWebSearch20250826Tool:
      type: object
      properties:
        type:
          type: string
          enum:
            - web_search_2025_08_26
        filters:
          type: object
          nullable: true
          properties:
            allowed_domains:
              type: array
              nullable: true
              items:
                type: string
        search_context_size:
          $ref: '#/components/schemas/ResponsesSearchContextSize'
        user_location:
          $ref: '#/components/schemas/ResponsesWebSearchUserLocation'
      required:
        - type
      description: Web search tool configuration (2025-08-26 version)
      example:
        type: web_search_2025_08_26
        filters:
          allowed_domains:
            - example.com
    OpenAIResponsesToolChoice:
      anyOf:
        - type: string
          enum:
            - auto
        - type: string
          enum:
            - none
        - type: string
          enum:
            - required
        - type: object
          properties:
            type:
              type: string
              enum:
                - function
            name:
              type: string
          required:
            - type
            - name
        - type: object
          properties:
            type:
              anyOf:
                - type: string
                  enum:
                    - web_search_preview_2025_03_11
                - type: string
                  enum:
                    - web_search_preview
          required:
            - type
    OpenAIResponsesPrompt:
      type: object
      nullable: true
      properties:
        id:
          type: string
        variables:
          type: object
          nullable: true
          additionalProperties:
            anyOf:
              - type: string
              - $ref: '#/components/schemas/ResponseInputText'
              - $ref: '#/components/schemas/ResponseInputImage'
              - $ref: '#/components/schemas/ResponseInputFile'
      required:
        - id
    OpenAIResponsesReasoningEffort:
      type: string
      nullable: true
      enum:
        - xhigh
        - high
        - medium
        - low
        - minimal
        - none
    ReasoningSummaryVerbosity:
      type: string
      enum:
        - auto
        - concise
        - detailed
    OpenAIResponsesReasoningConfig:
      type: object
      nullable: true
      properties:
        effort:
          $ref: '#/components/schemas/OpenAIResponsesReasoningEffort'
        summary:
          $ref: '#/components/schemas/ReasoningSummaryVerbosity'
    OpenAIResponsesServiceTier:
      type: string
      nullable: true
      enum:
        - auto
        - default
        - flex
        - priority
        - scale
    OpenAIResponsesTruncation:
      type: string
      nullable: true
      enum:
        - auto
        - disabled
    ResponsesFormatText:
      type: object
      properties:
        type:
          type: string
          enum:
            - text
      required:
        - type
      description: Plain text response format
      example:
        type: text
    ResponsesFormatJSONObject:
      type: object
      properties:
        type:
          type: string
          enum:
            - json_object
      required:
        - type
      description: JSON object response format
      example:
        type: json_object
    ResponsesFormatTextJSONSchemaConfig:
      type: object
      properties:
        type:
          type: string
          enum:
            - json_schema
        name:
          type: string
        description:
          type: string
        strict:
          type: boolean
          nullable: true
        schema:
          type: object
          additionalProperties:
            nullable: true
      required:
        - type
        - name
        - schema
      description: JSON schema constrained response format
      example:
        type: json_schema
        name: user_info
        description: User information schema
        schema:
          type: object
          properties:
            name:
              type: string
            age:
              type: number
          required:
            - name
    ResponseFormatTextConfig:
      anyOf:
        - $ref: '#/components/schemas/ResponsesFormatText'
        - $ref: '#/components/schemas/ResponsesFormatJSONObject'
        - $ref: '#/components/schemas/ResponsesFormatTextJSONSchemaConfig'
      description: Text response format configuration
      example:
        type: text
    ResponseTextConfig:
      type: object
      properties:
        format:
          $ref: '#/components/schemas/ResponseFormatTextConfig'
        verbosity:
          type: string
          nullable: true
          enum:
            - high
            - low
            - medium
      description: Text output configuration including format and verbosity
      example:
        format:
          type: text
        verbosity: medium
    OpenAIResponsesNonStreamingResponse:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          enum:
            - response
        created_at:
          type: number
        model:
          type: string
        status:
          $ref: '#/components/schemas/OpenAIResponsesResponseStatus'
        completed_at:
          type: number
          nullable: true
        output:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/OutputMessage'
              - $ref: '#/components/schemas/OutputItemReasoning'
              - $ref: '#/components/schemas/OutputItemFunctionCall'
              - $ref: '#/components/schemas/OutputItemWebSearchCall'
              - $ref: '#/components/schemas/OutputItemFileSearchCall'
              - $ref: '#/components/schemas/OutputItemImageGenerationCall'
            discriminator:
              propertyName: type
              mapping:
                message: '#/components/schemas/OutputMessage'
                reasoning: '#/components/schemas/OutputItemReasoning'
                function_call: '#/components/schemas/OutputItemFunctionCall'
                web_search_call: '#/components/schemas/OutputItemWebSearchCall'
                file_search_call: '#/components/schemas/OutputItemFileSearchCall'
                image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
        user:
          type: string
          nullable: true
        output_text:
          type: string
        prompt_cache_key:
          type: string
          nullable: true
        safety_identifier:
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/ResponsesErrorField'
        incomplete_details:
          $ref: '#/components/schemas/OpenAIResponsesIncompleteDetails'
        usage:
          $ref: '#/components/schemas/OpenAIResponsesUsage'
        max_tool_calls:
          type: number
          nullable: true
        top_logprobs:
          type: number
        max_output_tokens:
          type: number
          nullable: true
        temperature:
          type: number
          nullable: true
        top_p:
          type: number
          nullable: true
        presence_penalty:
          type: number
          nullable: true
        frequency_penalty:
          type: number
          nullable: true
        instructions:
          $ref: '#/components/schemas/OpenAIResponsesInput'
        metadata:
          $ref: '#/components/schemas/OpenResponsesRequestMetadata'
        tools:
          type: array
          items:
            oneOf:
              - allOf:
                  - $ref: '#/components/schemas/OpenResponsesFunctionTool'
                  - type: object
                    properties: {}
                description: Function tool definition
                example:
                  type: function
                  name: get_weather
                  description: Get the current weather in a location
                  parameters:
                    type: object
                    properties:
                      location:
                        type: string
                        description: The city and state
                      unit:
                        type: string
                        enum:
                          - celsius
                          - fahrenheit
                    required:
                      - location
              - $ref: '#/components/schemas/OpenResponsesWebSearchPreviewTool'
              - $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool'
              - $ref: '#/components/schemas/OpenResponsesWebSearchTool'
              - $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool'
        tool_choice:
          $ref: '#/components/schemas/OpenAIResponsesToolChoice'
        parallel_tool_calls:
          type: boolean
        prompt:
          $ref: '#/components/schemas/OpenAIResponsesPrompt'
        background:
          type: boolean
          nullable: true
        previous_response_id:
          type: string
          nullable: true
        reasoning:
          $ref: '#/components/schemas/OpenAIResponsesReasoningConfig'
        service_tier:
          $ref: '#/components/schemas/OpenAIResponsesServiceTier'
        store:
          type: boolean
        truncation:
          $ref: '#/components/schemas/OpenAIResponsesTruncation'
        text:
          $ref: '#/components/schemas/ResponseTextConfig'
      required:
        - id
        - object
        - created_at
        - model
        - status
        - completed_at
        - output
        - error
        - incomplete_details
        - temperature
        - top_p
        - presence_penalty
        - frequency_penalty
        - instructions
        - metadata
        - tools
        - tool_choice
        - parallel_tool_calls
    OpenResponsesNonStreamingResponse:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        - type: object
          properties:
            output:
              type: array
              items:
                $ref: '#/components/schemas/ResponsesOutputItem'
            usage:
              $ref: '#/components/schemas/OpenResponsesUsage'
      description: Complete non-streaming response from the Responses API
      example:
        id: resp-abc123
        object: response
        created_at: 1704067200
        model: gpt-4
        status: completed
        output:
          - type: message
            id: msg-abc123
            status: completed
            role: assistant
            content:
              - type: output_text
                text: Hello! How can I help you today?
                annotations: []
        usage:
          input_tokens: 10
          output_tokens: 25
          total_tokens: 35
          input_tokens_details:
            cached_tokens: 0
          output_tokens_details:
            reasoning_tokens: 0
        tools: []
        tool_choice: auto
        parallel_tool_calls: true
        error: null
        incomplete_details: null
        temperature: null
        top_p: null
        max_output_tokens: null
        metadata: null
        instructions: null
    OpenResponsesCreatedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.created
        response:
          $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        sequence_number:
          type: number
      required:
        - type
        - response
        - sequence_number
      description: Event emitted when a response is created
      example:
        type: response.created
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: in_progress
          output: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 0
    OpenResponsesInProgressEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.in_progress
        response:
          $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        sequence_number:
          type: number
      required:
        - type
        - response
        - sequence_number
      description: Event emitted when a response is in progress
      example:
        type: response.in_progress
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: in_progress
          output: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 1
    OpenResponsesCompletedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.completed
        response:
          $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        sequence_number:
          type: number
      required:
        - type
        - response
        - sequence_number
      description: Event emitted when a response has completed successfully
      example:
        type: response.completed
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: completed
          output:
            - id: item-1
              type: message
              status: completed
              role: assistant
              content:
                - type: output_text
                  text: Hello! How can I help you?
                  annotations: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 10
    OpenResponsesIncompleteEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.incomplete
        response:
          $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        sequence_number:
          type: number
      required:
        - type
        - response
        - sequence_number
      description: Event emitted when a response is incomplete
      example:
        type: response.incomplete
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: incomplete
          output: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 5
    OpenResponsesFailedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.failed
        response:
          $ref: '#/components/schemas/OpenAIResponsesNonStreamingResponse'
        sequence_number:
          type: number
      required:
        - type
        - response
        - sequence_number
      description: Event emitted when a response has failed
      example:
        type: response.failed
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: failed
          output: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 3
    OpenAIResponsesErrorEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - error
        code:
          type: string
          nullable: true
        message:
          type: string
        param:
          type: string
          nullable: true
        sequence_number:
          type: number
      required:
        - type
        - code
        - message
        - param
        - sequence_number
      description: Event emitted when an error occurs during streaming
      example:
        type: error
        code: rate_limit_exceeded
        message: Rate limit exceeded. Please try again later.
        param: null
        sequence_number: 2
    OpenResponsesErrorEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesErrorEvent'
        - type: object
          properties: {}
      description: Event emitted when an error occurs during streaming
      example:
        type: error
        code: rate_limit_exceeded
        message: Rate limit exceeded. Please try again later.
        param: null
        sequence_number: 2
    OpenResponsesOutputItemAddedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.output_item.added
        output_index:
          type: number
        item:
          oneOf:
            - $ref: '#/components/schemas/OutputMessage'
            - $ref: '#/components/schemas/OutputItemReasoning'
            - $ref: '#/components/schemas/OutputItemFunctionCall'
            - $ref: '#/components/schemas/OutputItemWebSearchCall'
            - $ref: '#/components/schemas/OutputItemFileSearchCall'
            - $ref: '#/components/schemas/OutputItemImageGenerationCall'
          discriminator:
            propertyName: type
            mapping:
              message: '#/components/schemas/OutputMessage'
              reasoning: '#/components/schemas/OutputItemReasoning'
              function_call: '#/components/schemas/OutputItemFunctionCall'
              web_search_call: '#/components/schemas/OutputItemWebSearchCall'
              file_search_call: '#/components/schemas/OutputItemFileSearchCall'
              image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item
        - sequence_number
      description: Event emitted when a new output item is added to the response
      example:
        type: response.output_item.added
        output_index: 0
        item:
          id: item-1
          type: message
          status: in_progress
          role: assistant
          content: []
        sequence_number: 2
    OpenResponsesOutputItemDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.output_item.done
        output_index:
          type: number
        item:
          oneOf:
            - $ref: '#/components/schemas/OutputMessage'
            - $ref: '#/components/schemas/OutputItemReasoning'
            - $ref: '#/components/schemas/OutputItemFunctionCall'
            - $ref: '#/components/schemas/OutputItemWebSearchCall'
            - $ref: '#/components/schemas/OutputItemFileSearchCall'
            - $ref: '#/components/schemas/OutputItemImageGenerationCall'
          discriminator:
            propertyName: type
            mapping:
              message: '#/components/schemas/OutputMessage'
              reasoning: '#/components/schemas/OutputItemReasoning'
              function_call: '#/components/schemas/OutputItemFunctionCall'
              web_search_call: '#/components/schemas/OutputItemWebSearchCall'
              file_search_call: '#/components/schemas/OutputItemFileSearchCall'
              image_generation_call: '#/components/schemas/OutputItemImageGenerationCall'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item
        - sequence_number
      description: Event emitted when an output item is complete
      example:
        type: response.output_item.done
        output_index: 0
        item:
          id: item-1
          type: message
          status: completed
          role: assistant
          content:
            - type: output_text
              text: Hello! How can I help you?
              annotations: []
        sequence_number: 8
    OpenResponsesContentPartAddedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.content_part.added
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        part:
          anyOf:
            - $ref: '#/components/schemas/ResponseOutputText'
            - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - part
        - sequence_number
      description: Event emitted when a new content part is added to an output item
      example:
        type: response.content_part.added
        output_index: 0
        item_id: item-1
        content_index: 0
        part:
          type: output_text
          text: ''
          annotations: []
        sequence_number: 3
    OpenResponsesContentPartDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.content_part.done
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        part:
          anyOf:
            - $ref: '#/components/schemas/ResponseOutputText'
            - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - part
        - sequence_number
      description: Event emitted when a content part is complete
      example:
        type: response.content_part.done
        output_index: 0
        item_id: item-1
        content_index: 0
        part:
          type: output_text
          text: Hello! How can I help you?
          annotations: []
        sequence_number: 7
    OpenResponsesTopLogprobs:
      type: object
      properties:
        token:
          type: string
        logprob:
          type: number
      description: Alternative token with its log probability
      example:
        token: hello
        logprob: -0.5
    OpenResponsesLogProbs:
      type: object
      properties:
        logprob:
          type: number
        token:
          type: string
        top_logprobs:
          type: array
          items:
            $ref: '#/components/schemas/OpenResponsesTopLogprobs'
      required:
        - logprob
        - token
      description: Log probability information for a token
      example:
        logprob: -0.1
        token: world
        top_logprobs:
          - token: hello
            logprob: -0.5
    OpenResponsesTextDeltaEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.output_text.delta
        logprobs:
          type: array
          items:
            $ref: '#/components/schemas/OpenResponsesLogProbs'
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        delta:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - logprobs
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      description: Event emitted when a text delta is streamed
      example:
        type: response.output_text.delta
        logprobs: []
        output_index: 0
        item_id: item-1
        content_index: 0
        delta: Hello
        sequence_number: 4
    OpenResponsesTextDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.output_text.done
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        text:
          type: string
        sequence_number:
          type: number
        logprobs:
          type: array
          items:
            $ref: '#/components/schemas/OpenResponsesLogProbs'
      required:
        - type
        - output_index
        - item_id
        - content_index
        - text
        - sequence_number
        - logprobs
      description: Event emitted when text streaming is complete
      example:
        type: response.output_text.done
        output_index: 0
        item_id: item-1
        content_index: 0
        text: Hello! How can I help you?
        sequence_number: 6
        logprobs: []
    OpenResponsesRefusalDeltaEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.refusal.delta
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        delta:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      description: Event emitted when a refusal delta is streamed
      example:
        type: response.refusal.delta
        output_index: 0
        item_id: item-1
        content_index: 0
        delta: I'm sorry
        sequence_number: 4
    OpenResponsesRefusalDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.refusal.done
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        refusal:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - refusal
        - sequence_number
      description: Event emitted when refusal streaming is complete
      example:
        type: response.refusal.done
        output_index: 0
        item_id: item-1
        content_index: 0
        refusal: I'm sorry, but I can't assist with that request.
        sequence_number: 6
    OpenResponsesOutputTextAnnotationAddedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.output_text.annotation.added
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        sequence_number:
          type: number
        annotation_index:
          type: number
        annotation:
          $ref: '#/components/schemas/OpenAIResponsesAnnotation'
      required:
        - type
        - output_index
        - item_id
        - content_index
        - sequence_number
        - annotation_index
        - annotation
      description: Event emitted when a text annotation is added to output
      example:
        type: response.output_text.annotation.added
        output_index: 0
        item_id: item-1
        content_index: 0
        sequence_number: 5
        annotation_index: 0
        annotation:
          type: url_citation
          url: https://example.com
          title: Example
          start_index: 0
          end_index: 7
    OpenResponsesFunctionCallArgumentsDeltaEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.function_call_arguments.delta
        item_id:
          type: string
        output_index:
          type: number
        delta:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - delta
        - sequence_number
      description: Event emitted when function call arguments are being streamed
      example:
        type: response.function_call_arguments.delta
        item_id: item-1
        output_index: 0
        delta: '{"city": "San'
        sequence_number: 4
    OpenResponsesFunctionCallArgumentsDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.function_call_arguments.done
        item_id:
          type: string
        output_index:
          type: number
        name:
          type: string
        arguments:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - name
        - arguments
        - sequence_number
      description: Event emitted when function call arguments streaming is complete
      example:
        type: response.function_call_arguments.done
        item_id: item-1
        output_index: 0
        name: get_weather
        arguments: '{"city": "San Francisco", "units": "celsius"}'
        sequence_number: 6
    OpenAIResponsesReasoningDeltaEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_text.delta
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        delta:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - delta
        - sequence_number
      description: Event emitted when reasoning text delta is streamed
      example:
        type: response.reasoning_text.delta
        output_index: 0
        item_id: item-1
        content_index: 0
        delta: First, we need
        sequence_number: 4
    OpenResponsesReasoningDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningDeltaEvent'
        - type: object
          properties: {}
      description: Event emitted when reasoning text delta is streamed
      example:
        type: response.reasoning_text.delta
        output_index: 0
        item_id: item-1
        content_index: 0
        delta: First, we need
        sequence_number: 4
    OpenAIResponsesReasoningDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_text.done
        output_index:
          type: number
        item_id:
          type: string
        content_index:
          type: number
        text:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - content_index
        - text
        - sequence_number
      description: Event emitted when reasoning text streaming is complete
      example:
        type: response.reasoning_text.done
        output_index: 0
        item_id: item-1
        content_index: 0
        text: First, we need to identify the key components and then combine them logically.
        sequence_number: 6
    OpenResponsesReasoningDoneEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningDoneEvent'
        - type: object
          properties: {}
      description: Event emitted when reasoning text streaming is complete
      example:
        type: response.reasoning_text.done
        output_index: 0
        item_id: item-1
        content_index: 0
        text: First, we need to identify the key components and then combine them logically.
        sequence_number: 6
    OpenAIResponsesReasoningSummaryPartAddedEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_summary_part.added
        output_index:
          type: number
        item_id:
          type: string
        summary_index:
          type: number
        part:
          $ref: '#/components/schemas/ReasoningSummaryText'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - summary_index
        - part
        - sequence_number
      description: Event emitted when a reasoning summary part is added
      example:
        type: response.reasoning_summary_part.added
        output_index: 0
        item_id: item-1
        summary_index: 0
        part:
          type: summary_text
          text: ''
        sequence_number: 3
    OpenResponsesReasoningSummaryPartAddedEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryPartAddedEvent'
        - type: object
          properties: {}
      description: Event emitted when a reasoning summary part is added
      example:
        type: response.reasoning_summary_part.added
        output_index: 0
        item_id: item-1
        summary_index: 0
        part:
          type: summary_text
          text: ''
        sequence_number: 3
    OpenResponsesReasoningSummaryPartDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_summary_part.done
        output_index:
          type: number
        item_id:
          type: string
        summary_index:
          type: number
        part:
          $ref: '#/components/schemas/ReasoningSummaryText'
        sequence_number:
          type: number
      required:
        - type
        - output_index
        - item_id
        - summary_index
        - part
        - sequence_number
      description: Event emitted when a reasoning summary part is complete
      example:
        type: response.reasoning_summary_part.done
        output_index: 0
        item_id: item-1
        summary_index: 0
        part:
          type: summary_text
          text: Analyzing the problem step by step to find the optimal solution.
        sequence_number: 7
    OpenAIResponsesReasoningSummaryTextDeltaEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_summary_text.delta
        item_id:
          type: string
        output_index:
          type: number
        summary_index:
          type: number
        delta:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - summary_index
        - delta
        - sequence_number
      description: Event emitted when reasoning summary text delta is streamed
      example:
        type: response.reasoning_summary_text.delta
        item_id: item-1
        output_index: 0
        summary_index: 0
        delta: Analyzing
        sequence_number: 4
    OpenResponsesReasoningSummaryTextDeltaEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDeltaEvent'
        - type: object
          properties: {}
      description: Event emitted when reasoning summary text delta is streamed
      example:
        type: response.reasoning_summary_text.delta
        item_id: item-1
        output_index: 0
        summary_index: 0
        delta: Analyzing
        sequence_number: 4
    OpenAIResponsesReasoningSummaryTextDoneEvent:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.reasoning_summary_text.done
        item_id:
          type: string
        output_index:
          type: number
        summary_index:
          type: number
        text:
          type: string
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - summary_index
        - text
        - sequence_number
      description: Event emitted when reasoning summary text streaming is complete
      example:
        type: response.reasoning_summary_text.done
        item_id: item-1
        output_index: 0
        summary_index: 0
        text: Analyzing the problem step by step to find the optimal solution.
        sequence_number: 6
    OpenResponsesReasoningSummaryTextDoneEvent:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningSummaryTextDoneEvent'
        - type: object
          properties: {}
      description: Event emitted when reasoning summary text streaming is complete
      example:
        type: response.reasoning_summary_text.done
        item_id: item-1
        output_index: 0
        summary_index: 0
        text: Analyzing the problem step by step to find the optimal solution.
        sequence_number: 6
    OpenAIResponsesImageGenCallInProgress:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.image_generation_call.in_progress
        item_id:
          type: string
        output_index:
          type: number
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - sequence_number
    OpenResponsesImageGenCallInProgress:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallInProgress'
        - type: object
          properties: {}
      description: Image generation call in progress
      example:
        type: response.image_generation_call.in_progress
        output_index: 0
        sequence_number: 1
        item_id: call-123
    OpenAIResponsesImageGenCallGenerating:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.image_generation_call.generating
        item_id:
          type: string
        output_index:
          type: number
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - sequence_number
    OpenResponsesImageGenCallGenerating:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallGenerating'
        - type: object
          properties: {}
      description: Image generation call is generating
      example:
        type: response.image_generation_call.generating
        output_index: 0
        sequence_number: 2
        item_id: call-123
    OpenAIResponsesImageGenCallPartialImage:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.image_generation_call.partial_image
        item_id:
          type: string
        output_index:
          type: number
        sequence_number:
          type: number
        partial_image_b64:
          type: string
        partial_image_index:
          type: number
      required:
        - type
        - item_id
        - output_index
        - sequence_number
        - partial_image_b64
        - partial_image_index
    OpenResponsesImageGenCallPartialImage:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallPartialImage'
        - type: object
          properties: {}
      description: Image generation call with partial image
      example:
        type: response.image_generation_call.partial_image
        output_index: 0
        sequence_number: 3
        item_id: call-123
        partial_image_b64: base64encodedimage...
        partial_image_index: 0
    OpenAIResponsesImageGenCallCompleted:
      type: object
      properties:
        type:
          type: string
          enum:
            - response.image_generation_call.completed
        item_id:
          type: string
        output_index:
          type: number
        sequence_number:
          type: number
      required:
        - type
        - item_id
        - output_index
        - sequence_number
    OpenResponsesImageGenCallCompleted:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesImageGenCallCompleted'
        - type: object
          properties: {}
      description: Image generation call completed
      example:
        type: response.image_generation_call.completed
        output_index: 0
        sequence_number: 4
        item_id: call-123
    OpenResponsesStreamEvent:
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesCreatedEvent'
            - type: object
              properties:
                response:
                  $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
          description: Event emitted when a response is created
          example:
            type: response.created
            response:
              id: resp-abc123
              object: response
              created_at: 1704067200
              model: gpt-4
              status: in_progress
              output: []
              tools: []
              tool_choice: auto
              parallel_tool_calls: true
              error: null
              incomplete_details: null
              metadata: null
              instructions: null
              temperature: null
              top_p: null
              max_output_tokens: null
            sequence_number: 0
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesInProgressEvent'
            - type: object
              properties:
                response:
                  $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
          description: Event emitted when a response is in progress
          example:
            type: response.in_progress
            response:
              id: resp-abc123
              object: response
              created_at: 1704067200
              model: gpt-4
              status: in_progress
              output: []
              tools: []
              tool_choice: auto
              parallel_tool_calls: true
              error: null
              incomplete_details: null
              metadata: null
              instructions: null
              temperature: null
              top_p: null
              max_output_tokens: null
            sequence_number: 1
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesCompletedEvent'
            - type: object
              properties:
                response:
                  $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
          description: Event emitted when a response has completed successfully
          example:
            type: response.completed
            response:
              id: resp-abc123
              object: response
              created_at: 1704067200
              model: gpt-4
              status: completed
              output:
                - id: item-1
                  type: message
                  status: completed
                  role: assistant
                  content:
                    - type: output_text
                      text: Hello! How can I help you?
                      annotations: []
              tools: []
              tool_choice: auto
              parallel_tool_calls: true
              error: null
              incomplete_details: null
              metadata: null
              instructions: null
              temperature: null
              top_p: null
              max_output_tokens: null
            sequence_number: 10
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesIncompleteEvent'
            - type: object
              properties:
                response:
                  $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
          description: Event emitted when a response is incomplete
          example:
            type: response.incomplete
            response:
              id: resp-abc123
              object: response
              created_at: 1704067200
              model: gpt-4
              status: incomplete
              output: []
              tools: []
              tool_choice: auto
              parallel_tool_calls: true
              error: null
              incomplete_details: null
              metadata: null
              instructions: null
              temperature: null
              top_p: null
              max_output_tokens: null
            sequence_number: 5
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesFailedEvent'
            - type: object
              properties:
                response:
                  $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
          description: Event emitted when a response has failed
          example:
            type: response.failed
            response:
              id: resp-abc123
              object: response
              created_at: 1704067200
              model: gpt-4
              status: failed
              output: []
              tools: []
              tool_choice: auto
              parallel_tool_calls: true
              error: null
              incomplete_details: null
              metadata: null
              instructions: null
              temperature: null
              top_p: null
              max_output_tokens: null
            sequence_number: 3
        - $ref: '#/components/schemas/OpenResponsesErrorEvent'
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesOutputItemAddedEvent'
            - type: object
              properties:
                item:
                  $ref: '#/components/schemas/ResponsesOutputItem'
          description: Event emitted when a new output item is added to the response
          example:
            type: response.output_item.added
            output_index: 0
            item:
              id: item-1
              type: message
              status: in_progress
              role: assistant
              content: []
            sequence_number: 2
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesOutputItemDoneEvent'
            - type: object
              properties:
                item:
                  $ref: '#/components/schemas/ResponsesOutputItem'
          description: Event emitted when an output item is complete
          example:
            type: response.output_item.done
            output_index: 0
            item:
              id: item-1
              type: message
              status: completed
              role: assistant
              content:
                - type: output_text
                  text: Hello! How can I help you?
                  annotations: []
            sequence_number: 8
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesContentPartAddedEvent'
            - type: object
              properties:
                part:
                  anyOf:
                    - $ref: '#/components/schemas/ResponseOutputText'
                    - $ref: '#/components/schemas/ReasoningTextContent'
                    - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
          description: Event emitted when a new content part is added to an output item
          example:
            type: response.content_part.added
            output_index: 0
            item_id: item-1
            content_index: 0
            part:
              type: output_text
              text: ''
              annotations: []
            sequence_number: 3
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesContentPartDoneEvent'
            - type: object
              properties:
                part:
                  anyOf:
                    - $ref: '#/components/schemas/ResponseOutputText'
                    - $ref: '#/components/schemas/ReasoningTextContent'
                    - $ref: '#/components/schemas/OpenAIResponsesRefusalContent'
          description: Event emitted when a content part is complete
          example:
            type: response.content_part.done
            output_index: 0
            item_id: item-1
            content_index: 0
            part:
              type: output_text
              text: Hello! How can I help you?
              annotations: []
            sequence_number: 7
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesTextDeltaEvent'
            - type: object
              properties: {}
          description: Event emitted when a text delta is streamed
          example:
            type: response.output_text.delta
            logprobs: []
            output_index: 0
            item_id: item-1
            content_index: 0
            delta: Hello
            sequence_number: 4
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesTextDoneEvent'
            - type: object
              properties: {}
          description: Event emitted when text streaming is complete
          example:
            type: response.output_text.done
            output_index: 0
            item_id: item-1
            content_index: 0
            text: Hello! How can I help you?
            sequence_number: 6
            logprobs: []
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesRefusalDeltaEvent'
            - type: object
              properties: {}
          description: Event emitted when a refusal delta is streamed
          example:
            type: response.refusal.delta
            output_index: 0
            item_id: item-1
            content_index: 0
            delta: I'm sorry
            sequence_number: 4
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesRefusalDoneEvent'
            - type: object
              properties: {}
          description: Event emitted when refusal streaming is complete
          example:
            type: response.refusal.done
            output_index: 0
            item_id: item-1
            content_index: 0
            refusal: I'm sorry, but I can't assist with that request.
            sequence_number: 6
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesOutputTextAnnotationAddedEvent'
            - type: object
              properties: {}
          description: Event emitted when a text annotation is added to output
          example:
            type: response.output_text.annotation.added
            output_index: 0
            item_id: item-1
            content_index: 0
            sequence_number: 5
            annotation_index: 0
            annotation:
              type: url_citation
              url: https://example.com
              title: Example
              start_index: 0
              end_index: 7
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDeltaEvent'
            - type: object
              properties: {}
          description: Event emitted when function call arguments are being streamed
          example:
            type: response.function_call_arguments.delta
            item_id: item-1
            output_index: 0
            delta: '{"city": "San'
            sequence_number: 4
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesFunctionCallArgumentsDoneEvent'
            - type: object
              properties: {}
          description: Event emitted when function call arguments streaming is complete
          example:
            type: response.function_call_arguments.done
            item_id: item-1
            output_index: 0
            name: get_weather
            arguments: '{"city": "San Francisco", "units": "celsius"}'
            sequence_number: 6
        - $ref: '#/components/schemas/OpenResponsesReasoningDeltaEvent'
        - $ref: '#/components/schemas/OpenResponsesReasoningDoneEvent'
        - $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartAddedEvent'
        - allOf:
            - $ref: '#/components/schemas/OpenResponsesReasoningSummaryPartDoneEvent'
            - type: object
              properties: {}
          description: Event emitted when a reasoning summary part is complete
          example:
            type: response.reasoning_summary_part.done
            output_index: 0
            item_id: item-1
            summary_index: 0
            part:
              type: summary_text
              text: Analyzing the problem step by step to find the optimal solution.
            sequence_number: 7
        - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDeltaEvent'
        - $ref: '#/components/schemas/OpenResponsesReasoningSummaryTextDoneEvent'
        - $ref: '#/components/schemas/OpenResponsesImageGenCallInProgress'
        - $ref: '#/components/schemas/OpenResponsesImageGenCallGenerating'
        - $ref: '#/components/schemas/OpenResponsesImageGenCallPartialImage'
        - $ref: '#/components/schemas/OpenResponsesImageGenCallCompleted'
      description: Union of all possible event types emitted during response streaming
      example:
        type: response.created
        response:
          id: resp-abc123
          object: response
          created_at: 1704067200
          model: gpt-4
          status: in_progress
          output: []
          tools: []
          tool_choice: auto
          parallel_tool_calls: true
          error: null
          incomplete_details: null
          metadata: null
          instructions: null
          temperature: null
          top_p: null
          max_output_tokens: null
        sequence_number: 0
    BadRequestResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for BadRequestResponse
      example:
        code: 400
        message: Invalid request parameters
    BadRequestResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/BadRequestResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Bad Request - Invalid request parameters or malformed input
      example:
        error:
          code: 400
          message: Invalid request parameters
    UnauthorizedResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for UnauthorizedResponse
      example:
        code: 401
        message: Missing Authentication header
    UnauthorizedResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/UnauthorizedResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Unauthorized - Authentication required or invalid credentials
      example:
        error:
          code: 401
          message: Missing Authentication header
    PaymentRequiredResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for PaymentRequiredResponse
      example:
        code: 402
        message: Insufficient credits. Add more using https://openrouter.ai/credits
    PaymentRequiredResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/PaymentRequiredResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Payment Required - Insufficient credits or quota to complete request
      example:
        error:
          code: 402
          message: Insufficient credits. Add more using https://openrouter.ai/credits
    NotFoundResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for NotFoundResponse
      example:
        code: 404
        message: Resource not found
    NotFoundResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/NotFoundResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Not Found - Resource does not exist
      example:
        error:
          code: 404
          message: Resource not found
    RequestTimeoutResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for RequestTimeoutResponse
      example:
        code: 408
        message: Operation timed out. Please try again later.
    RequestTimeoutResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/RequestTimeoutResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Request Timeout - Operation exceeded time limit
      example:
        error:
          code: 408
          message: Operation timed out. Please try again later.
    PayloadTooLargeResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for PayloadTooLargeResponse
      example:
        code: 413
        message: Request payload too large
    PayloadTooLargeResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/PayloadTooLargeResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Payload Too Large - Request payload exceeds size limits
      example:
        error:
          code: 413
          message: Request payload too large
    UnprocessableEntityResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for UnprocessableEntityResponse
      example:
        code: 422
        message: Invalid argument
    UnprocessableEntityResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/UnprocessableEntityResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Unprocessable Entity - Semantic validation failure
      example:
        error:
          code: 422
          message: Invalid argument
    TooManyRequestsResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for TooManyRequestsResponse
      example:
        code: 429
        message: Rate limit exceeded
    TooManyRequestsResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/TooManyRequestsResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Too Many Requests - Rate limit exceeded
      example:
        error:
          code: 429
          message: Rate limit exceeded
    InternalServerResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for InternalServerResponse
      example:
        code: 500
        message: Internal Server Error
    InternalServerResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/InternalServerResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Internal Server Error - Unexpected server error
      example:
        error:
          code: 500
          message: Internal Server Error
    BadGatewayResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for BadGatewayResponse
      example:
        code: 502
        message: Provider returned error
    BadGatewayResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/BadGatewayResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Bad Gateway - Provider/upstream API failure
      example:
        error:
          code: 502
          message: Provider returned error
    ServiceUnavailableResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for ServiceUnavailableResponse
      example:
        code: 503
        message: Service temporarily unavailable
    ServiceUnavailableResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ServiceUnavailableResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Service Unavailable - Service temporarily unavailable
      example:
        error:
          code: 503
          message: Service temporarily unavailable
    EdgeNetworkTimeoutResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for EdgeNetworkTimeoutResponse
      example:
        code: 524
        message: Request timed out. Please try again later.
    EdgeNetworkTimeoutResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/EdgeNetworkTimeoutResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Infrastructure Timeout - Provider request timed out at edge network
      example:
        error:
          code: 524
          message: Request timed out. Please try again later.
    ProviderOverloadedResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for ProviderOverloadedResponse
      example:
        code: 529
        message: Provider returned error
    ProviderOverloadedResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ProviderOverloadedResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Provider Overloaded - Provider is temporarily overloaded
      example:
        error:
          code: 529
          message: Provider returned error
    OpenResponsesReasoning:
      allOf:
        - $ref: '#/components/schemas/OutputItemReasoning'
        - type: object
          properties:
            signature:
              type: string
              nullable: true
            format:
              type: string
              nullable: true
              enum:
                - unknown
                - openai-responses-v1
                - azure-openai-responses-v1
                - xai-responses-v1
                - anthropic-claude-v1
                - google-gemini-v1
      example:
        type: reasoning
        id: reasoning-abc123
        summary:
          - type: summary_text
            text: Step by step analysis
      description: Reasoning output item with signature and format extensions
    ResponseInputVideo:
      type: object
      properties:
        type:
          type: string
          enum:
            - input_video
        video_url:
          type: string
          description: A base64 data URL or remote URL that resolves to a video file
      required:
        - type
        - video_url
      description: Video input content item
      example:
        type: input_video
        video_url: https://example.com/video.mp4
    OpenResponsesEasyInputMessage:
      type: object
      properties:
        type:
          type: string
          enum:
            - message
        role:
          anyOf:
            - type: string
              enum:
                - user
            - type: string
              enum:
                - system
            - type: string
              enum:
                - assistant
            - type: string
              enum:
                - developer
        content:
          anyOf:
            - type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/ResponseInputText'
                  - allOf:
                      - $ref: '#/components/schemas/ResponseInputImage'
                      - type: object
                        properties: {}
                    description: Image input content item
                    example:
                      type: input_image
                      detail: auto
                      image_url: https://example.com/image.jpg
                  - $ref: '#/components/schemas/ResponseInputFile'
                  - $ref: '#/components/schemas/ResponseInputAudio'
                  - $ref: '#/components/schemas/ResponseInputVideo'
            - type: string
      required:
        - role
        - content
    OpenResponsesInputMessageItem:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - message
        role:
          anyOf:
            - type: string
              enum:
                - user
            - type: string
              enum:
                - system
            - type: string
              enum:
                - developer
        content:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/ResponseInputText'
              - allOf:
                  - $ref: '#/components/schemas/ResponseInputImage'
                  - type: object
                    properties: {}
                description: Image input content item
                example:
                  type: input_image
                  detail: auto
                  image_url: https://example.com/image.jpg
              - $ref: '#/components/schemas/ResponseInputFile'
              - $ref: '#/components/schemas/ResponseInputAudio'
              - $ref: '#/components/schemas/ResponseInputVideo'
      required:
        - role
        - content
    OpenResponsesFunctionToolCall:
      type: object
      properties:
        type:
          type: string
          enum:
            - function_call
        call_id:
          type: string
        name:
          type: string
        arguments:
          type: string
        id:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
      required:
        - type
        - call_id
        - name
        - arguments
        - id
      description: A function call initiated by the model
      example:
        id: call-abc123
        type: function_call
        call_id: call-abc123
        name: get_weather
        arguments: '{"location":"San Francisco"}'
        status: completed
    OpenResponsesFunctionCallOutput:
      type: object
      properties:
        type:
          type: string
          enum:
            - function_call_output
        id:
          type: string
          nullable: true
        call_id:
          type: string
        output:
          type: string
        status:
          $ref: '#/components/schemas/ToolCallStatus'
      required:
        - type
        - call_id
        - output
      description: The output from a function call execution
      example:
        type: function_call_output
        id: output-abc123
        call_id: call-abc123
        output: '{"temperature":72,"conditions":"sunny"}'
        status: completed
    OpenResponsesInput:
      anyOf:
        - type: string
        - type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/OpenResponsesReasoning'
              - $ref: '#/components/schemas/OpenResponsesEasyInputMessage'
              - $ref: '#/components/schemas/OpenResponsesInputMessageItem'
              - $ref: '#/components/schemas/OpenResponsesFunctionToolCall'
              - $ref: '#/components/schemas/OpenResponsesFunctionCallOutput'
              - $ref: '#/components/schemas/ResponsesOutputMessage'
              - $ref: '#/components/schemas/ResponsesOutputItemReasoning'
              - $ref: '#/components/schemas/ResponsesOutputItemFunctionCall'
              - $ref: '#/components/schemas/ResponsesWebSearchCallOutput'
              - $ref: '#/components/schemas/ResponsesOutputItemFileSearchCall'
              - $ref: '#/components/schemas/ResponsesImageGenerationCall'
      description: Input for a response request - can be a string or array of items
      example:
        - role: user
          content: What is the weather today?
    OpenResponsesResponseText:
      allOf:
        - $ref: '#/components/schemas/ResponseTextConfig'
        - type: object
          properties: {}
      description: Text output configuration including format and verbosity
      example:
        format:
          type: text
        verbosity: medium
    OpenResponsesReasoningConfig:
      allOf:
        - $ref: '#/components/schemas/OpenAIResponsesReasoningConfig'
        - type: object
          nullable: true
          properties:
            max_tokens:
              type: number
              nullable: true
            enabled:
              type: boolean
              nullable: true
      description: Configuration for reasoning mode in the response
      example:
        summary: auto
        enabled: true
    ResponsesOutputModality:
      type: string
      enum:
        - text
        - image
    OpenAIResponsesIncludable:
      type: string
      enum:
        - file_search_call.results
        - message.input_image.image_url
        - computer_call_output.output.image_url
        - reasoning.encrypted_content
        - code_interpreter_call.outputs
    DataCollection:
      type: string
      nullable: true
      enum:
        - deny
        - allow
      description: >-
        Data collection setting. If no available model provider meets the requirement, your request will return an
        error.

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


        - deny: use only providers which do not collect user data.
      example: allow
    ProviderName:
      type: string
      enum:
        - AI21
        - AionLabs
        - Alibaba
        - Ambient
        - Amazon Bedrock
        - Amazon Nova
        - Anthropic
        - Arcee AI
        - AtlasCloud
        - Avian
        - Azure
        - BaseTen
        - BytePlus
        - Black Forest Labs
        - Cerebras
        - Chutes
        - Cirrascale
        - Clarifai
        - Cloudflare
        - Cohere
        - Crusoe
        - DeepInfra
        - DeepSeek
        - Featherless
        - Fireworks
        - Friendli
        - GMICloud
        - Google
        - Google AI Studio
        - Groq
        - Hyperbolic
        - Inception
        - Inceptron
        - InferenceNet
        - Infermatic
        - Inflection
        - Liquid
        - Mara
        - Mancer 2
        - Minimax
        - ModelRun
        - Mistral
        - Modular
        - Moonshot AI
        - Morph
        - NCompass
        - Nebius
        - NextBit
        - Novita
        - Nvidia
        - OpenAI
        - OpenInference
        - Parasail
        - Perplexity
        - Phala
        - Relace
        - SambaNova
        - Seed
        - SiliconFlow
        - Sourceful
        - StepFun
        - Stealth
        - StreamLake
        - Switchpoint
        - Together
        - Upstage
        - Venice
        - WandB
        - Xiaomi
        - xAI
        - Z.AI
        - FakeProvider
      example: OpenAI
    Quantization:
      type: string
      enum:
        - int4
        - int8
        - fp4
        - fp6
        - fp8
        - fp16
        - bf16
        - fp32
        - unknown
      example: fp16
    ProviderSort:
      type: string
      enum:
        - price
        - throughput
        - latency
    ProviderSortConfig:
      type: object
      properties:
        by:
          anyOf:
            - $ref: '#/components/schemas/ProviderSort'
            - type: 'null'
        partition:
          anyOf:
            - type: string
              enum:
                - model
                - none
            - type: 'null'
    BigNumberUnion:
      type: string
      description: Price per million prompt tokens
      example: 1000
    PercentileThroughputCutoffs:
      type: object
      properties:
        p50:
          type: number
          nullable: true
          description: Minimum p50 throughput (tokens/sec)
        p75:
          type: number
          nullable: true
          description: Minimum p75 throughput (tokens/sec)
        p90:
          type: number
          nullable: true
          description: Minimum p90 throughput (tokens/sec)
        p99:
          type: number
          nullable: true
          description: Minimum p99 throughput (tokens/sec)
      description: Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
      example:
        p50: 100
        p90: 50
    PreferredMinThroughput:
      anyOf:
        - 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
    PercentileLatencyCutoffs:
      type: object
      properties:
        p50:
          type: number
          nullable: true
          description: Maximum p50 latency (seconds)
        p75:
          type: number
          nullable: true
          description: Maximum p75 latency (seconds)
        p90:
          type: number
          nullable: true
          description: Maximum p90 latency (seconds)
        p99:
          type: number
          nullable: true
          description: Maximum p99 latency (seconds)
      description: Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred.
      example:
        p50: 5
        p90: 10
    PreferredMaxLatency:
      anyOf:
        - 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
    WebSearchEngine:
      type: string
      enum:
        - native
        - exa
      description: The search engine to use for web search.
    PDFParserEngine:
      type: string
      enum:
        - mistral-ocr
        - pdf-text
        - native
      description: The engine to use for parsing PDF files.
    PDFParserOptions:
      type: object
      properties:
        engine:
          $ref: '#/components/schemas/PDFParserEngine'
      description: Options for PDF parsing.
    OpenResponsesRequest:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/OpenResponsesInput'
        instructions:
          type: string
          nullable: true
        metadata:
          $ref: '#/components/schemas/OpenResponsesRequestMetadata'
        tools:
          type: array
          items:
            oneOf:
              - allOf:
                  - $ref: '#/components/schemas/OpenResponsesFunctionTool'
                  - type: object
                    properties: {}
                description: Function tool definition
                example:
                  type: function
                  name: get_weather
                  description: Get the current weather in a location
                  parameters:
                    type: object
                    properties:
                      location:
                        type: string
                        description: The city and state
                      unit:
                        type: string
                        enum:
                          - celsius
                          - fahrenheit
                    required:
                      - location
              - $ref: '#/components/schemas/OpenResponsesWebSearchPreviewTool'
              - $ref: '#/components/schemas/OpenResponsesWebSearchPreview20250311Tool'
              - $ref: '#/components/schemas/OpenResponsesWebSearchTool'
              - $ref: '#/components/schemas/OpenResponsesWebSearch20250826Tool'
        tool_choice:
          $ref: '#/components/schemas/OpenAIResponsesToolChoice'
        parallel_tool_calls:
          type: boolean
          nullable: true
        model:
          type: string
        models:
          type: array
          items:
            type: string
        text:
          $ref: '#/components/schemas/OpenResponsesResponseText'
        reasoning:
          $ref: '#/components/schemas/OpenResponsesReasoningConfig'
        max_output_tokens:
          type: number
          nullable: true
        temperature:
          type: number
          nullable: true
          minimum: 0
          maximum: 2
        top_p:
          type: number
          nullable: true
          minimum: 0
        top_logprobs:
          type: integer
          nullable: true
          minimum: 0
          maximum: 20
        max_tool_calls:
          type: integer
          nullable: true
        presence_penalty:
          type: number
          nullable: true
          minimum: -2
          maximum: 2
        frequency_penalty:
          type: number
          nullable: true
          minimum: -2
          maximum: 2
        top_k:
          type: number
        image_config:
          type: object
          additionalProperties:
            anyOf:
              - type: string
              - type: number
          description: >-
            Provider-specific image configuration options. Keys and values vary by model/provider. See
            https://openrouter.ai/docs/features/multimodal/image-generation for more details.
          example:
            aspect_ratio: '16:9'
        modalities:
          type: array
          items:
            $ref: '#/components/schemas/ResponsesOutputModality'
          description: Output modalities for the response. Supported values are "text" and "image".
          example:
            - text
            - image
        prompt_cache_key:
          type: string
          nullable: true
        previous_response_id:
          type: string
          nullable: true
        prompt:
          $ref: '#/components/schemas/OpenAIResponsesPrompt'
        include:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/OpenAIResponsesIncludable'
        background:
          type: boolean
          nullable: true
        safety_identifier:
          type: string
          nullable: true
        store:
          type: boolean
          const: false
          default: false
        service_tier:
          type: string
          enum:
            - auto
          default: auto
        truncation:
          allOf:
            - $ref: '#/components/schemas/OpenAIResponsesTruncation'
            - example: auto
        stream:
          type: boolean
          default: false
        provider:
          type: object
          nullable: true
          properties:
            allow_fallbacks:
              type: boolean
              nullable: true
              description: >
                Whether to allow backup providers to serve requests

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

                - false: use only the primary/custom provider, and return the upstream error if it's unavailable.
            require_parameters:
              type: boolean
              nullable: true
              description: >-
                Whether to filter providers to only those that support the parameters you've provided. If this setting
                is omitted or set to false, then providers will receive only the parameters they support, and ignore the
                rest.
            data_collection:
              $ref: '#/components/schemas/DataCollection'
            zdr:
              type: boolean
              nullable: true
              description: >-
                Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that
                do not retain prompts will be used.
              example: true
            enforce_distillable_text:
              type: boolean
              nullable: true
              description: >-
                Whether to restrict routing to only models that allow text distillation. When true, only models where
                the author has allowed distillation will be used.
              example: true
            order:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                An ordered list of provider slugs. The router will attempt to use the first provider in the subset of
                this list that supports your requested model, and fall back to the next if it is unavailable. If no
                providers are available, the request will fail with an error message.
            only:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                List of provider slugs to allow. If provided, this list is merged with your account-wide allowed
                provider settings for this request.
            ignore:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored
                provider settings for this request.
            quantizations:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/Quantization'
              description: A list of quantization levels to filter the provider by.
            sort:
              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
            max_price:
              type: object
              properties:
                prompt:
                  $ref: '#/components/schemas/BigNumberUnion'
                completion:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per million completion tokens
                image:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per image
                audio:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per audio unit
                request:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per request
              description: >-
                The object specifying the maximum price you want to pay for this request. USD price per million tokens,
                for prompt and completion.
            preferred_min_throughput:
              $ref: '#/components/schemas/PreferredMinThroughput'
            preferred_max_latency:
              $ref: '#/components/schemas/PreferredMaxLatency'
          additionalProperties: false
          description: When multiple model providers are available, optionally indicate your routing preference.
        plugins:
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - auto-router
                  enabled:
                    type: boolean
                    description: Set to false to disable the auto-router plugin for this request. Defaults to true.
                  allowed_models:
                    type: array
                    items:
                      type: string
                    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/*
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - moderation
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - web
                  enabled:
                    type: boolean
                    description: Set to false to disable the web-search plugin for this request. Defaults to true.
                  max_results:
                    type: number
                  search_prompt:
                    type: string
                  engine:
                    $ref: '#/components/schemas/WebSearchEngine'
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - file-parser
                  enabled:
                    type: boolean
                    description: Set to false to disable the file-parser plugin for this request. Defaults to true.
                  pdf:
                    $ref: '#/components/schemas/PDFParserOptions'
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - response-healing
                  enabled:
                    type: boolean
                    description: Set to false to disable the response-healing plugin for this request. Defaults to true.
                required:
                  - id
          description: Plugins you want to enable for this request, including their settings.
        route:
          type: string
          nullable: true
          enum:
            - fallback
            - sort
          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").
          x-speakeasy-deprecation-message: Use providers.sort.partition instead.
          x-speakeasy-ignore: true
          x-fern-ignore: true
        user:
          type: string
          maxLength: 128
          description: >-
            A unique identifier representing your end-user, which helps distinguish between different users of your app.
            This allows your app to identify specific users in case of abuse reports, preventing your entire app from
            being affected by the actions of individual users. Maximum of 128 characters.
        session_id:
          type: string
          maxLength: 128
          description: >-
            A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for
            observability. If provided in both the request body and the x-session-id header, the body value takes
            precedence. Maximum of 128 characters.
      description: Request schema for Responses endpoint
      example:
        model: anthropic/claude-4.5-sonnet-20250929
        input:
          - type: message
            content: Hello, how are you?
            role: user
        temperature: 0.7
        top_p: 0.9
        tools:
          - type: function
            name: get_current_weather
            description: Get the current weather in a given location
            parameters:
              type: object
              properties:
                location:
                  type: string
    BaseAnthropicMessagesResponse:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - message
        role:
          type: string
          enum:
            - assistant
        content:
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - text
                  text:
                    type: string
                  citations:
                    type: array
                    nullable: true
                    items:
                      oneOf:
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - char_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_char_index:
                              type: number
                            end_char_index:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_char_index
                            - end_char_index
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - page_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_page_number:
                              type: number
                            end_page_number:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_page_number
                            - end_page_number
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - content_block_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_block_index
                            - end_block_index
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - web_search_result_location
                            cited_text:
                              type: string
                            encrypted_index:
                              type: string
                            title:
                              type: string
                              nullable: true
                            url:
                              type: string
                          required:
                            - type
                            - cited_text
                            - encrypted_index
                            - title
                            - url
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - search_result_location
                            cited_text:
                              type: string
                            search_result_index:
                              type: number
                            source:
                              type: string
                            title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                          required:
                            - type
                            - cited_text
                            - search_result_index
                            - source
                            - title
                            - start_block_index
                            - end_block_index
                required:
                  - type
                  - text
                  - citations
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - tool_use
                  id:
                    type: string
                  name:
                    type: string
                  input:
                    nullable: true
                required:
                  - type
                  - id
                  - name
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - thinking
                  thinking:
                    type: string
                  signature:
                    type: string
                required:
                  - type
                  - thinking
                  - signature
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - redacted_thinking
                  data:
                    type: string
                required:
                  - type
                  - data
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - server_tool_use
                  id:
                    type: string
                  name:
                    type: string
                    enum:
                      - web_search
                  input:
                    nullable: true
                required:
                  - type
                  - id
                  - name
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - web_search_tool_result
                  tool_use_id:
                    type: string
                  content:
                    anyOf:
                      - type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - web_search_result
                            encrypted_content:
                              type: string
                            page_age:
                              type: string
                              nullable: true
                            title:
                              type: string
                            url:
                              type: string
                          required:
                            - type
                            - encrypted_content
                            - page_age
                            - title
                            - url
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - web_search_tool_result_error
                          error_code:
                            type: string
                            enum:
                              - invalid_tool_input
                              - unavailable
                              - max_uses_exceeded
                              - too_many_requests
                              - query_too_long
                        required:
                          - type
                          - error_code
                required:
                  - type
                  - tool_use_id
                  - content
        model:
          type: string
        stop_reason:
          type: string
          nullable: true
          enum:
            - end_turn
            - max_tokens
            - stop_sequence
            - tool_use
            - pause_turn
            - refusal
        stop_sequence:
          type: string
          nullable: true
        usage:
          type: object
          properties:
            input_tokens:
              type: number
            output_tokens:
              type: number
            cache_creation_input_tokens:
              type: number
              nullable: true
            cache_read_input_tokens:
              type: number
              nullable: true
            cache_creation:
              type: object
              nullable: true
              properties:
                ephemeral_5m_input_tokens:
                  type: number
                ephemeral_1h_input_tokens:
                  type: number
              required:
                - ephemeral_5m_input_tokens
                - ephemeral_1h_input_tokens
            inference_geo:
              type: string
              nullable: true
            server_tool_use:
              type: object
              nullable: true
              properties:
                web_search_requests:
                  type: number
              required:
                - web_search_requests
            service_tier:
              type: string
              nullable: true
              enum:
                - standard
                - priority
                - batch
          required:
            - input_tokens
            - output_tokens
            - cache_creation_input_tokens
            - cache_read_input_tokens
            - cache_creation
            - inference_geo
            - server_tool_use
            - service_tier
      required:
        - id
        - type
        - role
        - content
        - model
        - stop_reason
        - stop_sequence
        - usage
    AnthropicMessagesResponse:
      allOf:
        - $ref: '#/components/schemas/BaseAnthropicMessagesResponse'
        - type: object
          properties: {}
      description: Non-streaming response from the Anthropic Messages API with OpenRouter extensions
      example:
        id: msg_01XFDUDYJgAACzvnptvVoYEL
        type: message
        role: assistant
        content:
          - type: text
            text: Hello! I'm doing well, thank you for asking.
            citations: null
        model: claude-sonnet-4-5-20250929
        stop_reason: end_turn
        stop_sequence: null
        usage:
          input_tokens: 12
          output_tokens: 15
          cache_creation_input_tokens: null
          cache_read_input_tokens: null
          cache_creation: null
          inference_geo: null
          server_tool_use: null
          service_tier: standard
    AnthropicMessagesStreamEvent:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - message_start
            message:
              type: object
              properties:
                id:
                  type: string
                type:
                  type: string
                  enum:
                    - message
                role:
                  type: string
                  enum:
                    - assistant
                content:
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - text
                          text:
                            type: string
                          citations:
                            type: array
                            nullable: true
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - char_location
                                    cited_text:
                                      type: string
                                    document_index:
                                      type: number
                                    document_title:
                                      type: string
                                      nullable: true
                                    start_char_index:
                                      type: number
                                    end_char_index:
                                      type: number
                                    file_id:
                                      type: string
                                      nullable: true
                                  required:
                                    - type
                                    - cited_text
                                    - document_index
                                    - document_title
                                    - start_char_index
                                    - end_char_index
                                    - file_id
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - page_location
                                    cited_text:
                                      type: string
                                    document_index:
                                      type: number
                                    document_title:
                                      type: string
                                      nullable: true
                                    start_page_number:
                                      type: number
                                    end_page_number:
                                      type: number
                                    file_id:
                                      type: string
                                      nullable: true
                                  required:
                                    - type
                                    - cited_text
                                    - document_index
                                    - document_title
                                    - start_page_number
                                    - end_page_number
                                    - file_id
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - content_block_location
                                    cited_text:
                                      type: string
                                    document_index:
                                      type: number
                                    document_title:
                                      type: string
                                      nullable: true
                                    start_block_index:
                                      type: number
                                    end_block_index:
                                      type: number
                                    file_id:
                                      type: string
                                      nullable: true
                                  required:
                                    - type
                                    - cited_text
                                    - document_index
                                    - document_title
                                    - start_block_index
                                    - end_block_index
                                    - file_id
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - web_search_result_location
                                    cited_text:
                                      type: string
                                    encrypted_index:
                                      type: string
                                    title:
                                      type: string
                                      nullable: true
                                    url:
                                      type: string
                                  required:
                                    - type
                                    - cited_text
                                    - encrypted_index
                                    - title
                                    - url
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - search_result_location
                                    cited_text:
                                      type: string
                                    search_result_index:
                                      type: number
                                    source:
                                      type: string
                                    title:
                                      type: string
                                      nullable: true
                                    start_block_index:
                                      type: number
                                    end_block_index:
                                      type: number
                                  required:
                                    - type
                                    - cited_text
                                    - search_result_index
                                    - source
                                    - title
                                    - start_block_index
                                    - end_block_index
                        required:
                          - type
                          - text
                          - citations
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - tool_use
                          id:
                            type: string
                          name:
                            type: string
                          input:
                            nullable: true
                        required:
                          - type
                          - id
                          - name
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - thinking
                          thinking:
                            type: string
                          signature:
                            type: string
                        required:
                          - type
                          - thinking
                          - signature
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - redacted_thinking
                          data:
                            type: string
                        required:
                          - type
                          - data
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - server_tool_use
                          id:
                            type: string
                          name:
                            type: string
                            enum:
                              - web_search
                          input:
                            nullable: true
                        required:
                          - type
                          - id
                          - name
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - web_search_tool_result
                          tool_use_id:
                            type: string
                          content:
                            anyOf:
                              - type: array
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - web_search_result
                                    encrypted_content:
                                      type: string
                                    page_age:
                                      type: string
                                      nullable: true
                                    title:
                                      type: string
                                    url:
                                      type: string
                                  required:
                                    - type
                                    - encrypted_content
                                    - page_age
                                    - title
                                    - url
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - web_search_tool_result_error
                                  error_code:
                                    type: string
                                    enum:
                                      - invalid_tool_input
                                      - unavailable
                                      - max_uses_exceeded
                                      - too_many_requests
                                      - query_too_long
                                required:
                                  - type
                                  - error_code
                        required:
                          - type
                          - tool_use_id
                          - content
                model:
                  type: string
                stop_reason:
                  nullable: true
                stop_sequence:
                  nullable: true
                usage:
                  type: object
                  properties:
                    input_tokens:
                      type: number
                    output_tokens:
                      type: number
                    cache_creation_input_tokens:
                      type: number
                      nullable: true
                    cache_read_input_tokens:
                      type: number
                      nullable: true
                    cache_creation:
                      type: object
                      nullable: true
                      properties:
                        ephemeral_5m_input_tokens:
                          type: number
                        ephemeral_1h_input_tokens:
                          type: number
                      required:
                        - ephemeral_5m_input_tokens
                        - ephemeral_1h_input_tokens
                    inference_geo:
                      type: string
                      nullable: true
                    server_tool_use:
                      type: object
                      nullable: true
                      properties:
                        web_search_requests:
                          type: number
                      required:
                        - web_search_requests
                    service_tier:
                      type: string
                      nullable: true
                      enum:
                        - standard
                        - priority
                        - batch
                  required:
                    - input_tokens
                    - output_tokens
                    - cache_creation_input_tokens
                    - cache_read_input_tokens
                    - cache_creation
                    - inference_geo
                    - server_tool_use
                    - service_tier
              required:
                - id
                - type
                - role
                - content
                - model
                - stop_reason
                - stop_sequence
                - usage
          required:
            - type
            - message
        - type: object
          properties:
            type:
              type: string
              enum:
                - message_delta
            delta:
              type: object
              properties:
                stop_reason:
                  type: string
                  nullable: true
                  enum:
                    - end_turn
                    - max_tokens
                    - stop_sequence
                    - tool_use
                    - pause_turn
                    - refusal
                stop_sequence:
                  type: string
                  nullable: true
              required:
                - stop_reason
                - stop_sequence
            usage:
              type: object
              properties:
                input_tokens:
                  type: number
                  nullable: true
                output_tokens:
                  type: number
                cache_creation_input_tokens:
                  type: number
                  nullable: true
                cache_read_input_tokens:
                  type: number
                  nullable: true
                server_tool_use:
                  type: object
                  nullable: true
                  properties:
                    web_search_requests:
                      type: number
                  required:
                    - web_search_requests
              required:
                - input_tokens
                - output_tokens
                - cache_creation_input_tokens
                - cache_read_input_tokens
                - server_tool_use
          required:
            - type
            - delta
            - usage
        - type: object
          properties:
            type:
              type: string
              enum:
                - message_stop
          required:
            - type
        - type: object
          properties:
            type:
              type: string
              enum:
                - content_block_start
            index:
              type: number
            content_block:
              oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - text
                    text:
                      type: string
                    citations:
                      type: array
                      nullable: true
                      items:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - char_location
                              cited_text:
                                type: string
                              document_index:
                                type: number
                              document_title:
                                type: string
                                nullable: true
                              start_char_index:
                                type: number
                              end_char_index:
                                type: number
                              file_id:
                                type: string
                                nullable: true
                            required:
                              - type
                              - cited_text
                              - document_index
                              - document_title
                              - start_char_index
                              - end_char_index
                              - file_id
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - page_location
                              cited_text:
                                type: string
                              document_index:
                                type: number
                              document_title:
                                type: string
                                nullable: true
                              start_page_number:
                                type: number
                              end_page_number:
                                type: number
                              file_id:
                                type: string
                                nullable: true
                            required:
                              - type
                              - cited_text
                              - document_index
                              - document_title
                              - start_page_number
                              - end_page_number
                              - file_id
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - content_block_location
                              cited_text:
                                type: string
                              document_index:
                                type: number
                              document_title:
                                type: string
                                nullable: true
                              start_block_index:
                                type: number
                              end_block_index:
                                type: number
                              file_id:
                                type: string
                                nullable: true
                            required:
                              - type
                              - cited_text
                              - document_index
                              - document_title
                              - start_block_index
                              - end_block_index
                              - file_id
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - web_search_result_location
                              cited_text:
                                type: string
                              encrypted_index:
                                type: string
                              title:
                                type: string
                                nullable: true
                              url:
                                type: string
                            required:
                              - type
                              - cited_text
                              - encrypted_index
                              - title
                              - url
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - search_result_location
                              cited_text:
                                type: string
                              search_result_index:
                                type: number
                              source:
                                type: string
                              title:
                                type: string
                                nullable: true
                              start_block_index:
                                type: number
                              end_block_index:
                                type: number
                            required:
                              - type
                              - cited_text
                              - search_result_index
                              - source
                              - title
                              - start_block_index
                              - end_block_index
                  required:
                    - type
                    - text
                    - citations
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - tool_use
                    id:
                      type: string
                    name:
                      type: string
                    input:
                      nullable: true
                  required:
                    - type
                    - id
                    - name
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - thinking
                    thinking:
                      type: string
                    signature:
                      type: string
                  required:
                    - type
                    - thinking
                    - signature
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - redacted_thinking
                    data:
                      type: string
                  required:
                    - type
                    - data
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - server_tool_use
                    id:
                      type: string
                    name:
                      type: string
                      enum:
                        - web_search
                    input:
                      nullable: true
                  required:
                    - type
                    - id
                    - name
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - web_search_tool_result
                    tool_use_id:
                      type: string
                    content:
                      anyOf:
                        - type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - web_search_result
                              encrypted_content:
                                type: string
                              page_age:
                                type: string
                                nullable: true
                              title:
                                type: string
                              url:
                                type: string
                            required:
                              - type
                              - encrypted_content
                              - page_age
                              - title
                              - url
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - web_search_tool_result_error
                            error_code:
                              type: string
                              enum:
                                - invalid_tool_input
                                - unavailable
                                - max_uses_exceeded
                                - too_many_requests
                                - query_too_long
                          required:
                            - type
                            - error_code
                  required:
                    - type
                    - tool_use_id
                    - content
          required:
            - type
            - index
            - content_block
        - type: object
          properties:
            type:
              type: string
              enum:
                - content_block_delta
            index:
              type: number
            delta:
              oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - text_delta
                    text:
                      type: string
                  required:
                    - type
                    - text
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - input_json_delta
                    partial_json:
                      type: string
                  required:
                    - type
                    - partial_json
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - thinking_delta
                    thinking:
                      type: string
                  required:
                    - type
                    - thinking
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - signature_delta
                    signature:
                      type: string
                  required:
                    - type
                    - signature
                - type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - citations_delta
                    citation:
                      oneOf:
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - char_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_char_index:
                              type: number
                            end_char_index:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_char_index
                            - end_char_index
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - page_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_page_number:
                              type: number
                            end_page_number:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_page_number
                            - end_page_number
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - content_block_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                            file_id:
                              type: string
                              nullable: true
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_block_index
                            - end_block_index
                            - file_id
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - web_search_result_location
                            cited_text:
                              type: string
                            encrypted_index:
                              type: string
                            title:
                              type: string
                              nullable: true
                            url:
                              type: string
                          required:
                            - type
                            - cited_text
                            - encrypted_index
                            - title
                            - url
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - search_result_location
                            cited_text:
                              type: string
                            search_result_index:
                              type: number
                            source:
                              type: string
                            title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                          required:
                            - type
                            - cited_text
                            - search_result_index
                            - source
                            - title
                            - start_block_index
                            - end_block_index
                  required:
                    - type
                    - citation
          required:
            - type
            - index
            - delta
        - type: object
          properties:
            type:
              type: string
              enum:
                - content_block_stop
            index:
              type: number
          required:
            - type
            - index
        - type: object
          properties:
            type:
              type: string
              enum:
                - ping
          required:
            - type
        - type: object
          properties:
            type:
              type: string
              enum:
                - error
            error:
              type: object
              properties:
                type:
                  type: string
                message:
                  type: string
              required:
                - type
                - message
          required:
            - type
            - error
      description: Union of all possible streaming events
    OpenRouterAnthropicMessageParam:
      type: object
      properties:
        role:
          type: string
          enum:
            - user
            - assistant
        content:
          anyOf:
            - type: string
            - type: array
              items:
                oneOf:
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - text
                      text:
                        type: string
                      citations:
                        type: array
                        nullable: true
                        items:
                          oneOf:
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - char_location
                                cited_text:
                                  type: string
                                document_index:
                                  type: number
                                document_title:
                                  type: string
                                  nullable: true
                                start_char_index:
                                  type: number
                                end_char_index:
                                  type: number
                              required:
                                - type
                                - cited_text
                                - document_index
                                - document_title
                                - start_char_index
                                - end_char_index
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - page_location
                                cited_text:
                                  type: string
                                document_index:
                                  type: number
                                document_title:
                                  type: string
                                  nullable: true
                                start_page_number:
                                  type: number
                                end_page_number:
                                  type: number
                              required:
                                - type
                                - cited_text
                                - document_index
                                - document_title
                                - start_page_number
                                - end_page_number
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - content_block_location
                                cited_text:
                                  type: string
                                document_index:
                                  type: number
                                document_title:
                                  type: string
                                  nullable: true
                                start_block_index:
                                  type: number
                                end_block_index:
                                  type: number
                              required:
                                - type
                                - cited_text
                                - document_index
                                - document_title
                                - start_block_index
                                - end_block_index
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - web_search_result_location
                                cited_text:
                                  type: string
                                encrypted_index:
                                  type: string
                                title:
                                  type: string
                                  nullable: true
                                url:
                                  type: string
                              required:
                                - type
                                - cited_text
                                - encrypted_index
                                - title
                                - url
                            - type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - search_result_location
                                cited_text:
                                  type: string
                                search_result_index:
                                  type: number
                                source:
                                  type: string
                                title:
                                  type: string
                                  nullable: true
                                start_block_index:
                                  type: number
                                end_block_index:
                                  type: number
                              required:
                                - type
                                - cited_text
                                - search_result_index
                                - source
                                - title
                                - start_block_index
                                - end_block_index
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - text
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - image
                      source:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - base64
                              media_type:
                                type: string
                                enum:
                                  - image/jpeg
                                  - image/png
                                  - image/gif
                                  - image/webp
                              data:
                                type: string
                            required:
                              - type
                              - media_type
                              - data
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - url
                              url:
                                type: string
                            required:
                              - type
                              - url
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - source
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - document
                      source:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - base64
                              media_type:
                                type: string
                                enum:
                                  - application/pdf
                              data:
                                type: string
                            required:
                              - type
                              - media_type
                              - data
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - text
                              media_type:
                                type: string
                                enum:
                                  - text/plain
                              data:
                                type: string
                            required:
                              - type
                              - media_type
                              - data
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - content
                              content:
                                anyOf:
                                  - type: string
                                  - type: array
                                    items:
                                      oneOf:
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - text
                                            text:
                                              type: string
                                            citations:
                                              type: array
                                              nullable: true
                                              items:
                                                oneOf:
                                                  - type: object
                                                    properties:
                                                      type:
                                                        type: string
                                                        enum:
                                                          - char_location
                                                      cited_text:
                                                        type: string
                                                      document_index:
                                                        type: number
                                                      document_title:
                                                        type: string
                                                        nullable: true
                                                      start_char_index:
                                                        type: number
                                                      end_char_index:
                                                        type: number
                                                    required:
                                                      - type
                                                      - cited_text
                                                      - document_index
                                                      - document_title
                                                      - start_char_index
                                                      - end_char_index
                                                  - type: object
                                                    properties:
                                                      type:
                                                        type: string
                                                        enum:
                                                          - page_location
                                                      cited_text:
                                                        type: string
                                                      document_index:
                                                        type: number
                                                      document_title:
                                                        type: string
                                                        nullable: true
                                                      start_page_number:
                                                        type: number
                                                      end_page_number:
                                                        type: number
                                                    required:
                                                      - type
                                                      - cited_text
                                                      - document_index
                                                      - document_title
                                                      - start_page_number
                                                      - end_page_number
                                                  - type: object
                                                    properties:
                                                      type:
                                                        type: string
                                                        enum:
                                                          - content_block_location
                                                      cited_text:
                                                        type: string
                                                      document_index:
                                                        type: number
                                                      document_title:
                                                        type: string
                                                        nullable: true
                                                      start_block_index:
                                                        type: number
                                                      end_block_index:
                                                        type: number
                                                    required:
                                                      - type
                                                      - cited_text
                                                      - document_index
                                                      - document_title
                                                      - start_block_index
                                                      - end_block_index
                                                  - type: object
                                                    properties:
                                                      type:
                                                        type: string
                                                        enum:
                                                          - web_search_result_location
                                                      cited_text:
                                                        type: string
                                                      encrypted_index:
                                                        type: string
                                                      title:
                                                        type: string
                                                        nullable: true
                                                      url:
                                                        type: string
                                                    required:
                                                      - type
                                                      - cited_text
                                                      - encrypted_index
                                                      - title
                                                      - url
                                                  - type: object
                                                    properties:
                                                      type:
                                                        type: string
                                                        enum:
                                                          - search_result_location
                                                      cited_text:
                                                        type: string
                                                      search_result_index:
                                                        type: number
                                                      source:
                                                        type: string
                                                      title:
                                                        type: string
                                                        nullable: true
                                                      start_block_index:
                                                        type: number
                                                      end_block_index:
                                                        type: number
                                                    required:
                                                      - type
                                                      - cited_text
                                                      - search_result_index
                                                      - source
                                                      - title
                                                      - start_block_index
                                                      - end_block_index
                                            cache_control:
                                              type: object
                                              properties:
                                                type:
                                                  type: string
                                                  enum:
                                                    - ephemeral
                                                ttl:
                                                  type: string
                                                  enum:
                                                    - 5m
                                                    - 1h
                                              required:
                                                - type
                                          required:
                                            - type
                                            - text
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - image
                                            source:
                                              oneOf:
                                                - type: object
                                                  properties:
                                                    type:
                                                      type: string
                                                      enum:
                                                        - base64
                                                    media_type:
                                                      type: string
                                                      enum:
                                                        - image/jpeg
                                                        - image/png
                                                        - image/gif
                                                        - image/webp
                                                    data:
                                                      type: string
                                                  required:
                                                    - type
                                                    - media_type
                                                    - data
                                                - type: object
                                                  properties:
                                                    type:
                                                      type: string
                                                      enum:
                                                        - url
                                                    url:
                                                      type: string
                                                  required:
                                                    - type
                                                    - url
                                            cache_control:
                                              type: object
                                              properties:
                                                type:
                                                  type: string
                                                  enum:
                                                    - ephemeral
                                                ttl:
                                                  type: string
                                                  enum:
                                                    - 5m
                                                    - 1h
                                              required:
                                                - type
                                          required:
                                            - type
                                            - source
                            required:
                              - type
                              - content
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - url
                              url:
                                type: string
                            required:
                              - type
                              - url
                      citations:
                        type: object
                        nullable: true
                        properties:
                          enabled:
                            type: boolean
                      context:
                        type: string
                        nullable: true
                      title:
                        type: string
                        nullable: true
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - source
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - tool_use
                      id:
                        type: string
                      name:
                        type: string
                      input:
                        nullable: true
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - id
                      - name
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - tool_result
                      tool_use_id:
                        type: string
                      content:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              anyOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - text
                                    text:
                                      type: string
                                    citations:
                                      type: array
                                      nullable: true
                                      items:
                                        oneOf:
                                          - type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - char_location
                                              cited_text:
                                                type: string
                                              document_index:
                                                type: number
                                              document_title:
                                                type: string
                                                nullable: true
                                              start_char_index:
                                                type: number
                                              end_char_index:
                                                type: number
                                            required:
                                              - type
                                              - cited_text
                                              - document_index
                                              - document_title
                                              - start_char_index
                                              - end_char_index
                                          - type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - page_location
                                              cited_text:
                                                type: string
                                              document_index:
                                                type: number
                                              document_title:
                                                type: string
                                                nullable: true
                                              start_page_number:
                                                type: number
                                              end_page_number:
                                                type: number
                                            required:
                                              - type
                                              - cited_text
                                              - document_index
                                              - document_title
                                              - start_page_number
                                              - end_page_number
                                          - type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - content_block_location
                                              cited_text:
                                                type: string
                                              document_index:
                                                type: number
                                              document_title:
                                                type: string
                                                nullable: true
                                              start_block_index:
                                                type: number
                                              end_block_index:
                                                type: number
                                            required:
                                              - type
                                              - cited_text
                                              - document_index
                                              - document_title
                                              - start_block_index
                                              - end_block_index
                                          - type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - web_search_result_location
                                              cited_text:
                                                type: string
                                              encrypted_index:
                                                type: string
                                              title:
                                                type: string
                                                nullable: true
                                              url:
                                                type: string
                                            required:
                                              - type
                                              - cited_text
                                              - encrypted_index
                                              - title
                                              - url
                                          - type: object
                                            properties:
                                              type:
                                                type: string
                                                enum:
                                                  - search_result_location
                                              cited_text:
                                                type: string
                                              search_result_index:
                                                type: number
                                              source:
                                                type: string
                                              title:
                                                type: string
                                                nullable: true
                                              start_block_index:
                                                type: number
                                              end_block_index:
                                                type: number
                                            required:
                                              - type
                                              - cited_text
                                              - search_result_index
                                              - source
                                              - title
                                              - start_block_index
                                              - end_block_index
                                    cache_control:
                                      type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                            - ephemeral
                                        ttl:
                                          type: string
                                          enum:
                                            - 5m
                                            - 1h
                                      required:
                                        - type
                                  required:
                                    - type
                                    - text
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - image
                                    source:
                                      oneOf:
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - base64
                                            media_type:
                                              type: string
                                              enum:
                                                - image/jpeg
                                                - image/png
                                                - image/gif
                                                - image/webp
                                            data:
                                              type: string
                                          required:
                                            - type
                                            - media_type
                                            - data
                                        - type: object
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - url
                                            url:
                                              type: string
                                          required:
                                            - type
                                            - url
                                    cache_control:
                                      type: object
                                      properties:
                                        type:
                                          type: string
                                          enum:
                                            - ephemeral
                                        ttl:
                                          type: string
                                          enum:
                                            - 5m
                                            - 1h
                                      required:
                                        - type
                                  required:
                                    - type
                                    - source
                      is_error:
                        type: boolean
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - tool_use_id
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - thinking
                      thinking:
                        type: string
                      signature:
                        type: string
                    required:
                      - type
                      - thinking
                      - signature
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - redacted_thinking
                      data:
                        type: string
                    required:
                      - type
                      - data
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - server_tool_use
                      id:
                        type: string
                      name:
                        type: string
                        enum:
                          - web_search
                      input:
                        nullable: true
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - id
                      - name
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - web_search_tool_result
                      tool_use_id:
                        type: string
                      content:
                        anyOf:
                          - type: array
                            items:
                              type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - web_search_result
                                encrypted_content:
                                  type: string
                                title:
                                  type: string
                                url:
                                  type: string
                                page_age:
                                  type: string
                                  nullable: true
                              required:
                                - type
                                - encrypted_content
                                - title
                                - url
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - web_search_tool_result_error
                              error_code:
                                type: string
                                enum:
                                  - invalid_tool_input
                                  - unavailable
                                  - max_uses_exceeded
                                  - too_many_requests
                                  - query_too_long
                            required:
                              - type
                              - error_code
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - tool_use_id
                      - content
                  - type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - search_result
                      source:
                        type: string
                      title:
                        type: string
                      content:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - text
                            text:
                              type: string
                            citations:
                              type: array
                              nullable: true
                              items:
                                oneOf:
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - char_location
                                      cited_text:
                                        type: string
                                      document_index:
                                        type: number
                                      document_title:
                                        type: string
                                        nullable: true
                                      start_char_index:
                                        type: number
                                      end_char_index:
                                        type: number
                                    required:
                                      - type
                                      - cited_text
                                      - document_index
                                      - document_title
                                      - start_char_index
                                      - end_char_index
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - page_location
                                      cited_text:
                                        type: string
                                      document_index:
                                        type: number
                                      document_title:
                                        type: string
                                        nullable: true
                                      start_page_number:
                                        type: number
                                      end_page_number:
                                        type: number
                                    required:
                                      - type
                                      - cited_text
                                      - document_index
                                      - document_title
                                      - start_page_number
                                      - end_page_number
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - content_block_location
                                      cited_text:
                                        type: string
                                      document_index:
                                        type: number
                                      document_title:
                                        type: string
                                        nullable: true
                                      start_block_index:
                                        type: number
                                      end_block_index:
                                        type: number
                                    required:
                                      - type
                                      - cited_text
                                      - document_index
                                      - document_title
                                      - start_block_index
                                      - end_block_index
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - web_search_result_location
                                      cited_text:
                                        type: string
                                      encrypted_index:
                                        type: string
                                      title:
                                        type: string
                                        nullable: true
                                      url:
                                        type: string
                                    required:
                                      - type
                                      - cited_text
                                      - encrypted_index
                                      - title
                                      - url
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        enum:
                                          - search_result_location
                                      cited_text:
                                        type: string
                                      search_result_index:
                                        type: number
                                      source:
                                        type: string
                                      title:
                                        type: string
                                        nullable: true
                                      start_block_index:
                                        type: number
                                      end_block_index:
                                        type: number
                                    required:
                                      - type
                                      - cited_text
                                      - search_result_index
                                      - source
                                      - title
                                      - start_block_index
                                      - end_block_index
                            cache_control:
                              type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - ephemeral
                                ttl:
                                  type: string
                                  enum:
                                    - 5m
                                    - 1h
                              required:
                                - type
                          required:
                            - type
                            - text
                      citations:
                        type: object
                        properties:
                          enabled:
                            type: boolean
                      cache_control:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ephemeral
                          ttl:
                            type: string
                            enum:
                              - 5m
                              - 1h
                        required:
                          - type
                    required:
                      - type
                      - source
                      - title
                      - content
      required:
        - role
        - content
      description: Anthropic message with OpenRouter extensions
    AnthropicOutputConfig:
      type: object
      properties:
        effort:
          type: string
          nullable: true
          enum:
            - low
            - medium
            - high
            - max
          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`, or `max`.
          example: medium
      description: Configuration for controlling output behavior. Currently supports the effort parameter for Claude Opus 4.5.
    AnthropicMessagesRequest:
      type: object
      properties:
        model:
          type: string
        max_tokens:
          type: number
        messages:
          type: array
          items:
            $ref: '#/components/schemas/OpenRouterAnthropicMessageParam'
        system:
          anyOf:
            - type: string
            - type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - text
                  text:
                    type: string
                  citations:
                    type: array
                    nullable: true
                    items:
                      oneOf:
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - char_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_char_index:
                              type: number
                            end_char_index:
                              type: number
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_char_index
                            - end_char_index
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - page_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_page_number:
                              type: number
                            end_page_number:
                              type: number
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_page_number
                            - end_page_number
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - content_block_location
                            cited_text:
                              type: string
                            document_index:
                              type: number
                            document_title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                          required:
                            - type
                            - cited_text
                            - document_index
                            - document_title
                            - start_block_index
                            - end_block_index
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - web_search_result_location
                            cited_text:
                              type: string
                            encrypted_index:
                              type: string
                            title:
                              type: string
                              nullable: true
                            url:
                              type: string
                          required:
                            - type
                            - cited_text
                            - encrypted_index
                            - title
                            - url
                        - type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - search_result_location
                            cited_text:
                              type: string
                            search_result_index:
                              type: number
                            source:
                              type: string
                            title:
                              type: string
                              nullable: true
                            start_block_index:
                              type: number
                            end_block_index:
                              type: number
                          required:
                            - type
                            - cited_text
                            - search_result_index
                            - source
                            - title
                            - start_block_index
                            - end_block_index
                  cache_control:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - ephemeral
                      ttl:
                        type: string
                        enum:
                          - 5m
                          - 1h
                    required:
                      - type
                required:
                  - type
                  - text
        metadata:
          type: object
          properties:
            user_id:
              type: string
              nullable: true
        stop_sequences:
          type: array
          items:
            type: string
        stream:
          type: boolean
        temperature:
          type: number
        top_p:
          type: number
        top_k:
          type: number
        tools:
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  name:
                    type: string
                  description:
                    type: string
                  input_schema:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - object
                      properties:
                        nullable: true
                      required:
                        type: array
                        nullable: true
                        items:
                          type: string
                    required:
                      - type
                    additionalProperties:
                      nullable: true
                  type:
                    type: string
                    enum:
                      - custom
                  cache_control:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - ephemeral
                      ttl:
                        type: string
                        enum:
                          - 5m
                          - 1h
                    required:
                      - type
                required:
                  - name
                  - input_schema
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - bash_20250124
                  name:
                    type: string
                    enum:
                      - bash
                  cache_control:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - ephemeral
                      ttl:
                        type: string
                        enum:
                          - 5m
                          - 1h
                    required:
                      - type
                required:
                  - type
                  - name
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - text_editor_20250124
                  name:
                    type: string
                    enum:
                      - str_replace_editor
                  cache_control:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - ephemeral
                      ttl:
                        type: string
                        enum:
                          - 5m
                          - 1h
                    required:
                      - type
                required:
                  - type
                  - name
              - type: object
                properties:
                  type:
                    type: string
                    enum:
                      - web_search_20250305
                  name:
                    type: string
                    enum:
                      - web_search
                  allowed_domains:
                    type: array
                    nullable: true
                    items:
                      type: string
                  blocked_domains:
                    type: array
                    nullable: true
                    items:
                      type: string
                  max_uses:
                    type: number
                    nullable: true
                  user_location:
                    type: object
                    nullable: true
                    properties:
                      type:
                        type: string
                        enum:
                          - approximate
                      city:
                        type: string
                        nullable: true
                      country:
                        type: string
                        nullable: true
                      region:
                        type: string
                        nullable: true
                      timezone:
                        type: string
                        nullable: true
                    required:
                      - type
                  cache_control:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - ephemeral
                      ttl:
                        type: string
                        enum:
                          - 5m
                          - 1h
                    required:
                      - type
                required:
                  - type
                  - name
        tool_choice:
          oneOf:
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - auto
                disable_parallel_tool_use:
                  type: boolean
              required:
                - type
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - any
                disable_parallel_tool_use:
                  type: boolean
              required:
                - type
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - none
              required:
                - type
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - tool
                name:
                  type: string
                disable_parallel_tool_use:
                  type: boolean
              required:
                - type
                - name
        thinking:
          oneOf:
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - enabled
                budget_tokens:
                  type: number
              required:
                - type
                - budget_tokens
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - disabled
              required:
                - type
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - adaptive
              required:
                - type
        service_tier:
          type: string
          enum:
            - auto
            - standard_only
        provider:
          type: object
          nullable: true
          properties:
            allow_fallbacks:
              type: boolean
              nullable: true
              description: >
                Whether to allow backup providers to serve requests

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

                - false: use only the primary/custom provider, and return the upstream error if it's unavailable.
            require_parameters:
              type: boolean
              nullable: true
              description: >-
                Whether to filter providers to only those that support the parameters you've provided. If this setting
                is omitted or set to false, then providers will receive only the parameters they support, and ignore the
                rest.
            data_collection:
              $ref: '#/components/schemas/DataCollection'
            zdr:
              type: boolean
              nullable: true
              description: >-
                Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that
                do not retain prompts will be used.
              example: true
            enforce_distillable_text:
              type: boolean
              nullable: true
              description: >-
                Whether to restrict routing to only models that allow text distillation. When true, only models where
                the author has allowed distillation will be used.
              example: true
            order:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                An ordered list of provider slugs. The router will attempt to use the first provider in the subset of
                this list that supports your requested model, and fall back to the next if it is unavailable. If no
                providers are available, the request will fail with an error message.
            only:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                List of provider slugs to allow. If provided, this list is merged with your account-wide allowed
                provider settings for this request.
            ignore:
              type: array
              nullable: true
              items:
                anyOf:
                  - $ref: '#/components/schemas/ProviderName'
                  - type: string
              description: >-
                List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored
                provider settings for this request.
            quantizations:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/Quantization'
              description: A list of quantization levels to filter the provider by.
            sort:
              allOf:
                - $ref: '#/components/schemas/ProviderSort'
                - 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.
            max_price:
              type: object
              properties:
                prompt:
                  $ref: '#/components/schemas/BigNumberUnion'
                completion:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per million completion tokens
                image:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per image
                audio:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per audio unit
                request:
                  allOf:
                    - $ref: '#/components/schemas/BigNumberUnion'
                    - description: Price per request
              description: >-
                The object specifying the maximum price you want to pay for this request. USD price per million tokens,
                for prompt and completion.
            preferred_min_throughput:
              $ref: '#/components/schemas/PreferredMinThroughput'
            preferred_max_latency:
              $ref: '#/components/schemas/PreferredMaxLatency'
          additionalProperties: false
          description: When multiple model providers are available, optionally indicate your routing preference.
        plugins:
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - auto-router
                  enabled:
                    type: boolean
                    description: Set to false to disable the auto-router plugin for this request. Defaults to true.
                  allowed_models:
                    type: array
                    items:
                      type: string
                    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/*
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - moderation
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - web
                  enabled:
                    type: boolean
                    description: Set to false to disable the web-search plugin for this request. Defaults to true.
                  max_results:
                    type: number
                  search_prompt:
                    type: string
                  engine:
                    $ref: '#/components/schemas/WebSearchEngine'
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - file-parser
                  enabled:
                    type: boolean
                    description: Set to false to disable the file-parser plugin for this request. Defaults to true.
                  pdf:
                    $ref: '#/components/schemas/PDFParserOptions'
                required:
                  - id
              - type: object
                properties:
                  id:
                    type: string
                    enum:
                      - response-healing
                  enabled:
                    type: boolean
                    description: Set to false to disable the response-healing plugin for this request. Defaults to true.
                required:
                  - id
          description: Plugins you want to enable for this request, including their settings.
        route:
          type: string
          nullable: true
          enum:
            - fallback
            - sort
          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").
          x-speakeasy-deprecation-message: Use providers.sort.partition instead.
          x-speakeasy-ignore: true
          x-fern-ignore: true
        user:
          type: string
          maxLength: 128
          description: >-
            A unique identifier representing your end-user, which helps distinguish between different users of your app.
            This allows your app to identify specific users in case of abuse reports, preventing your entire app from
            being affected by the actions of individual users. Maximum of 128 characters.
        session_id:
          type: string
          maxLength: 128
          description: >-
            A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for
            observability. If provided in both the request body and the x-session-id header, the body value takes
            precedence. Maximum of 128 characters.
        models:
          type: array
          items:
            type: string
        output_config:
          $ref: '#/components/schemas/AnthropicOutputConfig'
      required:
        - model
        - max_tokens
        - messages
      description: Request schema for Anthropic Messages API endpoint
      example:
        model: anthropic/claude-4.5-sonnet-20250929
        max_tokens: 1024
        messages:
          - role: user
            content: Hello, how are you?
        temperature: 0.7
    ActivityItem:
      type: object
      properties:
        date:
          type: string
          description: Date of the activity (YYYY-MM-DD format)
          example: '2025-08-24'
        model:
          type: string
          description: Model slug (e.g., "openai/gpt-4.1")
          example: openai/gpt-4.1
        model_permaslug:
          type: string
          description: Model permaslug (e.g., "openai/gpt-4.1-2025-04-14")
          example: openai/gpt-4.1-2025-04-14
        endpoint_id:
          type: string
          description: Unique identifier for the endpoint
          example: 550e8400-e29b-41d4-a716-446655440000
        provider_name:
          type: string
          description: Name of the provider serving this endpoint
          example: OpenAI
        usage:
          type: number
          description: Total cost in USD (OpenRouter credits spent)
          example: 0.015
        byok_usage_inference:
          type: number
          description: BYOK inference cost in USD (external credits spent)
          example: 0.012
        requests:
          type: number
          description: Number of requests made
          example: 5
        prompt_tokens:
          type: number
          description: Total prompt tokens used
          example: 50
        completion_tokens:
          type: number
          description: Total completion tokens generated
          example: 125
        reasoning_tokens:
          type: number
          description: Total reasoning tokens used
          example: 25
      required:
        - date
        - model
        - model_permaslug
        - endpoint_id
        - provider_name
        - usage
        - byok_usage_inference
        - requests
        - prompt_tokens
        - completion_tokens
        - reasoning_tokens
      example:
        date: '2025-08-24'
        model: openai/gpt-4.1
        model_permaslug: openai/gpt-4.1-2025-04-14
        endpoint_id: 550e8400-e29b-41d4-a716-446655440000
        provider_name: OpenAI
        usage: 0.015
        byok_usage_inference: 0.012
        requests: 5
        prompt_tokens: 50
        completion_tokens: 125
        reasoning_tokens: 25
    ForbiddenResponseErrorData:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        metadata:
          type: object
          nullable: true
          additionalProperties:
            nullable: true
      required:
        - code
        - message
      description: Error data for ForbiddenResponse
      example:
        code: 403
        message: Only management keys can perform this operation
    ForbiddenResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ForbiddenResponseErrorData'
        user_id:
          type: string
          nullable: true
      required:
        - error
      description: Forbidden - Authentication successful but insufficient permissions
      example:
        error:
          code: 403
          message: Only management keys can perform this operation
    CreateChargeRequest:
      type: object
      properties:
        amount:
          type: number
        sender:
          type: string
        chain_id:
          type: integer
          enum:
            - 1
            - 137
            - 8453
      required:
        - amount
        - sender
        - chain_id
      description: Create a Coinbase charge for crypto payment
      example:
        amount: 100
        sender: '0x1234567890123456789012345678901234567890'
        chain_id: 1
    ProviderPreferences:
      type: object
      properties:
        allow_fallbacks:
          type: boolean
          nullable: true
          description: >
            Whether to allow backup providers to serve requests

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

            - false: use only the primary/custom provider, and return the upstream error if it's unavailable.
        require_parameters:
          type: boolean
          nullable: true
          description: >-
            Whether to filter providers to only those that support the parameters you've provided. If this setting is
            omitted or set to false, then providers will receive only the parameters they support, and ignore the rest.
        data_collection:
          $ref: '#/components/schemas/DataCollection'
        zdr:
          type: boolean
          nullable: true
          description: >-
            Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do
            not retain prompts will be used.
          example: true
        enforce_distillable_text:
          type: boolean
          nullable: true
          description: >-
            Whether to restrict routing to only models that allow text distillation. When true, only models where the
            author has allowed distillation will be used.
          example: true
        order:
          type: array
          nullable: true
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          description: >-
            An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this
            list that supports your requested model, and fall back to the next if it is unavailable. If no providers are
            available, the request will fail with an error message.
        only:
          type: array
          nullable: true
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          description: >-
            List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider
            settings for this request.
        ignore:
          type: array
          nullable: true
          items:
            anyOf:
              - $ref: '#/components/schemas/ProviderName'
              - type: string
          description: >-
            List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider
            settings for this request.
        quantizations:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/Quantization'
          description: A list of quantization levels to filter the provider by.
        sort:
          allOf:
            - $ref: '#/components/schemas/ProviderSort'
            - 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.
        max_price:
          type: object
          properties:
            prompt:
              $ref: '#/components/schemas/BigNumberUnion'
            completion:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per million completion tokens
            image:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per image
            audio:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per audio unit
            request:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: Price per request
          description: >-
            The object specifying the maximum price you want to pay for this request. USD price per million tokens, for
            prompt and completion.
        preferred_min_throughput:
          $ref: '#/components/schemas/PreferredMinThroughput'
        preferred_max_latency:
          $ref: '#/components/schemas/PreferredMaxLatency'
      description: Provider routing preferences for the request.
    PublicPricing:
      type: object
      properties:
        prompt:
          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
        request:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        image:
          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
        image_output:
          allOf:
            - $ref: '#/components/schemas/BigNumberUnion'
            - description: A number or string value representing a large number
        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
        input_audio_cache:
          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
        internal_reasoning:
          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
        discount:
          type: number
      required:
        - prompt
        - completion
      additionalProperties: false
      description: Pricing information for the model
      example:
        prompt: '0.00003'
        completion: '0.00006'
        request: '0'
        image: '0'
    ModelGroup:
      type: string
      enum:
        - Router
        - Media
        - Other
        - GPT
        - Claude
        - Gemini
        - Grok
        - Cohere
        - Nova
        - Qwen
        - Yi
        - DeepSeek
        - Mistral
        - Llama2
        - Llama3
        - Llama4
        - PaLM
        - RWKV
        - Qwen3
      example: GPT
      description: Tokenizer type used by the model
    InputModality:
      type: string
      enum:
        - text
        - image
        - file
        - audio
        - video
      example: text
    OutputModality:
      type: string
      enum:
        - text
        - image
        - embeddings
        - audio
      example: text
    ModelArchitecture:
      type: object
      properties:
        tokenizer:
          $ref: '#/components/schemas/ModelGroup'
        instruct_type:
          type: string
          nullable: true
          enum:
            - none
            - airoboros
            - alpaca
            - alpaca-modif
            - chatml
            - claude
            - code-llama
            - gemma
            - llama2
            - llama3
            - mistral
            - nemotron
            - neural
            - openchat
            - phi3
            - rwkv
            - vicuna
            - zephyr
            - deepseek-r1
            - deepseek-v3.1
            - qwq
            - qwen3
          example: chatml
          description: Instruction format type
        modality:
          type: string
          nullable: true
          description: Primary modality of the model
          example: text->text
        input_modalities:
          type: array
          items:
            $ref: '#/components/schemas/InputModality'
          description: Supported input modalities
        output_modalities:
          type: array
          items:
            $ref: '#/components/schemas/OutputModality'
          description: Supported output modalities
      required:
        - modality
        - input_modalities
        - output_modalities
      description: Model architecture information
      example:
        tokenizer: GPT
        instruct_type: chatml
        modality: text->text
        input_modalities:
          - text
        output_modalities:
          - text
    TopProviderInfo:
      type: object
      properties:
        context_length:
          type: number
          nullable: true
          description: Context length from the top provider
          example: 8192
        max_completion_tokens:
          type: number
          nullable: true
          description: Maximum completion tokens from the top provider
          example: 4096
        is_moderated:
          type: boolean
          description: Whether the top provider moderates content
          example: true
      required:
        - is_moderated
      description: Information about the top provider for this model
      example:
        context_length: 8192
        max_completion_tokens: 4096
        is_moderated: true
    PerRequestLimits:
      type: object
      nullable: true
      properties:
        prompt_tokens:
          type: number
          example: 1000
          description: Maximum prompt tokens per request
        completion_tokens:
          type: number
          example: 1000
          description: Maximum completion tokens per request
      required:
        - prompt_tokens
        - completion_tokens
      description: Per-request token limits
      example:
        prompt_tokens: 1000
        completion_tokens: 1000
    Parameter:
      type: string
      enum:
        - temperature
        - top_p
        - top_k
        - min_p
        - top_a
        - frequency_penalty
        - presence_penalty
        - repetition_penalty
        - max_tokens
        - logit_bias
        - logprobs
        - top_logprobs
        - seed
        - response_format
        - structured_outputs
        - stop
        - tools
        - tool_choice
        - parallel_tool_calls
        - include_reasoning
        - reasoning
        - reasoning_effort
        - web_search_options
        - verbosity
      example: temperature
    DefaultParameters:
      type: object
      nullable: true
      properties:
        temperature:
          type: number
          nullable: true
          minimum: 0
          maximum: 2
        top_p:
          type: number
          nullable: true
          minimum: 0
          maximum: 1
        frequency_penalty:
          type: number
          nullable: true
          minimum: -2
          maximum: 2
      additionalProperties: false
      description: Default parameters for this model
      example:
        temperature: 0.7
        top_p: 0.9
        frequency_penalty: 0
    Model:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the model
          example: openai/gpt-4
        canonical_slug:
          type: string
          description: Canonical slug for the model
          example: openai/gpt-4
        hugging_face_id:
          type: string
          nullable: true
          description: Hugging Face model identifier, if applicable
          example: microsoft/DialoGPT-medium
        name:
          type: string
          description: Display name of the model
          example: GPT-4
        created:
          type: number
          description: Unix timestamp of when the model was created
          example: 1692901234
        description:
          type: string
          description: Description of the model
          example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
        pricing:
          $ref: '#/components/schemas/PublicPricing'
        context_length:
          type: number
          nullable: true
          description: Maximum context length in tokens
          example: 8192
        architecture:
          $ref: '#/components/schemas/ModelArchitecture'
        top_provider:
          $ref: '#/components/schemas/TopProviderInfo'
        per_request_limits:
          $ref: '#/components/schemas/PerRequestLimits'
        supported_parameters:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
          description: List of supported parameters for this model
        default_parameters:
          $ref: '#/components/schemas/DefaultParameters'
        expiration_date:
          type: string
          nullable: true
          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'
      required:
        - id
        - canonical_slug
        - name
        - created
        - pricing
        - context_length
        - architecture
        - top_provider
        - per_request_limits
        - supported_parameters
        - default_parameters
      description: Information about an AI model available on OpenRouter
      example:
        id: openai/gpt-4
        canonical_slug: openai/gpt-4
        name: GPT-4
        created: 1692901234
        description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
        pricing:
          prompt: '0.00003'
          completion: '0.00006'
          request: '0'
          image: '0'
        context_length: 8192
        architecture:
          tokenizer: GPT
          instruct_type: chatml
          modality: text->text
          input_modalities:
            - text
          output_modalities:
            - text
        top_provider:
          context_length: 8192
          max_completion_tokens: 4096
          is_moderated: true
        per_request_limits: null
        supported_parameters:
          - temperature
          - top_p
          - max_tokens
        default_parameters: null
        expiration_date: null
    ModelsListResponseData:
      type: array
      items:
        $ref: '#/components/schemas/Model'
      description: List of available models
    ModelsListResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ModelsListResponseData'
      required:
        - data
      description: List of available models
      example:
        data:
          - id: openai/gpt-4
            canonical_slug: openai/gpt-4
            name: GPT-4
            created: 1692901234
            description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
            pricing:
              prompt: '0.00003'
              completion: '0.00006'
              request: '0'
              image: '0'
            context_length: 8192
            architecture:
              tokenizer: GPT
              instruct_type: chatml
              modality: text->text
              input_modalities:
                - text
              output_modalities:
                - text
            top_provider:
              context_length: 8192
              max_completion_tokens: 4096
              is_moderated: true
            per_request_limits: null
            supported_parameters:
              - temperature
              - top_p
              - max_tokens
              - frequency_penalty
              - presence_penalty
            default_parameters: null
            expiration_date: null
    ModelsCountResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            count:
              type: number
              description: Total number of available models
              example: 150
          required:
            - count
          description: Model count data
          example:
            count: 150
      required:
        - data
      description: Model count data
      example:
        data:
          count: 150
    InstructType:
      type: string
      nullable: true
      enum:
        - none
        - airoboros
        - alpaca
        - alpaca-modif
        - chatml
        - claude
        - code-llama
        - gemma
        - llama2
        - llama3
        - mistral
        - nemotron
        - neural
        - openchat
        - phi3
        - rwkv
        - vicuna
        - zephyr
        - deepseek-r1
        - deepseek-v3.1
        - qwq
        - qwen3
      description: Instruction format type
    EndpointStatus:
      type: integer
      enum:
        - 0
        - -1
        - -2
        - -3
        - -5
        - -10
      example: 0
    PercentileStats:
      type: object
      nullable: true
      properties:
        p50:
          type: number
          description: Median (50th percentile)
          example: 25.5
        p75:
          type: number
          description: 75th percentile
          example: 35.2
        p90:
          type: number
          description: 90th percentile
          example: 48.7
        p99:
          type: number
          description: 99th percentile
          example: 85.3
      required:
        - p50
        - p75
        - p90
        - p99
      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.
    PublicEndpoint:
      type: object
      properties:
        name:
          type: string
        model_id:
          type: string
          description: The unique identifier for the model (permaslug)
          example: openai/gpt-4
        model_name:
          type: string
        context_length:
          type: number
        pricing:
          type: object
          properties:
            prompt:
              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
            request:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            image:
              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
            image_output:
              allOf:
                - $ref: '#/components/schemas/BigNumberUnion'
                - description: A number or string value representing a large number
            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
            input_audio_cache:
              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
            internal_reasoning:
              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
            discount:
              type: number
          required:
            - prompt
            - completion
          additionalProperties: false
        provider_name:
          $ref: '#/components/schemas/ProviderName'
        tag:
          type: string
        quantization:
          allOf:
            - $ref: '#/components/schemas/Quantization'
            - nullable: true
        max_completion_tokens:
          type: number
          nullable: true
        max_prompt_tokens:
          type: number
          nullable: true
        supported_parameters:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
        status:
          $ref: '#/components/schemas/EndpointStatus'
        uptime_last_30m:
          type: number
          nullable: true
        supports_implicit_caching:
          type: boolean
        latency_last_30m:
          $ref: '#/components/schemas/PercentileStats'
        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.
      required:
        - name
        - model_id
        - model_name
        - context_length
        - pricing
        - provider_name
        - tag
        - quantization
        - max_completion_tokens
        - max_prompt_tokens
        - supported_parameters
        - uptime_last_30m
        - supports_implicit_caching
        - latency_last_30m
        - throughput_last_30m
      description: Information about a specific model endpoint
      example:
        name: 'OpenAI: GPT-4'
        model_id: openai/gpt-4
        model_name: GPT-4
        context_length: 8192
        pricing:
          prompt: '0.00003'
          completion: '0.00006'
          request: '0'
          image: '0'
        provider_name: OpenAI
        tag: openai
        quantization: fp16
        max_completion_tokens: 4096
        max_prompt_tokens: 8192
        supported_parameters:
          - temperature
          - top_p
          - max_tokens
        status: 0
        uptime_last_30m: 99.5
        supports_implicit_caching: true
        latency_last_30m:
          p50: 0.25
          p75: 0.35
          p90: 0.48
          p99: 0.85
        throughput_last_30m:
          p50: 45.2
          p75: 38.5
          p90: 28.3
          p99: 15.1
    ListEndpointsResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the model
          example: openai/gpt-4
        name:
          type: string
          description: Display name of the model
          example: GPT-4
        created:
          type: number
          description: Unix timestamp of when the model was created
          example: 1692901234
        description:
          type: string
          description: Description of the model
          example: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
        architecture:
          allOf:
            - $ref: '#/components/schemas/ModelArchitecture'
            - properties:
                tokenizer:
                  allOf:
                    - $ref: '#/components/schemas/ModelGroup'
                    - nullable: true
                instruct_type:
                  $ref: '#/components/schemas/InstructType'
                modality:
                  type: string
                  nullable: true
                  description: Primary modality of the model
                  example: text
                input_modalities:
                  type: array
                  items:
                    $ref: '#/components/schemas/InputModality'
                  description: Supported input modalities
                output_modalities:
                  type: array
                  items:
                    $ref: '#/components/schemas/OutputModality'
                  description: Supported output modalities
              required:
                - tokenizer
                - instruct_type
                - modality
                - input_modalities
                - output_modalities
              example:
                tokenizer: GPT
                instruct_type: chatml
                modality: text
        endpoints:
          type: array
          items:
            $ref: '#/components/schemas/PublicEndpoint'
          description: List of available endpoints for this model
      required:
        - id
        - name
        - created
        - description
        - architecture
        - endpoints
      description: List of available endpoints for a model
      example:
        id: openai/gpt-4
        name: GPT-4
        created: 1692901234
        description: GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.
        architecture:
          tokenizer: GPT
          instruct_type: chatml
          modality: text->text
          input_modalities:
            - text
          output_modalities:
            - text
        endpoints:
          - name: 'OpenAI: GPT-4'
            model_name: GPT-4
            context_length: 8192
            pricing:
              prompt: '0.00003'
              completion: '0.00006'
              request: '0'
              image: '0'
            provider_name: OpenAI
            tag: openai
            quantization: fp16
            max_completion_tokens: 4096
            max_prompt_tokens: 8192
            supported_parameters:
              - temperature
              - top_p
              - max_tokens
              - frequency_penalty
              - presence_penalty
            status: default
            uptime_last_30m: 99.5
            supports_implicit_caching: true
            latency_last_30m:
              p50: 0.25
              p75: 0.35
              p90: 0.48
              p99: 0.85
            throughput_last_30m:
              p50: 45.2
              p75: 38.5
              p90: 28.3
              p99: 15.1
    __schema0:
      anyOf:
        - type: object
          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.
              $ref: '#/components/schemas/__schema1'
            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.
              $ref: '#/components/schemas/__schema1'
            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.
              $ref: '#/components/schemas/__schema3'
            zdr:
              anyOf:
                - type: boolean
                - type: 'null'
            enforce_distillable_text:
              anyOf:
                - type: boolean
                - type: 'null'
            order:
              description: >-
                An ordered list of provider slugs. The router will attempt to use the first provider in the subset of
                this list that supports your requested model, and fall back to the next if it is unavailable. If no
                providers are available, the request will fail with an error message.
              $ref: '#/components/schemas/__schema4'
            only:
              description: >-
                List of provider slugs to allow. If provided, this list is merged with your account-wide allowed
                provider settings for this request.
              $ref: '#/components/schemas/__schema4'
            ignore:
              description: >-
                List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored
                provider settings for this request.
              $ref: '#/components/schemas/__schema4'
            quantizations:
              description: A list of quantization levels to filter the provider by.
              $ref: '#/components/schemas/__schema8'
            sort:
              description: >-
                The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing
                is performed.
              $ref: '#/components/schemas/__schema9'
            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.
              $ref: '#/components/schemas/__schema10'
            preferred_min_throughput:
              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.
              $ref: '#/components/schemas/__schema15'
            preferred_max_latency:
              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.
              $ref: '#/components/schemas/__schema15'
          additionalProperties: false
        - type: 'null'
    __schema1:
      anyOf:
        - type: boolean
        - type: 'null'
    __schema3:
      anyOf:
        - type: string
          enum:
            - deny
            - allow
        - type: 'null'
    __schema4:
      anyOf:
        - $ref: '#/components/schemas/__schema5'
        - type: 'null'
    __schema5:
      type: array
      items:
        anyOf:
          - type: string
            enum:
              - AI21
              - AionLabs
              - Alibaba
              - Ambient
              - Amazon Bedrock
              - Amazon Nova
              - Anthropic
              - Arcee AI
              - AtlasCloud
              - Avian
              - Azure
              - BaseTen
              - BytePlus
              - Black Forest Labs
              - Cerebras
              - Chutes
              - Cirrascale
              - Clarifai
              - Cloudflare
              - Cohere
              - Crusoe
              - DeepInfra
              - DeepSeek
              - Featherless
              - Fireworks
              - Friendli
              - GMICloud
              - Google
              - Google AI Studio
              - Groq
              - Hyperbolic
              - Inception
              - Inceptron
              - InferenceNet
              - Infermatic
              - Inflection
              - Liquid
              - Mara
              - Mancer 2
              - Minimax
              - ModelRun
              - Mistral
              - Modular
              - Moonshot AI
              - Morph
              - NCompass
              - Nebius
              - NextBit
              - Novita
              - Nvidia
              - OpenAI
              - OpenInference
              - Parasail
              - Perplexity
              - Phala
              - Relace
              - SambaNova
              - Seed
              - SiliconFlow
              - Sourceful
              - StepFun
              - Stealth
              - StreamLake
              - Switchpoint
              - Together
              - Upstage
              - Venice
              - WandB
              - Xiaomi
              - xAI
              - Z.AI
              - FakeProvider
          - type: string
    __schema8:
      anyOf:
        - type: array
          items:
            type: string
            enum:
              - int4
              - int8
              - fp4
              - fp6
              - fp8
              - fp16
              - bf16
              - fp32
              - unknown
        - type: 'null'
    __schema9:
      anyOf:
        - $ref: '#/components/schemas/ProviderSortUnion'
        - type: 'null'
    __schema10:
      type: object
      properties:
        prompt:
          anyOf:
            - $ref: '#/components/schemas/__schema11'
            - $ref: '#/components/schemas/ModelName'
            - $ref: '#/components/schemas/__schema13'
        completion:
          anyOf:
            - $ref: '#/components/schemas/__schema11'
            - $ref: '#/components/schemas/ModelName'
            - $ref: '#/components/schemas/__schema13'
        image:
          $ref: '#/components/schemas/__schema14'
        audio:
          $ref: '#/components/schemas/__schema14'
        request:
          $ref: '#/components/schemas/__schema14'
    __schema11:
      type: number
    __schema13: {}
    __schema14:
      anyOf:
        - $ref: '#/components/schemas/__schema11'
        - $ref: '#/components/schemas/ModelName'
        - $ref: '#/components/schemas/__schema13'
    __schema15:
      anyOf:
        - anyOf:
            - type: number
            - type: object
              properties:
                p50:
                  anyOf:
                    - type: number
                    - type: 'null'
                p75:
                  anyOf:
                    - type: number
                    - type: 'null'
                p90:
                  anyOf:
                    - type: number
                    - type: 'null'
                p99:
                  anyOf:
                    - type: number
                    - type: 'null'
        - type: 'null'
    __schema17:
      type: array
      items:
        oneOf:
          - type: object
            properties:
              id:
                type: string
                const: auto-router
              enabled:
                type: boolean
              allowed_models:
                type: array
                items:
                  type: string
            required:
              - id
          - type: object
            properties:
              id:
                type: string
                const: moderation
            required:
              - id
          - type: object
            properties:
              id:
                type: string
                const: web
              enabled:
                type: boolean
              max_results:
                type: number
              search_prompt:
                type: string
              engine:
                type: string
                enum:
                  - native
                  - exa
            required:
              - id
          - type: object
            properties:
              id:
                type: string
                const: file-parser
              enabled:
                type: boolean
              pdf:
                type: object
                properties:
                  engine:
                    type: string
                    enum:
                      - mistral-ocr
                      - pdf-text
                      - native
            required:
              - id
          - type: object
            properties:
              id:
                type: string
                const: response-healing
              enabled:
                type: boolean
            required:
              - id
        type: object
    __schema18:
      type: string
      maxLength: 128
    __schema19:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              const: reasoning.summary
            summary:
              type: string
            id:
              $ref: '#/components/schemas/__schema20'
            format:
              $ref: '#/components/schemas/__schema21'
            index:
              $ref: '#/components/schemas/__schema11'
          required:
            - type
            - summary
        - type: object
          properties:
            type:
              type: string
              const: reasoning.encrypted
            data:
              type: string
            id:
              $ref: '#/components/schemas/__schema20'
            format:
              $ref: '#/components/schemas/__schema21'
            index:
              $ref: '#/components/schemas/__schema11'
          required:
            - type
            - data
        - type: object
          properties:
            type:
              type: string
              const: reasoning.text
            text:
              anyOf:
                - type: string
                - type: 'null'
            signature:
              anyOf:
                - type: string
                - type: 'null'
            id:
              $ref: '#/components/schemas/__schema20'
            format:
              $ref: '#/components/schemas/__schema21'
            index:
              $ref: '#/components/schemas/__schema11'
          required:
            - type
      type: object
    __schema20:
      anyOf:
        - type: string
        - type: 'null'
    __schema21:
      anyOf:
        - type: string
          enum:
            - unknown
            - openai-responses-v1
            - azure-openai-responses-v1
            - xai-responses-v1
            - anthropic-claude-v1
            - google-gemini-v1
        - type: 'null'
    __schema25:
      anyOf:
        - $ref: '#/components/schemas/ChatCompletionFinishReason'
        - type: 'null'
    ModelName:
      type: string
    ChatMessageContentItemText:
      type: object
      properties:
        type:
          type: string
          const: text
        text:
          type: string
        cache_control:
          $ref: '#/components/schemas/ChatMessageContentItemCacheControl'
      required:
        - type
        - text
    ChatMessageContentItemImage:
      type: object
      properties:
        type:
          type: string
          const: image_url
        image_url:
          type: object
          properties:
            url:
              type: string
            detail:
              type: string
              enum:
                - auto
                - low
                - high
          required:
            - url
      required:
        - type
        - image_url
    ChatMessageContentItemAudio:
      type: object
      properties:
        type:
          type: string
          const: input_audio
        input_audio:
          type: object
          properties:
            data:
              type: string
            format:
              type: string
          required:
            - data
            - format
      required:
        - type
        - input_audio
    ChatMessageContentItemVideo:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              const: input_video
            video_url:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
          required:
            - type
            - video_url
        - type: object
          properties:
            type:
              type: string
              const: video_url
            video_url:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
          required:
            - type
            - video_url
      type: object
    ChatMessageContentItem:
      oneOf:
        - $ref: '#/components/schemas/ChatMessageContentItemText'
        - $ref: '#/components/schemas/ChatMessageContentItemImage'
        - $ref: '#/components/schemas/ChatMessageContentItemAudio'
        - $ref: '#/components/schemas/ChatMessageContentItemVideo'
      type: object
      discriminator:
        propertyName: type
        mapping:
          text: '#/components/schemas/ChatMessageContentItemText'
          image_url: '#/components/schemas/ChatMessageContentItemImage'
          input_audio: '#/components/schemas/ChatMessageContentItemAudio'
          input_video: '#/components/schemas/ChatMessageContentItemVideo'
          video_url: '#/components/schemas/ChatMessageContentItemVideo'
    ChatMessageToolCall:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          const: function
        function:
          type: object
          properties:
            name:
              type: string
            arguments:
              type: string
          required:
            - name
            - arguments
      required:
        - id
        - type
        - function
    ChatMessageTokenLogprob:
      type: object
      properties:
        token:
          type: string
        logprob:
          type: number
        bytes:
          anyOf:
            - type: array
              items:
                type: number
            - type: 'null'
        top_logprobs:
          type: array
          items:
            type: object
            properties:
              token:
                type: string
              logprob:
                type: number
              bytes:
                anyOf:
                  - type: array
                    items:
                      type: number
                  - type: 'null'
            required:
              - token
              - logprob
              - bytes
      required:
        - token
        - logprob
        - bytes
        - top_logprobs
    ChatMessageTokenLogprobs:
      type: object
      properties:
        content:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageTokenLogprob'
            - type: 'null'
        refusal:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageTokenLogprob'
            - type: 'null'
      required:
        - content
        - refusal
    ChatGenerationTokenUsage:
      type: object
      properties:
        completion_tokens:
          type: number
        prompt_tokens:
          type: number
        total_tokens:
          type: number
        completion_tokens_details:
          anyOf:
            - type: object
              properties:
                reasoning_tokens:
                  anyOf:
                    - type: number
                    - type: 'null'
                audio_tokens:
                  anyOf:
                    - type: number
                    - type: 'null'
                accepted_prediction_tokens:
                  anyOf:
                    - type: number
                    - type: 'null'
                rejected_prediction_tokens:
                  anyOf:
                    - type: number
                    - type: 'null'
            - type: 'null'
        prompt_tokens_details:
          anyOf:
            - type: object
              properties:
                cached_tokens:
                  type: number
                cache_write_tokens:
                  type: number
                audio_tokens:
                  type: number
                video_tokens:
                  type: number
            - type: 'null'
      required:
        - completion_tokens
        - prompt_tokens
        - total_tokens
    ChatCompletionFinishReason:
      type: string
      enum:
        - tool_calls
        - stop
        - length
        - content_filter
        - error
    JSONSchemaConfig:
      type: object
      properties:
        name:
          type: string
          maxLength: 64
        description:
          type: string
        schema:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        strict:
          anyOf:
            - type: boolean
            - type: 'null'
      required:
        - name
    ResponseFormatJSONSchema:
      type: object
      properties:
        type:
          type: string
          const: json_schema
        json_schema:
          $ref: '#/components/schemas/JSONSchemaConfig'
      required:
        - type
        - json_schema
    ResponseFormatTextGrammar:
      type: object
      properties:
        type:
          type: string
          const: grammar
        grammar:
          type: string
      required:
        - type
        - grammar
    ChatMessageContentItemCacheControl:
      type: object
      properties:
        type:
          type: string
          const: ephemeral
        ttl:
          type: string
          enum:
            - 5m
            - 1h
      required:
        - type
    SystemMessage:
      type: object
      properties:
        role:
          type: string
          const: system
        content:
          anyOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageContentItemText'
        name:
          type: string
      required:
        - role
        - content
    UserMessage:
      type: object
      properties:
        role:
          type: string
          const: user
        content:
          anyOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageContentItem'
        name:
          type: string
      required:
        - role
        - content
    DeveloperMessage:
      type: object
      properties:
        role:
          type: string
          const: developer
        content:
          anyOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageContentItemText'
        name:
          type: string
      required:
        - role
        - content
    AssistantMessage:
      type: object
      properties:
        role:
          type: string
          const: assistant
        content:
          anyOf:
            - anyOf:
                - type: string
                - type: array
                  items:
                    $ref: '#/components/schemas/ChatMessageContentItem'
            - type: 'null'
        name:
          type: string
        tool_calls:
          type: array
          items:
            $ref: '#/components/schemas/ChatMessageToolCall'
        refusal:
          anyOf:
            - type: string
            - type: 'null'
        reasoning:
          anyOf:
            - type: string
            - type: 'null'
        reasoning_details:
          type: array
          items:
            $ref: '#/components/schemas/__schema19'
        images:
          type: array
          items:
            type: object
            properties:
              image_url:
                type: object
                properties:
                  url:
                    type: string
                required:
                  - url
            required:
              - image_url
      required:
        - role
    ToolResponseMessage:
      type: object
      properties:
        role:
          type: string
          const: tool
        content:
          anyOf:
            - type: string
            - type: array
              items:
                $ref: '#/components/schemas/ChatMessageContentItem'
        tool_call_id:
          type: string
      required:
        - role
        - content
        - tool_call_id
    Message:
      oneOf:
        - $ref: '#/components/schemas/SystemMessage'
        - $ref: '#/components/schemas/UserMessage'
        - $ref: '#/components/schemas/DeveloperMessage'
        - $ref: '#/components/schemas/AssistantMessage'
        - $ref: '#/components/schemas/ToolResponseMessage'
      type: object
      discriminator:
        propertyName: role
        mapping:
          system: '#/components/schemas/SystemMessage'
          user: '#/components/schemas/UserMessage'
          developer: '#/components/schemas/DeveloperMessage'
          assistant: '#/components/schemas/AssistantMessage'
          tool: '#/components/schemas/ToolResponseMessage'
    ToolDefinitionJson:
      type: object
      properties:
        type:
          type: string
          const: function
        function:
          type: object
          properties:
            name:
              type: string
              maxLength: 64
            description:
              type: string
            parameters:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
            strict:
              anyOf:
                - type: boolean
                - type: 'null'
          required:
            - name
      required:
        - type
        - function
    NamedToolChoice:
      type: object
      properties:
        type:
          type: string
          const: function
        function:
          type: object
          properties:
            name:
              type: string
          required:
            - name
      required:
        - type
        - function
    ToolChoiceOption:
      anyOf:
        - type: string
          const: none
        - type: string
          const: auto
        - type: string
          const: required
        - $ref: '#/components/schemas/NamedToolChoice'
    ChatStreamOptions:
      type: object
      properties:
        include_usage:
          type: boolean
    ChatGenerationParams:
      type: object
      properties:
        provider:
          description: When multiple model providers are available, optionally indicate your routing preference.
          $ref: '#/components/schemas/__schema0'
        plugins:
          description: Plugins you want to enable for this request, including their settings.
          $ref: '#/components/schemas/__schema17'
        route:
          anyOf:
            - type: string
              enum:
                - fallback
                - sort
            - type: 'null'
        user:
          type: string
        session_id:
          description: >-
            A unique identifier for grouping related requests (e.g., a conversation or agent workflow) for
            observability. If provided in both the request body and the x-session-id header, the body value takes
            precedence. Maximum of 128 characters.
          $ref: '#/components/schemas/__schema18'
        messages:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/Message'
        model:
          $ref: '#/components/schemas/ModelName'
        models:
          type: array
          items:
            $ref: '#/components/schemas/ModelName'
        frequency_penalty:
          anyOf:
            - type: number
              minimum: -2
              maximum: 2
            - type: 'null'
        logit_bias:
          anyOf:
            - type: object
              propertyNames:
                type: string
              additionalProperties:
                type: number
            - type: 'null'
        logprobs:
          anyOf:
            - type: boolean
            - type: 'null'
        top_logprobs:
          anyOf:
            - type: number
              minimum: 0
              maximum: 20
            - type: 'null'
        max_completion_tokens:
          anyOf:
            - type: number
              minimum: 1
            - type: 'null'
        max_tokens:
          anyOf:
            - type: number
              minimum: 1
            - type: 'null'
        metadata:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
        presence_penalty:
          anyOf:
            - type: number
              minimum: -2
              maximum: 2
            - type: 'null'
        reasoning:
          type: object
          properties:
            effort:
              anyOf:
                - type: string
                  enum:
                    - xhigh
                    - high
                    - medium
                    - low
                    - minimal
                    - none
                - type: 'null'
            summary:
              anyOf:
                - $ref: '#/components/schemas/ReasoningSummaryVerbosity'
                - type: 'null'
        response_format:
          oneOf:
            - type: object
              properties:
                type:
                  type: string
                  const: text
              required:
                - type
            - type: object
              properties:
                type:
                  type: string
                  const: json_object
              required:
                - type
            - $ref: '#/components/schemas/ResponseFormatJSONSchema'
            - $ref: '#/components/schemas/ResponseFormatTextGrammar'
            - type: object
              properties:
                type:
                  type: string
                  const: python
              required:
                - type
          type: object
        seed:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
        stop:
          anyOf:
            - anyOf:
                - type: string
                - maxItems: 4
                  type: array
                  items:
                    $ref: '#/components/schemas/ModelName'
            - type: 'null'
        stream:
          default: false
          type: boolean
        stream_options:
          anyOf:
            - $ref: '#/components/schemas/ChatStreamOptions'
            - type: 'null'
        temperature:
          default: 1
          anyOf:
            - type: number
              minimum: 0
              maximum: 2
            - type: 'null'
        tool_choice:
          $ref: '#/components/schemas/ToolChoiceOption'
        tools:
          type: array
          items:
            $ref: '#/components/schemas/ToolDefinitionJson'
        top_p:
          default: 1
          anyOf:
            - type: number
              minimum: 0
              maximum: 1
            - type: 'null'
        debug:
          type: object
          properties:
            echo_upstream_body:
              type: boolean
        image_config:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            anyOf:
              - type: string
              - type: number
              - type: array
                items: {}
        modalities:
          type: array
          items:
            type: string
            enum:
              - text
              - image
      required:
        - messages
    ProviderSortUnion:
      anyOf:
        - $ref: '#/components/schemas/ProviderSort'
        - $ref: '#/components/schemas/ProviderSortConfig'
    ChatResponseChoice:
      type: object
      properties:
        finish_reason:
          $ref: '#/components/schemas/__schema25'
        index:
          type: number
        message:
          $ref: '#/components/schemas/AssistantMessage'
        logprobs:
          anyOf:
            - $ref: '#/components/schemas/ChatMessageTokenLogprobs'
            - type: 'null'
      required:
        - finish_reason
        - index
        - message
    ChatStreamingMessageToolCall:
      type: object
      properties:
        index:
          type: number
        id:
          type: string
        type:
          type: string
          const: function
        function:
          type: object
          properties:
            name:
              type: string
            arguments:
              type: string
      required:
        - index
    ChatStreamingMessageChunk:
      type: object
      properties:
        role:
          type: string
          enum:
            - assistant
        content:
          anyOf:
            - type: string
            - type: 'null'
        reasoning:
          anyOf:
            - type: string
            - type: 'null'
        refusal:
          anyOf:
            - type: string
            - type: 'null'
        tool_calls:
          type: array
          items:
            $ref: '#/components/schemas/ChatStreamingMessageToolCall'
        reasoning_details:
          type: array
          items:
            $ref: '#/components/schemas/__schema19'
    ChatStreamingChoice:
      type: object
      properties:
        delta:
          $ref: '#/components/schemas/ChatStreamingMessageChunk'
        finish_reason:
          $ref: '#/components/schemas/__schema25'
        index:
          type: number
        logprobs:
          anyOf:
            - $ref: '#/components/schemas/ChatMessageTokenLogprobs'
            - type: 'null'
      required:
        - delta
        - finish_reason
        - index
    ChatError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              anyOf:
                - anyOf:
                    - type: string
                    - type: number
                - type: 'null'
            message:
              type: string
            param:
              anyOf:
                - type: string
                - type: 'null'
            type:
              anyOf:
                - type: string
                - type: 'null'
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
    ChatResponse:
      type: object
      properties:
        id:
          type: string
        choices:
          type: array
          items:
            $ref: '#/components/schemas/ChatResponseChoice'
        created:
          type: number
        model:
          type: string
        object:
          type: string
          const: chat.completion
        system_fingerprint:
          anyOf:
            - type: string
            - type: 'null'
        usage:
          $ref: '#/components/schemas/ChatGenerationTokenUsage'
      required:
        - id
        - choices
        - created
        - model
        - object
      additionalProperties: false
    ChatStreamingResponseChunk:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            choices:
              type: array
              items:
                $ref: '#/components/schemas/ChatStreamingChoice'
            created:
              type: number
            model:
              type: string
            object:
              type: string
              const: chat.completion.chunk
            system_fingerprint:
              anyOf:
                - type: string
                - type: 'null'
            error:
              type: object
              properties:
                message:
                  type: string
                code:
                  type: number
              required:
                - message
                - code
              additionalProperties: false
            usage:
              $ref: '#/components/schemas/ChatGenerationTokenUsage'
          required:
            - id
            - choices
            - created
            - model
            - object
          additionalProperties: false
      required:
        - data
      additionalProperties: false
  parameters: {}
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: API key as bearer token in Authorization header
    bearer:
      type: http
      scheme: bearer
      description: API key as bearer token in Authorization header
paths:
  /responses:
    post:
      x-speakeasy-name-override: send
      x-speakeasy-stream-request-field: stream
      tags:
        - beta.responses
      summary: Create a response
      description: Creates a streaming or non-streaming response using OpenResponses API format
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenResponsesRequest'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenResponsesNonStreamingResponse'
            text/event-stream:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OpenResponsesStreamEvent'
                required:
                  - data
              x-speakeasy-sse-sentinel: '[DONE]'
        '400':
          description: Bad Request - Invalid request parameters or malformed input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '402':
          description: Payment Required - Insufficient credits or quota to complete request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
        '404':
          description: Not Found - Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '408':
          description: Request Timeout - Operation exceeded time limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestTimeoutResponse'
        '413':
          description: Payload Too Large - Request payload exceeds size limits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeResponse'
        '422':
          description: Unprocessable Entity - Semantic validation failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
        '502':
          description: Bad Gateway - Provider/upstream API failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        '503':
          description: Service Unavailable - Service temporarily unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableResponse'
        '524':
          description: Infrastructure Timeout - Request timed out at our edge network
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
        '529':
          description: Provider Overloaded - Provider is temporarily overloaded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderOverloadedResponse'
      operationId: createResponses
  /messages:
    post:
      x-speakeasy-ignore: true
      x-speakeasy-name-override: create
      x-speakeasy-stream-request-field: stream
      tags:
        - Anthropic Messages
      summary: Create a message
      description: >-
        Creates a message using the Anthropic Messages API format. Supports text, images, PDFs, tools, and extended
        thinking.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnthropicMessagesRequest'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnthropicMessagesResponse'
            text/event-stream:
              schema:
                type: object
                properties:
                  event:
                    type: string
                  data:
                    $ref: '#/components/schemas/AnthropicMessagesStreamEvent'
                required:
                  - event
                  - data
              x-speakeasy-sse-sentinel: '[DONE]'
        '400':
          description: Invalid request error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '403':
          description: Permission denied error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '404':
          description: Not found error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '429':
          description: Rate limit error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '500':
          description: API error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '503':
          description: Overloaded error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
        '529':
          description: Overloaded error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - error
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                required:
                  - type
                  - error
      operationId: createMessages
  /activity:
    get:
      tags:
        - Analytics
      operationId: getUserActivity
      summary: Get user activity grouped by endpoint
      description: >-
        Returns user activity data grouped by endpoint for the last 30 (completed) UTC days. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
            example: '2025-08-24'
          required: false
          description: Filter by a single UTC date in the last 30 days (YYYY-MM-DD format).
          name: date
          in: query
      responses:
        '200':
          description: Returns user activity data grouped by endpoint
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ActivityItem'
                    description: List of activity items
                required:
                  - data
                example:
                  data:
                    - date: '2025-08-24'
                      model: openai/gpt-4.1
                      model_permaslug: openai/gpt-4.1-2025-04-14
                      endpoint_id: 550e8400-e29b-41d4-a716-446655440000
                      provider_name: OpenAI
                      usage: 0.015
                      byok_usage_inference: 0.012
                      requests: 5
                      prompt_tokens: 50
                      completion_tokens: 125
                      reasoning_tokens: 25
        '400':
          description: Bad Request - Invalid date format or date range
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '403':
          description: Forbidden - Only management keys can fetch activity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /credits:
    get:
      x-speakeasy-name-override: getCredits
      tags:
        - Credits
      summary: Get remaining credits
      operationId: getCredits
      description: >-
        Get total credits purchased and used for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      responses:
        '200':
          description: Returns the total credits purchased and used
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      total_credits:
                        type: number
                        description: Total credits purchased
                        example: 100.5
                      total_usage:
                        type: number
                        description: Total credits used
                        example: 25.75
                    required:
                      - total_credits
                      - total_usage
                    example:
                      total_credits: 100.5
                      total_usage: 25.75
                required:
                  - data
                description: Total credits purchased and used
                example:
                  data:
                    total_credits: 100.5
                    total_usage: 25.75
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '403':
          description: Forbidden - Only management keys can fetch credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /credits/coinbase:
    post:
      security:
        - bearer: []
      x-speakeasy-name-override: createCoinbaseCharge
      tags:
        - Credits
      summary: Create a Coinbase charge for crypto payment
      operationId: createCoinbaseCharge
      description: Create a Coinbase charge for crypto payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChargeRequest'
        required: true
      responses:
        '200':
          description: Returns the calldata to fulfill the transaction
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      created_at:
                        type: string
                      expires_at:
                        type: string
                      web3_data:
                        type: object
                        properties:
                          transfer_intent:
                            type: object
                            properties:
                              call_data:
                                type: object
                                properties:
                                  deadline:
                                    type: string
                                  fee_amount:
                                    type: string
                                  id:
                                    type: string
                                  operator:
                                    type: string
                                  prefix:
                                    type: string
                                  recipient:
                                    type: string
                                  recipient_amount:
                                    type: string
                                  recipient_currency:
                                    type: string
                                  refund_destination:
                                    type: string
                                  signature:
                                    type: string
                                required:
                                  - deadline
                                  - fee_amount
                                  - id
                                  - operator
                                  - prefix
                                  - recipient
                                  - recipient_amount
                                  - recipient_currency
                                  - refund_destination
                                  - signature
                              metadata:
                                type: object
                                properties:
                                  chain_id:
                                    type: number
                                  contract_address:
                                    type: string
                                  sender:
                                    type: string
                                required:
                                  - chain_id
                                  - contract_address
                                  - sender
                            required:
                              - call_data
                              - metadata
                        required:
                          - transfer_intent
                    required:
                      - id
                      - created_at
                      - expires_at
                      - web3_data
                required:
                  - data
        '400':
          description: Bad Request - Invalid credit amount or request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /embeddings:
    post:
      x-speakeasy-name-override: generate
      tags:
        - Embeddings
      summary: Submit an embedding request
      description: Submits an embedding request to the embeddings router
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  anyOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                    - type: array
                      items:
                        type: number
                    - type: array
                      items:
                        type: array
                        items:
                          type: number
                    - type: array
                      items:
                        type: object
                        properties:
                          content:
                            type: array
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - text
                                    text:
                                      type: string
                                  required:
                                    - type
                                    - text
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - image_url
                                    image_url:
                                      type: object
                                      properties:
                                        url:
                                          type: string
                                      required:
                                        - url
                                  required:
                                    - type
                                    - image_url
                        required:
                          - content
                model:
                  type: string
                encoding_format:
                  type: string
                  enum:
                    - float
                    - base64
                dimensions:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                user:
                  type: string
                provider:
                  $ref: '#/components/schemas/ProviderPreferences'
                input_type:
                  type: string
              required:
                - input
                - model
        required: true
      responses:
        '200':
          description: Embedding response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - list
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                          enum:
                            - embedding
                        embedding:
                          anyOf:
                            - type: array
                              items:
                                type: number
                            - type: string
                        index:
                          type: number
                      required:
                        - object
                        - embedding
                  model:
                    type: string
                  usage:
                    type: object
                    properties:
                      prompt_tokens:
                        type: number
                      total_tokens:
                        type: number
                      cost:
                        type: number
                    required:
                      - prompt_tokens
                      - total_tokens
                required:
                  - object
                  - data
                  - model
            text/event-stream:
              schema:
                type: string
                description: Not used for embeddings - embeddings do not support streaming
              x-speakeasy-sse-sentinel: '[DONE]'
        '400':
          description: Bad Request - Invalid request parameters or malformed input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '402':
          description: Payment Required - Insufficient credits or quota to complete request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
        '404':
          description: Not Found - Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
        '502':
          description: Bad Gateway - Provider/upstream API failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        '503':
          description: Service Unavailable - Service temporarily unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableResponse'
        '524':
          description: Cloudflare Timeout - Provider request timed out at CDN edge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
        '529':
          description: Provider Overloaded - Provider is temporarily overloaded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderOverloadedResponse'
      operationId: createEmbeddings
  /embeddings/models:
    get:
      tags:
        - Embeddings
      x-speakeasy-name-override: listModels
      summary: List all embeddings models
      description: Returns a list of all available embeddings models and their properties
      responses:
        '200':
          description: Returns a list of embeddings models
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: listEmbeddingsModels
  /generation:
    get:
      tags:
        - Generations
      summary: Get request & usage metadata for a generation
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: id
          in: query
      responses:
        '200':
          description: Returns the request metadata for this generation
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Unique identifier for the generation
                        example: gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG
                      upstream_id:
                        type: string
                        nullable: true
                        description: Upstream provider's identifier for this generation
                        example: chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946
                      total_cost:
                        type: number
                        description: Total cost of the generation in USD
                        example: 0.0015
                      cache_discount:
                        type: number
                        nullable: true
                        description: Discount applied due to caching
                        example: 0.0002
                      upstream_inference_cost:
                        type: number
                        nullable: true
                        description: Cost charged by the upstream provider
                        example: 0.0012
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the generation was created
                        example: '2024-07-15T23:33:19.433273+00:00'
                      model:
                        type: string
                        description: Model used for the generation
                        example: sao10k/l3-stheno-8b
                      app_id:
                        type: number
                        nullable: true
                        description: ID of the app that made the request
                        example: 12345
                      streamed:
                        type: boolean
                        nullable: true
                        description: Whether the response was streamed
                        example: true
                      cancelled:
                        type: boolean
                        nullable: true
                        description: Whether the generation was cancelled
                        example: false
                      provider_name:
                        type: string
                        nullable: true
                        description: Name of the provider that served the request
                        example: Infermatic
                      latency:
                        type: number
                        nullable: true
                        description: Total latency in milliseconds
                        example: 1250
                      moderation_latency:
                        type: number
                        nullable: true
                        description: Moderation latency in milliseconds
                        example: 50
                      generation_time:
                        type: number
                        nullable: true
                        description: Time taken for generation in milliseconds
                        example: 1200
                      finish_reason:
                        type: string
                        nullable: true
                        description: Reason the generation finished
                        example: stop
                      tokens_prompt:
                        type: number
                        nullable: true
                        description: Number of tokens in the prompt
                        example: 10
                      tokens_completion:
                        type: number
                        nullable: true
                        description: Number of tokens in the completion
                        example: 25
                      native_tokens_prompt:
                        type: number
                        nullable: true
                        description: Native prompt tokens as reported by provider
                        example: 10
                      native_tokens_completion:
                        type: number
                        nullable: true
                        description: Native completion tokens as reported by provider
                        example: 25
                      native_tokens_completion_images:
                        type: number
                        nullable: true
                        description: Native completion image tokens as reported by provider
                        example: 0
                      native_tokens_reasoning:
                        type: number
                        nullable: true
                        description: Native reasoning tokens as reported by provider
                        example: 5
                      native_tokens_cached:
                        type: number
                        nullable: true
                        description: Native cached tokens as reported by provider
                        example: 3
                      num_media_prompt:
                        type: number
                        nullable: true
                        description: Number of media items in the prompt
                        example: 1
                      num_input_audio_prompt:
                        type: number
                        nullable: true
                        description: Number of audio inputs in the prompt
                        example: 0
                      num_media_completion:
                        type: number
                        nullable: true
                        description: Number of media items in the completion
                        example: 0
                      num_search_results:
                        type: number
                        nullable: true
                        description: Number of search results included
                        example: 5
                      origin:
                        type: string
                        description: Origin URL of the request
                        example: https://openrouter.ai/
                      usage:
                        type: number
                        description: Usage amount in USD
                        example: 0.0015
                      is_byok:
                        type: boolean
                        description: Whether this used bring-your-own-key
                        example: false
                      native_finish_reason:
                        type: string
                        nullable: true
                        description: Native finish reason as reported by provider
                        example: stop
                      external_user:
                        type: string
                        nullable: true
                        description: External user identifier
                        example: user-123
                      api_type:
                        type: string
                        nullable: true
                        enum:
                          - completions
                          - embeddings
                        description: Type of API used for the generation
                      router:
                        type: string
                        nullable: true
                        description: Router used for the request (e.g., openrouter/auto)
                        example: openrouter/auto
                      provider_responses:
                        type: array
                        nullable: true
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            endpoint_id:
                              type: string
                            model_permaslug:
                              type: string
                            provider_name:
                              type: string
                              enum:
                                - AnyScale
                                - Atoma
                                - Cent-ML
                                - CrofAI
                                - Enfer
                                - GoPomelo
                                - HuggingFace
                                - Hyperbolic 2
                                - InoCloud
                                - Kluster
                                - Lambda
                                - Lepton
                                - Lynn 2
                                - Lynn
                                - Mancer
                                - Meta
                                - Modal
                                - Nineteen
                                - OctoAI
                                - Recursal
                                - Reflection
                                - Replicate
                                - SambaNova 2
                                - SF Compute
                                - Targon
                                - Together 2
                                - Ubicloud
                                - 01.AI
                                - AI21
                                - AionLabs
                                - Alibaba
                                - Ambient
                                - Amazon Bedrock
                                - Amazon Nova
                                - Anthropic
                                - Arcee AI
                                - AtlasCloud
                                - Avian
                                - Azure
                                - BaseTen
                                - BytePlus
                                - Black Forest Labs
                                - Cerebras
                                - Chutes
                                - Cirrascale
                                - Clarifai
                                - Cloudflare
                                - Cohere
                                - Crusoe
                                - DeepInfra
                                - DeepSeek
                                - Featherless
                                - Fireworks
                                - Friendli
                                - GMICloud
                                - Google
                                - Google AI Studio
                                - Groq
                                - Hyperbolic
                                - Inception
                                - Inceptron
                                - InferenceNet
                                - Infermatic
                                - Inflection
                                - Liquid
                                - Mara
                                - Mancer 2
                                - Minimax
                                - ModelRun
                                - Mistral
                                - Modular
                                - Moonshot AI
                                - Morph
                                - NCompass
                                - Nebius
                                - NextBit
                                - Novita
                                - Nvidia
                                - OpenAI
                                - OpenInference
                                - Parasail
                                - Perplexity
                                - Phala
                                - Relace
                                - SambaNova
                                - Seed
                                - SiliconFlow
                                - Sourceful
                                - StepFun
                                - Stealth
                                - StreamLake
                                - Switchpoint
                                - Together
                                - Upstage
                                - Venice
                                - WandB
                                - Xiaomi
                                - xAI
                                - Z.AI
                                - FakeProvider
                            status:
                              type: number
                              nullable: true
                            latency:
                              type: number
                            is_byok:
                              type: boolean
                          required:
                            - status
                        description: List of provider responses for this generation, including fallback attempts
                    required:
                      - id
                      - upstream_id
                      - total_cost
                      - cache_discount
                      - upstream_inference_cost
                      - created_at
                      - model
                      - app_id
                      - streamed
                      - cancelled
                      - provider_name
                      - latency
                      - moderation_latency
                      - generation_time
                      - finish_reason
                      - tokens_prompt
                      - tokens_completion
                      - native_tokens_prompt
                      - native_tokens_completion
                      - native_tokens_completion_images
                      - native_tokens_reasoning
                      - native_tokens_cached
                      - num_media_prompt
                      - num_input_audio_prompt
                      - num_media_completion
                      - num_search_results
                      - origin
                      - usage
                      - is_byok
                      - native_finish_reason
                      - external_user
                      - api_type
                      - router
                      - provider_responses
                    description: Generation data
                required:
                  - data
                description: Generation response
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '402':
          description: Payment Required - Insufficient credits or quota to complete request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
        '404':
          description: Not Found - Generation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
        '502':
          description: Bad Gateway - Provider/upstream API failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        '524':
          description: Infrastructure Timeout - Request timed out at our edge network
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EdgeNetworkTimeoutResponse'
        '529':
          description: Provider Overloaded - Provider is temporarily overloaded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderOverloadedResponse'
      operationId: getGeneration
  /models/count:
    get:
      tags:
        - Models
      x-speakeasy-name-override: count
      summary: Get total count of available models
      responses:
        '200':
          description: Returns the total count of available models
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelsCountResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: listModelsCount
  /models:
    get:
      tags:
        - Models
      x-speakeasy-name-override: list
      summary: List all models and their properties
      parameters:
        - schema:
            type: string
            enum:
              - programming
              - roleplay
              - marketing
              - marketing/seo
              - technology
              - science
              - translation
              - legal
              - finance
              - health
              - trivia
              - academia
            description: Filter models by use case category
            example: programming
          required: false
          description: Filter models by use case category
          name: category
          in: query
        - schema:
            type: string
          required: false
          name: supported_parameters
          in: query
        - schema:
            type: string
          required: false
          name: use_rss
          in: query
        - schema:
            type: string
          required: false
          name: use_rss_chat_links
          in: query
      responses:
        '200':
          description: Returns a list of models or RSS feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
            application/rss+xml:
              schema:
                type: string
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: getModels
  /models/user:
    get:
      tags:
        - Models
      x-speakeasy-name-override: listForUser
      description: >-
        List models filtered by user provider preferences, [privacy
        settings](https://openrouter.ai/docs/guides/privacy/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/logging#enterprise-eu-in-region-routing).
      summary: List models filtered by user provider preferences, privacy settings, and guardrails
      security:
        - bearer: []
      responses:
        '200':
          description: Returns a list of models filtered by user provider preferences
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelsListResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - No eligible endpoints found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: listModelsUser
  /models/{author}/{slug}/endpoints:
    get:
      tags:
        - Endpoints
      operationId: listEndpoints
      x-speakeasy-name-override: list
      summary: List all endpoints for a model
      parameters:
        - schema:
            type: string
          required: true
          name: author
          in: path
        - schema:
            type: string
          required: true
          name: slug
          in: path
      responses:
        '200':
          description: Returns a list of endpoints
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ListEndpointsResponse'
                required:
                  - data
        '404':
          description: Not Found - Model does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /endpoints/zdr:
    get:
      tags:
        - Endpoints
      x-speakeasy-name-override: listZdrEndpoints
      summary: Preview the impact of ZDR on the available endpoints
      responses:
        '200':
          description: Returns a list of endpoints
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PublicEndpoint'
                required:
                  - data
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: listEndpointsZdr
  /providers:
    get:
      tags:
        - Providers
      x-speakeasy-name-override: list
      summary: List all providers
      operationId: listProviders
      responses:
        '200':
          description: Returns a list of providers
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Display name of the provider
                          example: OpenAI
                        slug:
                          type: string
                          description: URL-friendly identifier for the provider
                          example: openai
                        privacy_policy_url:
                          type: string
                          nullable: true
                          description: URL to the provider's privacy policy
                          example: https://openai.com/privacy
                        terms_of_service_url:
                          type: string
                          nullable: true
                          description: URL to the provider's terms of service
                          example: https://openai.com/terms
                        status_page_url:
                          type: string
                          nullable: true
                          description: URL to the provider's status page
                          example: https://status.openai.com
                      required:
                        - name
                        - slug
                        - privacy_policy_url
                      example:
                        name: OpenAI
                        slug: openai
                        privacy_policy_url: https://openai.com/privacy
                        terms_of_service_url: https://openai.com/terms
                        status_page_url: https://status.openai.com
                required:
                  - data
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /keys:
    get:
      operationId: list
      x-speakeasy-name-override: list
      tags:
        - API Keys
      summary: List API keys
      description: >-
        List all API keys for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      parameters:
        - schema:
            type: string
            description: Whether to include disabled API keys in the response
            example: 'false'
          required: false
          description: Whether to include disabled API keys in the response
          name: include_disabled
          in: query
        - schema:
            type: string
            description: Number of API keys to skip for pagination
            example: '0'
          required: false
          description: Number of API keys to skip for pagination
          name: offset
          in: query
      responses:
        '200':
          description: List of API keys
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        hash:
                          type: string
                          description: Unique hash identifier for the API key
                          example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        name:
                          type: string
                          description: Name of the API key
                          example: My Production Key
                        label:
                          type: string
                          description: Human-readable label for the API key
                          example: sk-or-v1-0e6...1c96
                        disabled:
                          type: boolean
                          description: Whether the API key is disabled
                          example: false
                        limit:
                          type: number
                          nullable: true
                          description: Spending limit for the API key in USD
                          example: 100
                        limit_remaining:
                          type: number
                          nullable: true
                          description: Remaining spending limit in USD
                          example: 74.5
                        limit_reset:
                          type: string
                          nullable: true
                          description: Type of limit reset for the API key
                          example: monthly
                        include_byok_in_limit:
                          type: boolean
                          description: Whether to include external BYOK usage in the credit limit
                          example: false
                        usage:
                          type: number
                          description: Total OpenRouter credit usage (in USD) for the API key
                          example: 25.5
                        usage_daily:
                          type: number
                          description: OpenRouter credit usage (in USD) for the current UTC day
                          example: 25.5
                        usage_weekly:
                          type: number
                          description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                          example: 25.5
                        usage_monthly:
                          type: number
                          description: OpenRouter credit usage (in USD) for the current UTC month
                          example: 25.5
                        byok_usage:
                          type: number
                          description: Total external BYOK usage (in USD) for the API key
                          example: 17.38
                        byok_usage_daily:
                          type: number
                          description: External BYOK usage (in USD) for the current UTC day
                          example: 17.38
                        byok_usage_weekly:
                          type: number
                          description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                          example: 17.38
                        byok_usage_monthly:
                          type: number
                          description: External BYOK usage (in USD) for current UTC month
                          example: 17.38
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the API key was created
                          example: '2025-08-24T10:30:00Z'
                        updated_at:
                          type: string
                          nullable: true
                          description: ISO 8601 timestamp of when the API key was last updated
                          example: '2025-08-24T15:45:00Z'
                        expires_at:
                          type: string
                          nullable: true
                          format: date-time
                          description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                          example: '2027-12-31T23:59:59Z'
                      required:
                        - hash
                        - name
                        - label
                        - disabled
                        - limit
                        - limit_remaining
                        - limit_reset
                        - include_byok_in_limit
                        - usage
                        - usage_daily
                        - usage_weekly
                        - usage_monthly
                        - byok_usage
                        - byok_usage_daily
                        - byok_usage_weekly
                        - byok_usage_monthly
                        - created_at
                        - updated_at
                      example:
                        hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                        name: My Production Key
                        label: sk-or-v1-0e6...1c96
                        disabled: false
                        limit: 100
                        limit_remaining: 74.5
                        limit_reset: monthly
                        include_byok_in_limit: false
                        usage: 25.5
                        usage_daily: 25.5
                        usage_weekly: 25.5
                        usage_monthly: 25.5
                        byok_usage: 17.38
                        byok_usage_daily: 17.38
                        byok_usage_weekly: 17.38
                        byok_usage_monthly: 17.38
                        created_at: '2025-08-24T10:30:00Z'
                        updated_at: '2025-08-24T15:45:00Z'
                        expires_at: '2027-12-31T23:59:59Z'
                    description: List of API keys
                required:
                  - data
                example:
                  data:
                    - hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name: My Production Key
                      label: Production API Key
                      disabled: false
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      include_byok_in_limit: false
                      usage: 25.5
                      usage_daily: 25.5
                      usage_weekly: 25.5
                      usage_monthly: 25.5
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_weekly: 17.38
                      byok_usage_monthly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                      expires_at: '2027-12-31T23:59:59Z'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    post:
      x-speakeasy-name-override: create
      tags:
        - API Keys
      summary: Create a new API key
      description: >-
        Create a new API key for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  description: Name for the new API key
                  example: My New API Key
                limit:
                  type: number
                  nullable: true
                  description: Optional spending limit for the API key in USD
                  example: 50
                limit_reset:
                  type: string
                  nullable: true
                  enum:
                    - daily
                    - weekly
                    - monthly
                  description: >-
                    Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen
                    automatically at midnight UTC, and weeks are Monday through Sunday.
                  example: monthly
                include_byok_in_limit:
                  type: boolean
                  description: Whether to include BYOK usage in the limit
                  example: true
                expires_at:
                  type: string
                  nullable: true
                  format: date-time
                  description: >-
                    Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be
                    rejected
                  example: '2027-12-31T23:59:59Z'
              required:
                - name
              example:
                name: My New API Key
                limit: 50
                limit_reset: monthly
                include_byok_in_limit: true
                expires_at: '2027-12-31T23:59:59Z'
        required: true
      responses:
        '201':
          description: API key created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hash:
                        type: string
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name:
                        type: string
                        description: Name of the API key
                        example: My Production Key
                      label:
                        type: string
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                      disabled:
                        type: boolean
                        description: Whether the API key is disabled
                        example: false
                      limit:
                        type: number
                        nullable: true
                        description: Spending limit for the API key in USD
                        example: 100
                      limit_remaining:
                        type: number
                        nullable: true
                        description: Remaining spending limit in USD
                        example: 74.5
                      limit_reset:
                        type: string
                        nullable: true
                        description: Type of limit reset for the API key
                        example: monthly
                      include_byok_in_limit:
                        type: boolean
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                      usage:
                        type: number
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                      usage_daily:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                      usage_weekly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                      usage_monthly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                      byok_usage:
                        type: number
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                      byok_usage_daily:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                      byok_usage_weekly:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                      byok_usage_monthly:
                        type: number
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                      expires_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                    example:
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name: My Production Key
                      label: sk-or-v1-0e6...1c96
                      disabled: false
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      include_byok_in_limit: false
                      usage: 25.5
                      usage_daily: 25.5
                      usage_weekly: 25.5
                      usage_monthly: 25.5
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_weekly: 17.38
                      byok_usage_monthly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                      expires_at: '2027-12-31T23:59:59Z'
                    description: The created API key information
                  key:
                    type: string
                    description: The actual API key string (only shown once)
                    example: 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
                required:
                  - data
                  - key
                example:
                  data:
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    name: My New API Key
                    label: My New API Key
                    disabled: false
                    limit: 50
                    limit_remaining: 50
                    limit_reset: monthly
                    include_byok_in_limit: true
                    usage: 0
                    usage_daily: 0
                    usage_weekly: 0
                    usage_monthly: 0
                    byok_usage: 0
                    byok_usage_daily: 0
                    byok_usage_weekly: 0
                    byok_usage_monthly: 0
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: null
                    expires_at: '2027-12-31T23:59:59Z'
                  key: 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
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: createKeys
  /keys/{hash}:
    patch:
      x-speakeasy-name-override: update
      tags:
        - API Keys
      summary: Update an API key
      description: Update an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: The hash identifier of the API key to update
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
          required: true
          description: The hash identifier of the API key to update
          name: hash
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: New name for the API key
                  example: Updated API Key Name
                disabled:
                  type: boolean
                  description: Whether to disable the API key
                  example: false
                limit:
                  type: number
                  nullable: true
                  description: New spending limit for the API key in USD
                  example: 75
                limit_reset:
                  type: string
                  nullable: true
                  enum:
                    - daily
                    - weekly
                    - monthly
                  description: >-
                    New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen
                    automatically at midnight UTC, and weeks are Monday through Sunday.
                  example: daily
                include_byok_in_limit:
                  type: boolean
                  description: Whether to include BYOK usage in the limit
                  example: true
              example:
                name: Updated API Key Name
                disabled: false
                limit: 75
                limit_reset: daily
                include_byok_in_limit: true
        required: true
      responses:
        '200':
          description: API key updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hash:
                        type: string
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name:
                        type: string
                        description: Name of the API key
                        example: My Production Key
                      label:
                        type: string
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                      disabled:
                        type: boolean
                        description: Whether the API key is disabled
                        example: false
                      limit:
                        type: number
                        nullable: true
                        description: Spending limit for the API key in USD
                        example: 100
                      limit_remaining:
                        type: number
                        nullable: true
                        description: Remaining spending limit in USD
                        example: 74.5
                      limit_reset:
                        type: string
                        nullable: true
                        description: Type of limit reset for the API key
                        example: monthly
                      include_byok_in_limit:
                        type: boolean
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                      usage:
                        type: number
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                      usage_daily:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                      usage_weekly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                      usage_monthly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                      byok_usage:
                        type: number
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                      byok_usage_daily:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                      byok_usage_weekly:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                      byok_usage_monthly:
                        type: number
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                      expires_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                    example:
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name: My Production Key
                      label: sk-or-v1-0e6...1c96
                      disabled: false
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      include_byok_in_limit: false
                      usage: 25.5
                      usage_daily: 25.5
                      usage_weekly: 25.5
                      usage_monthly: 25.5
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_weekly: 17.38
                      byok_usage_monthly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                      expires_at: '2027-12-31T23:59:59Z'
                    description: The updated API key information
                required:
                  - data
                example:
                  data:
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    name: Updated API Key Name
                    label: Updated API Key Name
                    disabled: false
                    limit: 75
                    limit_remaining: 49.5
                    limit_reset: daily
                    include_byok_in_limit: true
                    usage: 25.5
                    usage_daily: 25.5
                    usage_weekly: 25.5
                    usage_monthly: 25.5
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_weekly: 17.38
                    byok_usage_monthly: 17.38
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: '2025-08-24T16:00:00Z'
                    expires_at: null
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - API key does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: updateKeys
    delete:
      x-speakeasy-name-override: delete
      tags:
        - API Keys
      summary: Delete an API key
      description: Delete an existing API key. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: The hash identifier of the API key to delete
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
          required: true
          description: The hash identifier of the API key to delete
          name: hash
          in: path
      responses:
        '200':
          description: API key deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: boolean
                    const: true
                    description: Confirmation that the API key was deleted
                    example: true
                required:
                  - deleted
                example:
                  deleted: true
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - API key does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: deleteKeys
    get:
      operationId: getKey
      x-speakeasy-name-override: get
      tags:
        - API Keys
      summary: Get a single API key
      description: Get a single API key by hash. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: The hash identifier of the API key to retrieve
            example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
          required: true
          description: The hash identifier of the API key to retrieve
          name: hash
          in: path
      responses:
        '200':
          description: API key details
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      hash:
                        type: string
                        description: Unique hash identifier for the API key
                        example: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name:
                        type: string
                        description: Name of the API key
                        example: My Production Key
                      label:
                        type: string
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                      disabled:
                        type: boolean
                        description: Whether the API key is disabled
                        example: false
                      limit:
                        type: number
                        nullable: true
                        description: Spending limit for the API key in USD
                        example: 100
                      limit_remaining:
                        type: number
                        nullable: true
                        description: Remaining spending limit in USD
                        example: 74.5
                      limit_reset:
                        type: string
                        nullable: true
                        description: Type of limit reset for the API key
                        example: monthly
                      include_byok_in_limit:
                        type: boolean
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                      usage:
                        type: number
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                      usage_daily:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                      usage_weekly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                      usage_monthly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                      byok_usage:
                        type: number
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                      byok_usage_daily:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                      byok_usage_weekly:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                      byok_usage_monthly:
                        type: number
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the API key was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the API key was last updated
                        example: '2025-08-24T15:45:00Z'
                      expires_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                    required:
                      - hash
                      - name
                      - label
                      - disabled
                      - limit
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - created_at
                      - updated_at
                    example:
                      hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                      name: My Production Key
                      label: sk-or-v1-0e6...1c96
                      disabled: false
                      limit: 100
                      limit_remaining: 74.5
                      limit_reset: monthly
                      include_byok_in_limit: false
                      usage: 25.5
                      usage_daily: 25.5
                      usage_weekly: 25.5
                      usage_monthly: 25.5
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_weekly: 17.38
                      byok_usage_monthly: 17.38
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                      expires_at: '2027-12-31T23:59:59Z'
                    description: The API key information
                required:
                  - data
                example:
                  data:
                    hash: f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
                    name: My Production Key
                    label: Production API Key
                    disabled: false
                    limit: 100
                    limit_remaining: 74.5
                    limit_reset: monthly
                    include_byok_in_limit: false
                    usage: 25.5
                    usage_daily: 25.5
                    usage_weekly: 25.5
                    usage_monthly: 25.5
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_weekly: 17.38
                    byok_usage_monthly: 17.38
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: '2025-08-24T15:45:00Z'
                    expires_at: '2027-12-31T23:59:59Z'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - API key does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails:
    get:
      operationId: listGuardrails
      x-speakeasy-name-override: list
      tags:
        - Guardrails
      summary: List guardrails
      description: >-
        List all guardrails for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys)
        required.
      parameters:
        - schema:
            type: string
            description: Number of records to skip for pagination
            example: '0'
          required: false
          description: Number of records to skip for pagination
          name: offset
          in: query
        - schema:
            type: string
            description: Maximum number of records to return (max 100)
            example: '50'
          required: false
          description: Maximum number of records to return (max 100)
          name: limit
          in: query
      responses:
        '200':
          description: List of guardrails
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique identifier for the guardrail
                          example: 550e8400-e29b-41d4-a716-446655440000
                        name:
                          type: string
                          description: Name of the guardrail
                          example: Production Guardrail
                        description:
                          type: string
                          nullable: true
                          description: Description of the guardrail
                          example: Guardrail for production environment
                        limit_usd:
                          type: number
                          nullable: true
                          minimum: 0
                          exclusiveMinimum: true
                          description: Spending limit in USD
                          example: 100
                        reset_interval:
                          type: string
                          nullable: true
                          enum:
                            - daily
                            - weekly
                            - monthly
                          description: Interval at which the limit resets (daily, weekly, monthly)
                          example: monthly
                        allowed_providers:
                          type: array
                          nullable: true
                          items:
                            type: string
                          description: List of allowed provider IDs
                          example:
                            - openai
                            - anthropic
                            - google
                        allowed_models:
                          type: array
                          nullable: true
                          items:
                            type: string
                          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
                        enforce_zdr:
                          type: boolean
                          nullable: true
                          description: Whether to enforce zero data retention
                          example: false
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the guardrail was created
                          example: '2025-08-24T10:30:00Z'
                        updated_at:
                          type: string
                          nullable: true
                          description: ISO 8601 timestamp of when the guardrail was last updated
                          example: '2025-08-24T15:45:00Z'
                      required:
                        - id
                        - name
                        - created_at
                      example:
                        id: 550e8400-e29b-41d4-a716-446655440000
                        name: Production Guardrail
                        description: Guardrail for production environment
                        limit_usd: 100
                        reset_interval: monthly
                        allowed_providers:
                          - openai
                          - anthropic
                          - google
                        allowed_models: null
                        enforce_zdr: false
                        created_at: '2025-08-24T10:30:00Z'
                        updated_at: '2025-08-24T15:45:00Z'
                    description: List of guardrails
                  total_count:
                    type: number
                    description: Total number of guardrails
                    example: 25
                required:
                  - data
                  - total_count
                example:
                  data:
                    - id: 550e8400-e29b-41d4-a716-446655440000
                      name: Production Guardrail
                      description: Guardrail for production environment
                      limit_usd: 100
                      reset_interval: monthly
                      allowed_providers:
                        - openai
                        - anthropic
                        - google
                      allowed_models: null
                      enforce_zdr: false
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                  total_count: 1
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    post:
      operationId: createGuardrail
      x-speakeasy-name-override: create
      tags:
        - Guardrails
      summary: Create a guardrail
      description: >-
        Create a new guardrail for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: Name for the new guardrail
                  example: My New Guardrail
                description:
                  type: string
                  nullable: true
                  maxLength: 1000
                  description: Description of the guardrail
                  example: A guardrail for limiting API usage
                limit_usd:
                  type: number
                  nullable: true
                  minimum: 0
                  exclusiveMinimum: true
                  description: Spending limit in USD
                  example: 50
                reset_interval:
                  type: string
                  nullable: true
                  enum:
                    - daily
                    - weekly
                    - monthly
                  description: Interval at which the limit resets (daily, weekly, monthly)
                  example: monthly
                allowed_providers:
                  type: array
                  nullable: true
                  items:
                    type: string
                  minItems: 1
                  description: List of allowed provider IDs
                  example:
                    - openai
                    - anthropic
                    - deepseek
                allowed_models:
                  type: array
                  nullable: true
                  items:
                    type: string
                  minItems: 1
                  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
                enforce_zdr:
                  type: boolean
                  nullable: true
                  description: Whether to enforce zero data retention
                  example: false
              required:
                - name
              example:
                name: My New Guardrail
                description: A guardrail for limiting API usage
                limit_usd: 50
                reset_interval: monthly
                allowed_providers:
                  - openai
                  - anthropic
                  - deepseek
                allowed_models: null
                enforce_zdr: false
        required: true
      responses:
        '201':
          description: Guardrail created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Unique identifier for the guardrail
                        example: 550e8400-e29b-41d4-a716-446655440000
                      name:
                        type: string
                        description: Name of the guardrail
                        example: Production Guardrail
                      description:
                        type: string
                        nullable: true
                        description: Description of the guardrail
                        example: Guardrail for production environment
                      limit_usd:
                        type: number
                        nullable: true
                        minimum: 0
                        exclusiveMinimum: true
                        description: Spending limit in USD
                        example: 100
                      reset_interval:
                        type: string
                        nullable: true
                        enum:
                          - daily
                          - weekly
                          - monthly
                        description: Interval at which the limit resets (daily, weekly, monthly)
                        example: monthly
                      allowed_providers:
                        type: array
                        nullable: true
                        items:
                          type: string
                        description: List of allowed provider IDs
                        example:
                          - openai
                          - anthropic
                          - google
                      allowed_models:
                        type: array
                        nullable: true
                        items:
                          type: string
                        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
                      enforce_zdr:
                        type: boolean
                        nullable: true
                        description: Whether to enforce zero data retention
                        example: false
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the guardrail was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the guardrail was last updated
                        example: '2025-08-24T15:45:00Z'
                    required:
                      - id
                      - name
                      - created_at
                    example:
                      id: 550e8400-e29b-41d4-a716-446655440000
                      name: Production Guardrail
                      description: Guardrail for production environment
                      limit_usd: 100
                      reset_interval: monthly
                      allowed_providers:
                        - openai
                        - anthropic
                        - google
                      allowed_models: null
                      enforce_zdr: false
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                    description: The created guardrail
                required:
                  - data
                example:
                  data:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    name: My New Guardrail
                    description: A guardrail for limiting API usage
                    limit_usd: 50
                    reset_interval: monthly
                    allowed_providers:
                      - openai
                      - anthropic
                      - google
                    allowed_models: null
                    enforce_zdr: false
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: null
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/{id}:
    get:
      operationId: getGuardrail
      x-speakeasy-name-override: get
      tags:
        - Guardrails
      summary: Get a guardrail
      description: Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail to retrieve
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail to retrieve
          name: id
          in: path
      responses:
        '200':
          description: Guardrail details
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Unique identifier for the guardrail
                        example: 550e8400-e29b-41d4-a716-446655440000
                      name:
                        type: string
                        description: Name of the guardrail
                        example: Production Guardrail
                      description:
                        type: string
                        nullable: true
                        description: Description of the guardrail
                        example: Guardrail for production environment
                      limit_usd:
                        type: number
                        nullable: true
                        minimum: 0
                        exclusiveMinimum: true
                        description: Spending limit in USD
                        example: 100
                      reset_interval:
                        type: string
                        nullable: true
                        enum:
                          - daily
                          - weekly
                          - monthly
                        description: Interval at which the limit resets (daily, weekly, monthly)
                        example: monthly
                      allowed_providers:
                        type: array
                        nullable: true
                        items:
                          type: string
                        description: List of allowed provider IDs
                        example:
                          - openai
                          - anthropic
                          - google
                      allowed_models:
                        type: array
                        nullable: true
                        items:
                          type: string
                        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
                      enforce_zdr:
                        type: boolean
                        nullable: true
                        description: Whether to enforce zero data retention
                        example: false
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the guardrail was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the guardrail was last updated
                        example: '2025-08-24T15:45:00Z'
                    required:
                      - id
                      - name
                      - created_at
                    example:
                      id: 550e8400-e29b-41d4-a716-446655440000
                      name: Production Guardrail
                      description: Guardrail for production environment
                      limit_usd: 100
                      reset_interval: monthly
                      allowed_providers:
                        - openai
                        - anthropic
                        - google
                      allowed_models: null
                      enforce_zdr: false
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                    description: The guardrail
                required:
                  - data
                example:
                  data:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    name: Production Guardrail
                    description: Guardrail for production environment
                    limit_usd: 100
                    reset_interval: monthly
                    allowed_providers:
                      - openai
                      - anthropic
                      - google
                    allowed_models: null
                    enforce_zdr: false
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: '2025-08-24T15:45:00Z'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - Guardrail does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    patch:
      operationId: updateGuardrail
      x-speakeasy-name-override: update
      tags:
        - Guardrails
      summary: Update a guardrail
      description: Update an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail to update
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail to update
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: New name for the guardrail
                  example: Updated Guardrail Name
                description:
                  type: string
                  nullable: true
                  maxLength: 1000
                  description: New description for the guardrail
                  example: Updated description
                limit_usd:
                  type: number
                  nullable: true
                  minimum: 0
                  exclusiveMinimum: true
                  description: New spending limit in USD
                  example: 75
                reset_interval:
                  type: string
                  nullable: true
                  enum:
                    - daily
                    - weekly
                    - monthly
                  description: Interval at which the limit resets (daily, weekly, monthly)
                  example: monthly
                allowed_providers:
                  type: array
                  nullable: true
                  items:
                    type: string
                  minItems: 1
                  description: New list of allowed provider IDs
                  example:
                    - openai
                    - anthropic
                    - deepseek
                allowed_models:
                  type: array
                  nullable: true
                  items:
                    type: string
                  minItems: 1
                  description: Array of model identifiers (slug or canonical_slug accepted)
                  example:
                    - openai/gpt-5.2
                enforce_zdr:
                  type: boolean
                  nullable: true
                  description: Whether to enforce zero data retention
                  example: true
              example:
                name: Updated Guardrail Name
                description: Updated description
                limit_usd: 75
                reset_interval: weekly
        required: true
      responses:
        '200':
          description: Guardrail updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Unique identifier for the guardrail
                        example: 550e8400-e29b-41d4-a716-446655440000
                      name:
                        type: string
                        description: Name of the guardrail
                        example: Production Guardrail
                      description:
                        type: string
                        nullable: true
                        description: Description of the guardrail
                        example: Guardrail for production environment
                      limit_usd:
                        type: number
                        nullable: true
                        minimum: 0
                        exclusiveMinimum: true
                        description: Spending limit in USD
                        example: 100
                      reset_interval:
                        type: string
                        nullable: true
                        enum:
                          - daily
                          - weekly
                          - monthly
                        description: Interval at which the limit resets (daily, weekly, monthly)
                        example: monthly
                      allowed_providers:
                        type: array
                        nullable: true
                        items:
                          type: string
                        description: List of allowed provider IDs
                        example:
                          - openai
                          - anthropic
                          - google
                      allowed_models:
                        type: array
                        nullable: true
                        items:
                          type: string
                        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
                      enforce_zdr:
                        type: boolean
                        nullable: true
                        description: Whether to enforce zero data retention
                        example: false
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the guardrail was created
                        example: '2025-08-24T10:30:00Z'
                      updated_at:
                        type: string
                        nullable: true
                        description: ISO 8601 timestamp of when the guardrail was last updated
                        example: '2025-08-24T15:45:00Z'
                    required:
                      - id
                      - name
                      - created_at
                    example:
                      id: 550e8400-e29b-41d4-a716-446655440000
                      name: Production Guardrail
                      description: Guardrail for production environment
                      limit_usd: 100
                      reset_interval: monthly
                      allowed_providers:
                        - openai
                        - anthropic
                        - google
                      allowed_models: null
                      enforce_zdr: false
                      created_at: '2025-08-24T10:30:00Z'
                      updated_at: '2025-08-24T15:45:00Z'
                    description: The updated guardrail
                required:
                  - data
                example:
                  data:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    name: Updated Guardrail Name
                    description: Updated description
                    limit_usd: 75
                    reset_interval: weekly
                    allowed_providers:
                      - openai
                    allowed_models: null
                    enforce_zdr: true
                    created_at: '2025-08-24T10:30:00Z'
                    updated_at: '2025-08-24T16:00:00Z'
        '400':
          description: Bad Request - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - Guardrail does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    delete:
      operationId: deleteGuardrail
      x-speakeasy-name-override: delete
      tags:
        - Guardrails
      summary: Delete a guardrail
      description: Delete an existing guardrail. [Management key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail to delete
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail to delete
          name: id
          in: path
      responses:
        '200':
          description: Guardrail deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: boolean
                    const: true
                    description: Confirmation that the guardrail was deleted
                    example: true
                required:
                  - deleted
                example:
                  deleted: true
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Not Found - Guardrail does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/assignments/keys:
    get:
      operationId: listKeyAssignments
      x-speakeasy-name-override: listKeyAssignments
      tags:
        - Guardrails
      summary: List all key assignments
      description: >-
        List all API key guardrail assignments for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: Number of records to skip for pagination
            example: '0'
          required: false
          description: Number of records to skip for pagination
          name: offset
          in: query
        - schema:
            type: string
            description: Maximum number of records to return (max 100)
            example: '50'
          required: false
          description: Maximum number of records to return (max 100)
          name: limit
          in: query
      responses:
        '200':
          description: List of key assignments
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique identifier for the assignment
                          example: 550e8400-e29b-41d4-a716-446655440000
                        key_hash:
                          type: string
                          description: Hash of the assigned API key
                          example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
                        guardrail_id:
                          type: string
                          format: uuid
                          description: ID of the guardrail
                          example: 550e8400-e29b-41d4-a716-446655440001
                        key_name:
                          type: string
                          description: Name of the API key
                          example: Production Key
                        key_label:
                          type: string
                          description: Label of the API key
                          example: prod-key
                        assigned_by:
                          type: string
                          nullable: true
                          description: User ID of who made the assignment
                          example: user_abc123
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the assignment was created
                          example: '2025-08-24T10:30:00Z'
                      required:
                        - id
                        - key_hash
                        - guardrail_id
                        - key_name
                        - key_label
                        - assigned_by
                        - created_at
                    description: List of key assignments
                  total_count:
                    type: number
                    description: Total number of key assignments for this guardrail
                    example: 25
                required:
                  - data
                  - total_count
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/assignments/members:
    get:
      operationId: listMemberAssignments
      x-speakeasy-name-override: listMemberAssignments
      tags:
        - Guardrails
      summary: List all member assignments
      description: >-
        List all organization member guardrail assignments for the authenticated user. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            description: Number of records to skip for pagination
            example: '0'
          required: false
          description: Number of records to skip for pagination
          name: offset
          in: query
        - schema:
            type: string
            description: Maximum number of records to return (max 100)
            example: '50'
          required: false
          description: Maximum number of records to return (max 100)
          name: limit
          in: query
      responses:
        '200':
          description: List of member assignments
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique identifier for the assignment
                          example: 550e8400-e29b-41d4-a716-446655440000
                        user_id:
                          type: string
                          description: Clerk user ID of the assigned member
                          example: user_abc123
                        organization_id:
                          type: string
                          description: Organization ID
                          example: org_xyz789
                        guardrail_id:
                          type: string
                          format: uuid
                          description: ID of the guardrail
                          example: 550e8400-e29b-41d4-a716-446655440001
                        assigned_by:
                          type: string
                          nullable: true
                          description: User ID of who made the assignment
                          example: user_abc123
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the assignment was created
                          example: '2025-08-24T10:30:00Z'
                      required:
                        - id
                        - user_id
                        - organization_id
                        - guardrail_id
                        - assigned_by
                        - created_at
                    description: List of member assignments
                  total_count:
                    type: number
                    description: Total number of member assignments
                    example: 10
                required:
                  - data
                  - total_count
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/{id}/assignments/keys:
    get:
      operationId: listGuardrailKeyAssignments
      x-speakeasy-name-override: listGuardrailKeyAssignments
      tags:
        - Guardrails
      summary: List key assignments for a guardrail
      description: >-
        List all API key assignments for a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
        - schema:
            type: string
            description: Number of records to skip for pagination
            example: '0'
          required: false
          description: Number of records to skip for pagination
          name: offset
          in: query
        - schema:
            type: string
            description: Maximum number of records to return (max 100)
            example: '50'
          required: false
          description: Maximum number of records to return (max 100)
          name: limit
          in: query
      responses:
        '200':
          description: List of key assignments
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique identifier for the assignment
                          example: 550e8400-e29b-41d4-a716-446655440000
                        key_hash:
                          type: string
                          description: Hash of the assigned API key
                          example: c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
                        guardrail_id:
                          type: string
                          format: uuid
                          description: ID of the guardrail
                          example: 550e8400-e29b-41d4-a716-446655440001
                        key_name:
                          type: string
                          description: Name of the API key
                          example: Production Key
                        key_label:
                          type: string
                          description: Label of the API key
                          example: prod-key
                        assigned_by:
                          type: string
                          nullable: true
                          description: User ID of who made the assignment
                          example: user_abc123
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the assignment was created
                          example: '2025-08-24T10:30:00Z'
                      required:
                        - id
                        - key_hash
                        - guardrail_id
                        - key_name
                        - key_label
                        - assigned_by
                        - created_at
                    description: List of key assignments
                  total_count:
                    type: number
                    description: Total number of key assignments for this guardrail
                    example: 25
                required:
                  - data
                  - total_count
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    post:
      operationId: bulkAssignKeysToGuardrail
      x-speakeasy-name-override: bulkAssignKeys
      tags:
        - Guardrails
      summary: Bulk assign keys to a guardrail
      description: >-
        Assign multiple API keys to a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                key_hashes:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 1
                  description: Array of API key hashes to assign to the guardrail
                  example:
                    - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
              required:
                - key_hashes
        required: true
      responses:
        '200':
          description: Assignment result
          content:
            application/json:
              schema:
                type: object
                properties:
                  assigned_count:
                    type: number
                    description: Number of keys successfully assigned
                    example: 3
                required:
                  - assigned_count
        '400':
          description: Bad Request - Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/{id}/assignments/members:
    get:
      operationId: listGuardrailMemberAssignments
      x-speakeasy-name-override: listGuardrailMemberAssignments
      tags:
        - Guardrails
      summary: List member assignments for a guardrail
      description: >-
        List all organization member assignments for a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
        - schema:
            type: string
            description: Number of records to skip for pagination
            example: '0'
          required: false
          description: Number of records to skip for pagination
          name: offset
          in: query
        - schema:
            type: string
            description: Maximum number of records to return (max 100)
            example: '50'
          required: false
          description: Maximum number of records to return (max 100)
          name: limit
          in: query
      responses:
        '200':
          description: List of member assignments
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Unique identifier for the assignment
                          example: 550e8400-e29b-41d4-a716-446655440000
                        user_id:
                          type: string
                          description: Clerk user ID of the assigned member
                          example: user_abc123
                        organization_id:
                          type: string
                          description: Organization ID
                          example: org_xyz789
                        guardrail_id:
                          type: string
                          format: uuid
                          description: ID of the guardrail
                          example: 550e8400-e29b-41d4-a716-446655440001
                        assigned_by:
                          type: string
                          nullable: true
                          description: User ID of who made the assignment
                          example: user_abc123
                        created_at:
                          type: string
                          description: ISO 8601 timestamp of when the assignment was created
                          example: '2025-08-24T10:30:00Z'
                      required:
                        - id
                        - user_id
                        - organization_id
                        - guardrail_id
                        - assigned_by
                        - created_at
                    description: List of member assignments
                  total_count:
                    type: number
                    description: Total number of member assignments
                    example: 10
                required:
                  - data
                  - total_count
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
    post:
      operationId: bulkAssignMembersToGuardrail
      x-speakeasy-name-override: bulkAssignMembers
      tags:
        - Guardrails
      summary: Bulk assign members to a guardrail
      description: >-
        Assign multiple organization members to a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                member_user_ids:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 1
                  description: Array of member user IDs to assign to the guardrail
                  example:
                    - user_abc123
                    - user_def456
              required:
                - member_user_ids
        required: true
      responses:
        '200':
          description: Assignment result
          content:
            application/json:
              schema:
                type: object
                properties:
                  assigned_count:
                    type: number
                    description: Number of members successfully assigned
                    example: 2
                required:
                  - assigned_count
        '400':
          description: Bad Request - Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/{id}/assignments/keys/remove:
    post:
      operationId: bulkUnassignKeysFromGuardrail
      x-speakeasy-name-override: bulkUnassignKeys
      tags:
        - Guardrails
      summary: Bulk unassign keys from a guardrail
      description: >-
        Unassign multiple API keys from a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                key_hashes:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 1
                  description: Array of API key hashes to unassign from the guardrail
                  example:
                    - c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93
              required:
                - key_hashes
        required: true
      responses:
        '200':
          description: Unassignment result
          content:
            application/json:
              schema:
                type: object
                properties:
                  unassigned_count:
                    type: number
                    description: Number of keys successfully unassigned
                    example: 3
                required:
                  - unassigned_count
        '400':
          description: Bad Request - Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /guardrails/{id}/assignments/members/remove:
    post:
      operationId: bulkUnassignMembersFromGuardrail
      x-speakeasy-name-override: bulkUnassignMembers
      tags:
        - Guardrails
      summary: Bulk unassign members from a guardrail
      description: >-
        Unassign multiple organization members from a specific guardrail. [Management
        key](/docs/guides/overview/auth/management-api-keys) required.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The unique identifier of the guardrail
            example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          description: The unique identifier of the guardrail
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                member_user_ids:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 1
                  description: Array of member user IDs to unassign from the guardrail
                  example:
                    - user_abc123
                    - user_def456
              required:
                - member_user_ids
        required: true
      responses:
        '200':
          description: Unassignment result
          content:
            application/json:
              schema:
                type: object
                properties:
                  unassigned_count:
                    type: number
                    description: Number of members successfully unassigned
                    example: 2
                required:
                  - unassigned_count
        '400':
          description: Bad Request - Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Missing or invalid authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Guardrail not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /key:
    get:
      operationId: getCurrentKey
      x-speakeasy-name-override: getCurrentKeyMetadata
      tags:
        - API Keys
      summary: Get current API key
      description: Get information on the API key associated with the current authentication session
      responses:
        '200':
          description: API key details
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      label:
                        type: string
                        description: Human-readable label for the API key
                        example: sk-or-v1-0e6...1c96
                      limit:
                        type: number
                        nullable: true
                        description: Spending limit for the API key in USD
                        example: 100
                      usage:
                        type: number
                        description: Total OpenRouter credit usage (in USD) for the API key
                        example: 25.5
                      usage_daily:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC day
                        example: 25.5
                      usage_weekly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 25.5
                      usage_monthly:
                        type: number
                        description: OpenRouter credit usage (in USD) for the current UTC month
                        example: 25.5
                      byok_usage:
                        type: number
                        description: Total external BYOK usage (in USD) for the API key
                        example: 17.38
                      byok_usage_daily:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC day
                        example: 17.38
                      byok_usage_weekly:
                        type: number
                        description: External BYOK usage (in USD) for the current UTC week (Monday-Sunday)
                        example: 17.38
                      byok_usage_monthly:
                        type: number
                        description: External BYOK usage (in USD) for current UTC month
                        example: 17.38
                      is_free_tier:
                        type: boolean
                        description: Whether this is a free tier API key
                        example: false
                      is_management_key:
                        type: boolean
                        description: Whether this is a management key
                        example: false
                      is_provisioning_key:
                        type: boolean
                        description: Whether this is a management key
                        deprecated: true
                        example: false
                      limit_remaining:
                        type: number
                        nullable: true
                        description: Remaining spending limit in USD
                        example: 74.5
                      limit_reset:
                        type: string
                        nullable: true
                        description: Type of limit reset for the API key
                        example: monthly
                      include_byok_in_limit:
                        type: boolean
                        description: Whether to include external BYOK usage in the credit limit
                        example: false
                      expires_at:
                        type: string
                        nullable: true
                        format: date-time
                        description: ISO 8601 UTC timestamp when the API key expires, or null if no expiration
                        example: '2027-12-31T23:59:59Z'
                      rate_limit:
                        type: object
                        properties:
                          requests:
                            type: number
                            description: Number of requests allowed per interval
                            example: 1000
                          interval:
                            type: string
                            description: Rate limit interval
                            example: 1h
                          note:
                            type: string
                            description: Note about the rate limit
                            example: This field is deprecated and safe to ignore.
                        required:
                          - requests
                          - interval
                          - note
                        description: Legacy rate limit information about a key. Will always return -1.
                        deprecated: true
                        example:
                          requests: 1000
                          interval: 1h
                          note: This field is deprecated and safe to ignore.
                    required:
                      - label
                      - limit
                      - usage
                      - usage_daily
                      - usage_weekly
                      - usage_monthly
                      - byok_usage
                      - byok_usage_daily
                      - byok_usage_weekly
                      - byok_usage_monthly
                      - is_free_tier
                      - is_management_key
                      - is_provisioning_key
                      - limit_remaining
                      - limit_reset
                      - include_byok_in_limit
                      - rate_limit
                    description: Current API key information
                    example:
                      label: sk-or-v1-au7...890
                      limit: 100
                      usage: 25.5
                      usage_daily: 25.5
                      usage_weekly: 25.5
                      usage_monthly: 25.5
                      byok_usage: 17.38
                      byok_usage_daily: 17.38
                      byok_usage_weekly: 17.38
                      byok_usage_monthly: 17.38
                      is_free_tier: false
                      is_management_key: false
                      is_provisioning_key: false
                      limit_remaining: 74.5
                      limit_reset: monthly
                      include_byok_in_limit: false
                      expires_at: '2027-12-31T23:59:59Z'
                      rate_limit:
                        requests: 1000
                        interval: 1h
                        note: This field is deprecated and safe to ignore.
                required:
                  - data
                example:
                  data:
                    label: sk-or-v1-au7...890
                    limit: 100
                    usage: 25.5
                    usage_daily: 25.5
                    usage_weekly: 25.5
                    usage_monthly: 25.5
                    byok_usage: 17.38
                    byok_usage_daily: 17.38
                    byok_usage_weekly: 17.38
                    byok_usage_monthly: 17.38
                    is_free_tier: false
                    is_management_key: false
                    is_provisioning_key: false
                    limit_remaining: 74.5
                    limit_reset: monthly
                    include_byok_in_limit: false
                    expires_at: '2027-12-31T23:59:59Z'
                    rate_limit:
                      requests: 1000
                      interval: 1h
                      note: This field is deprecated and safe to ignore.
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /auth/keys:
    post:
      operationId: exchangeAuthCodeForAPIKey
      tags:
        - OAuth
      summary: Exchange authorization code for API key
      description: Exchange an authorization code from the PKCE flow for a user-controlled API key
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: The authorization code received from the OAuth redirect
                  example: auth_code_abc123def456
                code_verifier:
                  type: string
                  description: The code verifier if code_challenge was used in the authorization request
                  example: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
                code_challenge_method:
                  type: string
                  nullable: true
                  enum:
                    - S256
                    - plain
                  description: The method used to generate the code challenge
                  example: S256
              required:
                - code
              example:
                code: auth_code_abc123def456
                code_verifier: dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
                code_challenge_method: S256
        required: true
      responses:
        '200':
          description: Successfully exchanged code for an API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  key:
                    type: string
                    description: The API key to use for OpenRouter requests
                    example: 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
                  user_id:
                    type: string
                    nullable: true
                    description: User ID associated with the API key
                    example: user_2yOPcMpKoQhcd4bVgSMlELRaIah
                required:
                  - key
                  - user_id
                example:
                  key: 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
                  user_id: user_2yOPcMpKoQhcd4bVgSMlELRaIah
        '400':
          description: Bad Request - Invalid request parameters or malformed input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '403':
          description: Forbidden - Authentication successful but insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
  /auth/keys/code:
    post:
      x-speakeasy-name-override: createAuthCode
      tags:
        - OAuth
      summary: Create authorization code
      description: Create an authorization code for the PKCE flow to generate a user-controlled API key
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                callback_url:
                  type: string
                  format: uri
                  description: >-
                    The callback URL to redirect to after authorization. Note, only https URLs on ports 443 and 3000 are
                    allowed.
                  example: https://myapp.com/auth/callback
                code_challenge:
                  type: string
                  description: PKCE code challenge for enhanced security
                  example: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
                code_challenge_method:
                  type: string
                  enum:
                    - S256
                    - plain
                  description: The method used to generate the code challenge
                  example: S256
                limit:
                  type: number
                  description: Credit limit for the API key to be created
                  example: 100
                expires_at:
                  type: string
                  nullable: true
                  format: date-time
                  description: Optional expiration time for the API key to be created
              required:
                - callback_url
              example:
                callback_url: https://myapp.com/auth/callback
                code_challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
                code_challenge_method: S256
                limit: 100
        required: true
      responses:
        '200':
          description: Successfully created authorization code
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The authorization code ID to use in the exchange request
                        example: auth_code_xyz789
                      app_id:
                        type: number
                        description: The application ID associated with this auth code
                        example: 12345
                      created_at:
                        type: string
                        description: ISO 8601 timestamp of when the auth code was created
                        example: '2025-08-24T10:30:00Z'
                    required:
                      - id
                      - app_id
                      - created_at
                    description: Auth code data
                    example:
                      id: auth_code_xyz789
                      app_id: 12345
                      created_at: '2025-08-24T10:30:00Z'
                required:
                  - data
        '400':
          description: Bad Request - Invalid request parameters or malformed input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
        '401':
          description: Unauthorized - Authentication required or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '500':
          description: Internal Server Error - Unexpected server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerResponse'
      operationId: createAuthKeysCode
  /chat/completions:
    post:
      summary: Create a chat completion
      operationId: sendChatCompletionRequest
      x-speakeasy-group: chat
      x-speakeasy-name-override: send
      x-speakeasy-stream-request-field: stream
      description: >-
        Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming
        modes.
      tags:
        - Chat
      requestBody:
        required: true
        description: Chat completion request parameters
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatGenerationParams'
      responses:
        '200':
          description: Successful chat completion response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatResponse'
                description: Chat completion response
            text/event-stream:
              x-speakeasy-sse-sentinel: '[DONE]'
              schema:
                $ref: '#/components/schemas/ChatStreamingResponseChunk'
        '400':
          description: Bad request - invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatError'
        '401':
          description: Unauthorized - invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatError'
        '429':
          description: Too many requests - rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatError'
servers:
  - url: https://openrouter.ai/api/v1
    description: Production server
    x-speakeasy-server-id: production
security:
  - apiKey: []
externalDocs:
  description: OpenRouter Documentation
  url: https://openrouter.ai/docs
tags:
  - name: API Keys
    description: API key management endpoints
  - name: Analytics
    description: Analytics and usage endpoints
  - name: Anthropic Messages
    description: Anthropic Messages endpoints
  - name: Chat
    description: Chat completion endpoints
  - name: Credits
    description: Credit management endpoints
  - name: Embeddings
    description: Text embedding endpoints
  - name: Endpoints
    description: Endpoint information
  - name: Generations
    description: Generation history endpoints
  - name: Guardrails
    description: Guardrails endpoints
  - name: Models
    description: Model information endpoints
  - name: OAuth
    description: OAuth authentication endpoints
  - name: Providers
    description: Provider information endpoints
  - name: beta.responses
    description: beta.responses endpoints
x-fern-base-path: /
x-retry-strategy:
  type: exponential
  initialDelay: 500
  maxDelay: 60000
  maxAttempts: 3
