> ## Documentation Index
> Fetch the complete documentation index at: https://omnirelay.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List models

> Returns callable real models filtered by workspace, key allowlist and available runtime/channels. Use your own response for IDs, capabilities, limits, reasoning efforts and prices. Catalog visibility does not grant access.



## OpenAPI

````yaml /openapi.json get /v1/models
openapi: 3.1.0
info:
  title: OmniRelay API
  version: 1.0.0
  description: >-
    OpenAI-compatible gateway for reviewed real text models. Access is
    workspace-specific; query your own model list for capabilities and customer
    prices.
servers:
  - url: https://api.omnirelay.ai
security:
  - bearerAuth: []
tags:
  - name: Service
  - name: Models
  - name: Chat
  - name: Management
  - name: Responses
  - name: Embeddings
  - name: Images
  - name: Videos
paths:
  /v1/models:
    get:
      tags:
        - Models
      summary: List models
      description: >-
        Returns callable real models filtered by workspace, key allowlist and
        available runtime/channels. Use your own response for IDs, capabilities,
        limits, reasoning efforts and prices. Catalog visibility does not grant
        access.
      operationId: listModels
      responses:
        '200':
          description: Active models.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelList'
              example:
                object: list
                data:
                  - id: gpt-5.4-mini
                    object: model
                    owned_by: OpenAI
                    name: GPT 5.4 Mini
                    mode: live
                    context_length: 400000
                    capabilities:
                      text: true
                      stream: true
                      system: true
                      developer: false
                      reasoning_content: false
                      tools: true
                      vision: false
                      structured_output: true
                      json_object: true
                      json_schema: true
                      responses: true
                      embeddings: false
                    pricing_unit: micro-USD / 1M tokens
                    pricing:
                      input: 750000
                      output: 4500000
                    list_pricing:
                      input: 750000
                      output: 4500000
                    discount: 0
                    limits:
                      output_tokens: 256
                      default_output_tokens: 64
                    reasoning_efforts:
                      - none
                    default_reasoning_effort: none
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    ModelList:
      type: object
      required:
        - object
        - data
      properties:
        object:
          type: string
          enum:
            - list
        data:
          type: array
          items:
            $ref: '#/components/schemas/Model'
    Model:
      type: object
      required:
        - id
        - object
        - owned_by
      properties:
        id:
          type: string
          description: Model ID to pass as `model`.
          example: gpt-6-luna
        object:
          type: string
          enum:
            - model
        owned_by:
          type: string
          description: Provider the model is attributed to.
          example: OpenAI
        name:
          type: string
          description: Display name.
          example: GPT 5.4 Mini
        context_length:
          type: integer
          description: Context window in tokens.
          example: 400000
        mode:
          type: string
          enum:
            - live
          description: 'live: the model calls a real provider.'
        capabilities:
          type: object
          description: >-
            Documented capability guidance. With
            parameter_policy=upstream-first, false is not a local
            ordinary-parameter rejection rule; the model provider decides
            support. Platform protocol and billing boundaries still apply.
          additionalProperties:
            type: boolean
        pricing_unit:
          type: string
          description: Unit of every price below.
          example: micro-USD / 1M tokens
        pricing:
          $ref: '#/components/schemas/ModelPrice'
          description: >-
            Customer input/output base rates. Round the full charge, then apply
            customer_discount_bps; rates are not pre-discounted.
        list_pricing:
          $ref: '#/components/schemas/ModelPrice'
          description: The price before any discount.
        discount:
          type: number
          minimum: 0
          maximum: 1
          description: >-
            Share taken off the list price for this workspace and model: `0.2`
            means 20% off, `0` means none.
          example: 0
        context_verified:
          type: boolean
          description: Whether the runtime context contract is verified.
        context_basis:
          type: string
          enum:
            - input-plus-output
          description: >-
            Physical joint input/output context; independent fee bounds do not
            enlarge this window.
        max_input_tokens:
          type:
            - integer
            - 'null'
          description: Reviewed provider input ceiling, not measured prompt tokens.
        limits:
          type: object
          additionalProperties:
            type: integer
          description: >-
            Gateway runtime limits: output_tokens is the maximum and
            default_output_tokens is the omitted-field default. GPT 5.4 Mini:
            64/256; most other integrated text routes: 32,000 default, up to
            128,000 (Gemini 3.1 Pro Preview and Gemini 3.6 Flash: 65,536);
            DeepSeek V4 Pro, GLM 5.3 and Kimi K3: 4,096/4,096. request_bytes is
            the request body limit in UTF-8 bytes, messages the maximum message
            count and message_characters the maximum length of one text value;
            the model context window still applies.
        reasoning_efforts:
          type: array
          items:
            type: string
          description: >-
            Allowed Chat reasoning_effort values. Empty means unsupported.
            Responses uses responses_reasoning_efforts; tools/sampling have
            separate combination constraints.
        default_reasoning_effort:
          type:
            - string
            - 'null'
          description: >-
            Reviewed effort injected when omitted; null when no default effort
            is configured.
        token_budget_mode:
          type: string
          enum:
            - provider-context-ceiling
          description: >-
            Caps the reserved input at a provider input ceiling instead of
            claiming locally counted prompt context fit.
        input_bound_basis:
          type: string
          enum:
            - provider-enforced-input-ceiling
          description: >-
            Reserved input is an estimate: a third of the request byte length
            plus 4096 tokens of fixed overhead, capped by the provider-enforced
            input ceiling. Not a token count; settlement may exceed the hold by
            up to twice when funds cover it.
        context_fit_validation:
          type: string
          enum:
            - provider
          description: >-
            The model provider decides actual context fit. A post-dispatch
            rejection can keep a pending hold.
        reservation_basis:
          type: string
          enum:
            - independent-input-output-ceilings
          description: >-
            Reserves an input bound and the requested output separately. Initial
            input ceiling 400000 and output cap 256; the maximum hold depends on
            current workspace prices and is not a fixed fee.
        price_version:
          type: string
          description: Frozen customer price-contract version.
        customer_discount_bps:
          type: integer
          minimum: 0
          maximum: 10000
          description: >-
            Live request price factor: 10000 full price; apply after
            full-request rounding.
        customer_discount_source:
          type: string
          enum:
            - workspace
            - model
          description: Model discount replaces the workspace discount, never stacks.
        cache_pricing:
          type:
            - object
            - 'null'
          properties:
            read:
              type: integer
              minimum: 0
            write:
              type: integer
              minimum: 0
            unit:
              type: string
          description: Customer cache base rates before request discount.
        reasoning_price:
          type: integer
          minimum: 0
          description: >-
            Customer reasoning-output base rate, in micro-USD per million
            tokens.
        request_fee_microusd:
          type: integer
          minimum: 0
          description: >-
            Customer fixed request fee before discount; zero on the initial
            model provider endpoint.
        tier_mode:
          type:
            - string
            - 'null'
          description: Input tier selection policy where supported.
        input_tiers:
          type: array
          items:
            type: object
            properties:
              min_input_tokens:
                type: integer
                minimum: 0
              input:
                type: integer
                minimum: 0
              output:
                type: integer
                minimum: 0
              cache_read:
                type: integer
                minimum: 0
              cache_write:
                type: integer
                minimum: 0
              reasoning:
                type: integer
                minimum: 0
              request_fee_microusd:
                type: integer
                minimum: 0
          description: Whole-request customer base-rate bands, before customer discount.
        reservation:
          type: object
          description: >-
            Customer holds in micro-USD: the shortest request with one output
            token (minimum) and with default output (default), and a request at
            the input ceiling with maximum output (maximum). A longer prompt
            holds more. These are pre-dispatch reservations at current customer
            prices, not settled fees.
          properties:
            currency:
              type: string
              enum:
                - USD
            unit:
              type: string
              enum:
                - micro-USD
            minimum_customer_hold:
              type: integer
              minimum: 0
            default_customer_hold:
              type: integer
              minimum: 0
            maximum_customer_hold:
              type: integer
              minimum: 0
        responses_reasoning_efforts:
          type: array
          items:
            type: string
          description: Allowed Responses reasoning.effort values.
        sampling_parameters:
          type: array
          items:
            type: string
          description: Allowed sampling parameter names.
        sampling_reasoning_efforts:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Efforts compatible with sampling; null means no additional
            restriction.
        chat_tools_reasoning_efforts:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Efforts compatible with Chat tools/history; null means no additional
            restriction.
        tool_choice_values:
          type: array
          items:
            type: string
          description: Allowed string tool_choice values.
        tool_choice_reasoning_efforts:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Efforts compatible with required/named tool choice; null means no
            additional restriction.
        thinking_modes:
          type: array
          items:
            type: string
          description: Allowed thinking.type values.
        parameter_ranges:
          type: object
          additionalProperties:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: number
          description: Model-specific inclusive minimum/maximum ranges.
        parameter_policy:
          type: string
          enum:
            - upstream-first
            - reviewed
          description: >-
            upstream-first forwards ordinary fields and the model provider
            decides on them, possibly ignoring unsupported ones; platform
            funding/protocol checks remain.
        capability_basis:
          type: string
          description: Evidence basis of the published capability guidance.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - type
          properties:
            code:
              type: string
              example: model_unavailable
            message:
              type: string
              example: The model does not exist or is disabled.
              description: >-
                Short English description for logs and SDK exceptions. Its
                wording can change; branch on code.
            type:
              type: string
              example: not_found_error
              description: >-
                Error family by HTTP status: invalid_request_error,
                authentication_error, insufficient_quota, permission_error,
                not_found_error, conflict_error, rate_limit_error,
                service_unavailable or api_error.
            param:
              type: string
              maxLength: 200
              description: >-
                Rejected request field path when identifiable; never a parameter
                value. Responses uses native field names.
        request_id:
          type: string
          description: Present on chat completion, Responses and embeddings errors.
    ModelPrice:
      type: object
      required:
        - input
        - output
      properties:
        input:
          type: integer
          description: Price of input tokens.
          example: 2500000
        output:
          type: integer
          description: Price of output tokens.
          example: 10000000
  responses:
    Unauthorized:
      description: '`unauthorized`: the API key is missing, revoked, or invalid.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: unauthorized
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key created in the OmniRelay console. The owner can view it again
        in the console after confirming their identity.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.