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

# List models

> List catalog models, or the models available to agents in an agent region and language.

<Note>For workflow examples, see the [Catalog API guide](/guides/models/catalog-api).</Note>


## OpenAPI

````yaml api-reference/catalog/catalog.oas.yaml GET /v1/catalog/models
openapi: 3.0.3
info:
  title: SLNG Catalog API
  version: 1.0.0
  description: >-
    Discover models and voices, including the models available to agents in an
    agent region and language. Every regional gateway serves the same catalog;
    the host does not filter results. Authentication is optional.
  contact:
    name: SLNG Support
    email: support@slng.ai
servers:
  - url: https://{region}.api.slng.ai
    description: Regional base URL. Any region returns the same catalog.
    variables:
      region:
        default: eu-west
        enum:
          - eu-north
          - eu-west
          - us-east
          - us-west
          - au
          - br
          - gb
          - id
          - il
          - in
          - jp
          - sg
          - za
        description: >-
          Gateway code of the region. See [Regions and base
          URLs](/guides/regions/regions-map#regions-and-base-urls).
security:
  - {}
  - BearerAuth: []
tags:
  - name: Catalog
    description: Model and voice discovery.
paths:
  /v1/catalog/models:
    get:
      tags:
        - Catalog
      summary: List models
      description: >-
        List catalog models. Without an API key you get the public catalog; with
        one you get the models and pricing available to your organization. Add
        `surface=agent` to list the models enabled for agents, with
        `agent_region` and `language` to narrow them. Follow `meta.pages` to
        page through the results.
      operationId: listCatalogModels
      parameters:
        - $ref: '#/components/parameters/Surface'
        - $ref: '#/components/parameters/AgentRegion'
        - $ref: '#/components/parameters/Language'
        - $ref: '#/components/parameters/ServiceType'
        - $ref: '#/components/parameters/Provider'
        - $ref: '#/components/parameters/Region'
        - $ref: '#/components/parameters/UseCase'
        - $ref: '#/components/parameters/Capability'
        - $ref: '#/components/parameters/Protocol'
        - $ref: '#/components/parameters/SlngHostedOnly'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Matching models and pagination metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogModelList'
              example:
                items:
                  - code: deepgram/aura:2
                    name: Aura 2
                    service_type: tts
                    provider_code: deepgram
                    hosted_by: Deepgram
                    languages:
                      - en
                    voice_count: 41
                    available_regions:
                      - au
                      - eu-west
                      - in
                      - us-east
                    supported_protocols:
                      - https
                      - wss
                    voices: []
                    similar_models: []
                    pricing:
                      min_price: 50
                      unit: microdollars_per_min
                    agent_availability:
                      - region: eu-west
                        language: en
                        voice_ids:
                          - aura-2-amalthea-en
                          - aura-2-andromeda-en
                meta:
                  page: 1
                  page_size: 1
                  total: 6
                  pages: 6
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    Surface:
      name: surface
      in: query
      description: >-
        Set to `agent` to list only the models enabled for agents and to add
        `agent_availability` to each model. Omit for the general catalog.
      schema:
        type: string
        enum:
          - agent
    AgentRegion:
      name: agent_region
      in: query
      description: >-
        Agent region code, for example `eu-west` or `us-east-slng`. Requires
        `surface=agent`. This is the agent's `region`, not a gateway code or a
        model hosting region. An unknown code returns an empty list. See [Agent
        regions](/guides/regions/agent-regions).
      schema:
        type: string
        pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
        maxLength: 50
        example: eu-west
    Language:
      name: language
      in: query
      description: >-
        Language code, for example `en`. Repeat the parameter for several
        languages, up to 16. With `surface=agent`, matches the languages an
        agent can use the model in.
      style: form
      explode: true
      schema:
        type: array
        maxItems: 16
        items:
          type: string
          maxLength: 35
          pattern: ^[a-zA-Z]{2,8}(?:-[a-zA-Z0-9]{1,8})*$
        example:
          - en
    ServiceType:
      name: service_type
      in: query
      description: >-
        Return models of one service type. The general catalog lists speech
        models (`stt` and `tts`); LLMs for agents appear with `surface=agent`.
      schema:
        type: string
        enum:
          - stt
          - llm
          - tts
    Provider:
      name: provider
      in: query
      description: Provider code, for example `deepgram`. Repeat for several.
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
    Region:
      name: region
      in: query
      description: >-
        Hosting location of the model's deployments, as listed in
        `available_regions`. Repeat for several. Not an agent region code.
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
    UseCase:
      name: use_case
      in: query
      description: Use case tag. Repeat for several.
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
    Capability:
      name: capability
      in: query
      description: Capability tag. Repeat for several.
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
    Protocol:
      name: protocol
      in: query
      description: Return models that support this protocol.
      schema:
        type: string
        enum:
          - https
          - wss
    SlngHostedOnly:
      name: slng_hosted_only
      in: query
      description: Return only SLNG-hosted models. Accepts `true`, `false`, `1`, or `0`.
      schema:
        type: boolean
        default: false
    Search:
      name: search
      in: query
      description: Search text matched against model names and descriptions.
      schema:
        type: string
        maxLength: 200
    Page:
      name: page
      in: query
      description: Page number, starting at 1.
      schema:
        type: integer
        minimum: 1
        maximum: 10000
        default: 1
    PageSize:
      name: page_size
      in: query
      description: >-
        Results per page. In the general catalog a page holds this many model
        families, and each family brings its matching variants, so `items` can
        be longer than `page_size`. With `surface=agent` each model counts once.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
  schemas:
    CatalogModelList:
      type: object
      required:
        - items
        - meta
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/CatalogModel'
        meta:
          $ref: '#/components/schemas/Pagination'
    CatalogModel:
      type: object
      required:
        - code
        - name
        - service_type
      properties:
        code:
          type: string
          description: >-
            Model code. Use it in API paths, and in an agent's `models.stt`,
            `models.llm`, or `models.tts`.
          example: deepgram/aura:2
        name:
          type: string
          example: Aura 2
        service_type:
          type: string
          enum:
            - stt
            - llm
            - tts
          example: tts
        provider_code:
          type: string
          nullable: true
          example: deepgram
        provider:
          $ref: '#/components/schemas/Provider'
        hosted_by:
          type: string
          nullable: true
          description: Who hosts the model.
        short_description:
          type: string
          nullable: true
        long_description:
          type: string
          nullable: true
        best_for:
          type: string
          nullable: true
        use_cases:
          type: array
          items:
            type: string
        capabilities:
          type: array
          items:
            type: string
        languages:
          type: array
          description: >-
            Supported language codes. With `surface=agent`, the languages agents
            can use the model in, within the selected filters.
          items:
            type: string
        streaming:
          type: boolean
        batch:
          type: boolean
        accuracy:
          type: number
          nullable: true
        voice_count:
          type: integer
          nullable: true
          description: >-
            Number of voices. With `surface=agent`, the number of voices
            available for the selected region and language.
        api_path:
          type: string
          nullable: true
        code_example:
          type: string
          nullable: true
        code_examples:
          type: object
          nullable: true
          additionalProperties:
            type: string
        docs_url:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
        family_code:
          type: string
          nullable: true
        family_name:
          type: string
          nullable: true
        available_regions:
          type: array
          description: >-
            Where the model's deployments run: region or gateway codes. Filter
            on these with `region`.
          items:
            type: string
          example:
            - au
            - eu-west
            - in
            - us-east
        region_details:
          type: array
          description: Price and latency per entry in `available_regions`.
          items:
            $ref: '#/components/schemas/RegionDetail'
        region_picker_options:
          type: array
          description: The `region_details` entries grouped by gateway region.
          items:
            $ref: '#/components/schemas/RegionPickerOption'
        served_regions:
          type: array
          description: >-
            Gateway codes of the regions that can serve the model, including
            regions that reach a deployment hosted elsewhere.
          items:
            type: string
          example:
            - eu-north
            - eu-west
            - gb
        served_region_details:
          type: array
          description: >-
            Price and latency per served region. Figures are the best available
            from that region, not a quote for a particular request.
          items:
            $ref: '#/components/schemas/RegionDetail'
        served_region_picker_options:
          type: array
          description: The `served_region_details` entries grouped by gateway region.
          items:
            $ref: '#/components/schemas/RegionPickerOption'
        supported_protocols:
          type: array
          items:
            type: string
            enum:
              - https
              - wss
        voices:
          type: array
          description: >-
            Voices for a text to speech model. Always empty in the list
            response; get the model to fill it. With `surface=agent`, only the
            voices available for the selected region and language.
          items:
            $ref: '#/components/schemas/Voice'
        similar_models:
          type: array
          description: Related models. Empty with `surface=agent`.
          items:
            $ref: '#/components/schemas/SimilarModel'
        pricing:
          type: object
          additionalProperties: true
          description: >-
            Pricing metadata, for example `min_price` in `microdollars_per_min`.
            An empty object means no pricing metadata is available.
        agent_availability:
          type: array
          description: >-
            Agent regions and languages the model is available in, with the
            selectable voice IDs. Filled only with `surface=agent`.
          items:
            $ref: '#/components/schemas/AgentAvailability'
    Pagination:
      type: object
      required:
        - page
        - page_size
        - total
        - pages
      properties:
        page:
          type: integer
          description: Current page, starting at 1.
        page_size:
          type: integer
          description: Page size used for this response.
        total:
          type: integer
          description: >-
            Matching results: model families in the general catalog, models with
            `surface=agent`.
        pages:
          type: integer
          description: Number of pages. Request `page` up to this value.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Error message.
    Provider:
      type: object
      nullable: true
      properties:
        code:
          type: string
        name:
          type: string
        website:
          type: string
          nullable: true
        logo_url:
          type: string
          nullable: true
    RegionDetail:
      type: object
      required:
        - code
      properties:
        code:
          type: string
        country:
          type: string
          nullable: true
        world_part_code:
          type: string
          nullable: true
          description: Gateway code of the region the entry belongs to.
        world_part_label:
          type: string
          nullable: true
        latency_ms:
          type: integer
          nullable: true
          description: Measured latency in milliseconds. `null` when not measured.
        price:
          type: integer
          nullable: true
          description: Price in microdollars. `null` when not set.
        discounted_price:
          type: integer
          nullable: true
          description: Your organization's price after discounts, in microdollars.
    RegionPickerOption:
      type: object
      properties:
        code:
          type: string
        label:
          type: string
        flag:
          type: string
        min_price:
          type: integer
          nullable: true
        discounted_min_price:
          type: integer
          nullable: true
        latency_ms_avg:
          type: integer
          nullable: true
    Voice:
      type: object
      properties:
        voice_id:
          type: string
          description: Voice ID. Use it as `models.tts_voice`.
          example: aura-2-amalthea-en
        name:
          type: string
          example: Amalthea
        language:
          type: string
          nullable: true
          example: en
        gender:
          type: string
          nullable: true
        tone:
          type: string
          nullable: true
        use_case:
          type: string
          nullable: true
        age_range:
          type: string
          nullable: true
        preview_url:
          type: string
          nullable: true
          description: URL of an audio preview.
        enabled:
          type: boolean
    SimilarModel:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        provider_name:
          type: string
          nullable: true
        service_type:
          type: string
        description:
          type: string
          nullable: true
    AgentAvailability:
      type: object
      required:
        - region
        - language
        - voice_ids
      properties:
        region:
          type: string
          description: Agent region code.
          example: eu-west
        language:
          type: string
          example: en
        voice_ids:
          type: array
          description: >-
            Voice IDs you can set as `models.tts_voice` for this region and
            language. Empty for speech to text and LLM models.
          items:
            type: string
  responses:
    BadRequest:
      description: >-
        Invalid request: an unsupported query parameter, an out-of-range value,
        `agent_region` without `surface=agent`, or a malformed model code.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            unsupported-parameter:
              summary: Unsupported query parameter
              value:
                error: 'Unsupported query parameter: orchestrator'
            agent-filter:
              summary: Agent filter without surface=agent
              value:
                error: Agent filters require surface=agent
            invalid-page-size:
              summary: Page size out of range
              value:
                error: page_size must be between 1 and 100
    Unauthorized:
      description: The API key is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Invalid API key
    RateLimited:
      description: Too many requests. Retry after the number of seconds in `Retry-After`.
      headers:
        Retry-After:
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Rate limit exceeded
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Optional SLNG API key, sent as `Authorization: Bearer $SLNG_API_KEY`.
        Returns your organization's models and pricing. An invalid key returns
        `401`; it never falls back to the public catalog.

````

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