> ## 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.

# Catalog API

> Find speech to text, LLM, and text to speech models and voices for an agent region and language with the catalog API.

The catalog API lists the models you can use and the voices of each text to speech
model. Use it to build your own model or voice picker, or to check what an agent can
use in a region before you create or move it.

Send requests to any regional base URL, for example `https://eu-west.api.slng.ai`.
Every region returns the same catalog, so the host does not filter the results. Use
the query parameters instead. See
[Regions and base URLs](/guides/regions/regions-map#regions-and-base-urls) for every
host.

Authentication is optional. Without a key you get the public catalog. Add
`Authorization: Bearer $SLNG_API_KEY` to get the models and pricing available to your
organization.

## Find models for an agent

Add `surface=agent` to list the models enabled for agents. This example lists text to
speech (TTS) models for an English-speaking agent in Germany (`eu-west`):

```bash Request theme={null}
curl --get "https://eu-west.api.slng.ai/v1/catalog/models" \
  -H "Authorization: Bearer $SLNG_API_KEY" \
  --data-urlencode "surface=agent" \
  --data-urlencode "agent_region=eu-west" \
  --data-urlencode "language=en" \
  --data-urlencode "service_type=tts" \
  --data-urlencode "page_size=1"
```

```json Response expandable theme={null}
{
  "items": [
    {
      "code": "deepgram/aura:2",
      "name": "Aura 2",
      "service_type": "tts",
      "languages": ["en"],
      "voice_count": 41,
      "voices": [],
      "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 }
}
```

Run the same request with `service_type=stt` and `service_type=llm` to find the other
two models. Then set them on the agent:

* Copy each model's `code` into `models.stt`, `models.llm`, or `models.tts`.
* For `models.tts_voice`, pick a voice ID from the `agent_availability` entry that
  matches the agent's region and language. Speech to text (STT) and LLM entries have
  an empty `voice_ids` list.

LiveKit and Pipecat agents use the same models, so there is no `orchestrator` filter.

### Query parameters

| Parameter | Use it to |
| - | - |
| `surface=agent` | List only the models enabled for agents, each with `agent_availability` |
| `agent_region` | Pick an [agent region](/guides/regions/agent-regions), such as `eu-west` or `us-east-slng`. Requires `surface=agent` |
| `language` | Pick a language, such as `en`. Repeat it for several languages |
| `service_type` | Pick `stt`, `llm`, or `tts`. Omit it to list all three |

`agent_region` takes the agent's `region` code, not a gateway code. An unknown code
returns an empty list. The [API reference](/api-reference/catalog/list-models) covers
the other filters: provider, model hosting location, protocol, use case, capability,
and search.

## Get a model's voices

The list response never includes voices. Get the model with the same filters to fill
`voices`, for example to show voice names and previews in a picker:

```bash Request theme={null}
curl --get "https://eu-west.api.slng.ai/v1/catalog/models/deepgram/aura:2" \
  -H "Authorization: Bearer $SLNG_API_KEY" \
  --data-urlencode "surface=agent" \
  --data-urlencode "agent_region=eu-west" \
  --data-urlencode "language=en"
```

```json Response expandable theme={null}
{
  "code": "deepgram/aura:2",
  "name": "Aura 2",
  "service_type": "tts",
  "voice_count": 41,
  "voices": [
    {
      "voice_id": "aura-2-amalthea-en",
      "name": "Amalthea",
      "language": "en",
      "gender": "feminine",
      "preview_url": "https://assets.slng.ai/voice-previews/deepgram/aura:2/7e9d4fd4-b44d-401a-ae75-27824285519d-fcf9245a.mp3"
    }
  ]
}
```

With `surface=agent`, `voices` holds only the voices available for that region and
language. The endpoint returns the model object directly, and `404` when the model is
not visible to you or does not match the filters. See
[Get model](/api-reference/catalog/get-model) for the full schema.

## Page through results

Pass `page` and `page_size`, and request the next `page` until you reach
`meta.pages`. The default `page_size` is 20 and the maximum is 100.

With `surface=agent`, each model counts once toward `page_size`. In the general
catalog, a page holds `page_size` model families, and each family brings its
matching variants, so `items` can be longer than `page_size`. `meta.total` counts
families there too.

## Region fields

A model's agent regions, hosting location, and serving regions can all differ. A
model can be available to an agent in one region while its deployment runs in
another.

| Field | What it says |
| - | - |
| `agent_availability` | The agent regions and languages the model is available in, with voice IDs. Filled only with `surface=agent` |
| `available_regions`, `region_details` | Where the model's deployments run. Filter on these codes with `region` |
| `served_regions`, `served_region_details` | The regional gateways that can serve the model, including ones that reach a deployment hosted elsewhere |

Use `agent_region` to find models for an agent, and `region` to filter by hosting
location. Prices and latencies in the region details are the best available from
that region, not a quote for a particular request. A missing measurement is `null`.

## Next steps

<CardGroup cols={2}>
  <Card title="Agent regions" icon="globe" href="/guides/regions/agent-regions">
    Agent region codes and how an agent's region is set and changed.
  </Card>

  <Card title="Create an agent" icon="bot" href="/guides/get-started/create-a-project/create-agent">
    Use the models and voice you picked in the create request.
  </Card>
</CardGroup>


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