---
title: "Models and providers"
subtitle: "Pick a model ID, see which providers serve it, and know who pays for each call."
---

You choose a model with the `model` field. A model ID can name the model alone, so any provider that serves it can answer, or name one provider's offering of it. Switching models or providers is a change to that one string.

<Tabs>
<Tab title="cURL">
```bash
curl https://gateway.respan.ai/v1/chat/completions \
  -H "Authorization: Bearer $RESPAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.5", "messages": [{"role": "user", "content": "Hello!"}]}'
```
</Tab>
<Tab title="Python">
```python
import os
from openai import OpenAI

client = OpenAI(base_url="https://gateway.respan.ai/v1", api_key=os.environ["RESPAN_API_KEY"])

# Any provider that serves gpt-5.5
client.chat.completions.create(model="gpt-5.5", messages=[{"role": "user", "content": "Hello!"}])
# Azure OpenAI's offering only
client.chat.completions.create(model="azure/gpt-5.5", messages=[{"role": "user", "content": "Hello!"}])
```
</Tab>
<Tab title="TypeScript">
```typescript
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://gateway.respan.ai/v1", apiKey: process.env.RESPAN_API_KEY });

// Any provider that serves gpt-5.5
await client.chat.completions.create({ model: "gpt-5.5", messages: [{ role: "user", content: "Hello!" }] });
// Azure OpenAI's offering only
await client.chat.completions.create({ model: "azure/gpt-5.5", messages: [{ role: "user", content: "Hello!" }] });
```
</Tab>
</Tabs>

## Model IDs

| Form | Example | What serves it |
|---|---|---|
| Model name | `gpt-5.5` | Every provider in the catalog that serves the model, tried in order: the model's default provider first, then the rest from cheapest. |
| Provider offering | `azure/gpt-5.5`, `openrouter/openai/gpt-5.5` | That provider's offering only, as the model's **Providers** tab names it. |
| `<provider>/<model name>` | `openai/gpt-5.5` | The model on that provider only. The prefix is the provider's ID or the prefix its model IDs use. |
| Video resolution | `gemini/veo-3.1-generate-preview:1080p` | The video model with its output resolution fixed. See [Video](/docs/ai-gateway/modalities/video). |
| Route name | your own name, such as `smart` | The models your project's route lists. See [Routes and aliases](/docs/ai-gateway/routing/routes-and-aliases). |
| Respan model | `span-02` | Respan's own models. See [Span-02](/docs/documentation/span-02/quickstart). |

A version can be written with dots or dashes: `claude-sonnet-4.5` and `claude-sonnet-4-5` name the same model. A model ID the catalog doesn't know is refused with `model '<id>' is not available`. To call one, [add it as a custom model](#custom-models).

How the providers behind a model name become an ordered list of attempts, and the request fields that change that list, are in [Provider routing](/docs/ai-gateway/routing/provider-routing).

## Browse the catalog

In the [platform](https://platform.respan.ai/platform/gateway/models), go to **Gateway** › **Models**. Each row is one model, with its cheapest price across providers in USD per 1M tokens, its context window, and its capabilities. Filter by **Provider**, **Model type**, **Modality**, and **Capabilities**, or switch **Active** to **Deprecated** to find models to migrate off.

<img src={"/docs/images/gateway-features/model-catalog-light.png"} className="block dark:hidden" alt="The Models list with search, the Active, Provider, Model type, Modality, and Capabilities filters, and columns for input and output price, context, latency, capabilities, and release date" />
<img src={"/docs/images/gateway-features/model-catalog-dark.png"} className="hidden dark:block" alt="The Models list with search, the Active, Provider, Model type, Modality, and Capabilities filters, and columns for input and output price, context, latency, capabilities, and release date" />

Click a model and open its **Providers** tab to see every provider that serves it, each with its own model ID, status, price, and billing label. Hover a provider and click the copy icon to copy its model ID.

<img src={"/docs/images/gateway-features/model-detail-light.png"} className="block dark:hidden" alt="The GPT-5.5 detail with maker, release date, price, context window, and capability tags, and a Providers tab listing OpenAI (gpt-5.5), Azure OpenAI (azure/gpt-5.5), and OpenRouter (openrouter/openai/gpt-5.5) with status, input and output cost, and billing" />
<img src={"/docs/images/gateway-features/model-detail-dark.png"} className="hidden dark:block" alt="The GPT-5.5 detail with maker, release date, price, context window, and capability tags, and a Providers tab listing OpenAI (gpt-5.5), Azure OpenAI (azure/gpt-5.5), and OpenRouter (openrouter/openai/gpt-5.5) with status, input and output cost, and billing" />

[respan.ai/models](https://www.respan.ai/models) is the public catalog, with prices, providers, and benchmarks, no sign-in needed.

## List models by API

| Endpoint | Auth | Returns |
|---|---|---|
| [List models](/docs/apis/models/list-models): `POST https://api.respan.ai/api/models/list/` | Respan API key | The models your project can call, custom ones included. |
| [List public models](/docs/apis/models/list-public-models): `GET https://api.respan.ai/api/models/public/` | None | The public catalog. |
| [Get model](/docs/apis/models/get-model) | Respan API key | One model's details. |

```bash
curl -X POST https://api.respan.ai/api/models/list/ \
  -H "Authorization: Bearer $RESPAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Who pays for a call

Each provider offering has a billing label, shown in the **Billing** column of a model's **Providers** tab:

| Label | Who pays |
|---|---|
| **Credits** | Your Respan credits. |
| **BYOK + Credits** | Your own provider key if you added one, otherwise your Respan credits. |
| **BYOK** | Your own provider key only. Credits can't pay for it. |

For each request, the gateway tries keys in this order: your project's own keys, keys your workspace shares with the project, Respan keys dedicated to your organization, then Respan's public keys. When one of your own keys can serve the model, Respan's keys are not used for it, unless you opt in to [managed fallback](/docs/ai-gateway/routing/fallbacks#managed-fallback).

- A call on Respan's key is charged to your credits at the offering's catalog price. Without credits it's refused, unless the Respan key is dedicated to your organization. See [Pricing](/docs/ai-gateway/spend/credits-vs-byok).
- A call on your own key is billed by your provider, and is still logged and counted against your limits. See [Bring your own key](/docs/ai-gateway/spend/credits-vs-byok#byok).

{/* REVIEW: decide whether gateway.respan.ai serves GET /v1/models (not served, so only the api.respan.ai list endpoints are documented). */}

### See which provider and key served a request

Every response carries an `X-Respan-Log-Id` header. Open that log in **Gateway** › **Logs**: it shows the model, the provider, and the deployment (key) the call ran on. The **Config** tab's **Billing method** shows **BYOK** for your own key or **Respan credits**. To see every request one key served, filter Logs by **Deployment**.

## Custom models

To call a model your provider offers before it's in the catalog, add a custom model: on **Gateway** › **Models**, click **New custom model**, pick the **Provider**, enter the **Model name** exactly as the provider names it, set its capabilities and prices, and click **Save**. Send the **Model ID** the dialog shows as `model`. You can also use the [custom model API](/docs/apis/models/create-or-update-custom-model).

<img src={"/docs/images/gateway-features/new-custom-model-light.png"} width="420" className="block dark:hidden" alt="The New custom model dialog, step 1 of 4, with Provider set to OpenAI, Model name gpt-5.5-2026-09-15, and the Model ID openai/gpt-5.5-2026-09-15" />
<img src={"/docs/images/gateway-features/new-custom-model-dark.png"} width="420" className="hidden dark:block" alt="The New custom model dialog, step 1 of 4, with Provider set to OpenAI, Model name gpt-5.5-2026-09-15, and the Model ID openai/gpt-5.5-2026-09-15" />

A custom model runs on your own key for its provider. Respan's keys never serve it.

## Custom providers

To call a self-hosted or other OpenAI-compatible endpoint, add it as a custom provider: go to **Gateway** › **API keys** › **Bring your own key**, click **New custom provider**, and enter a **Provider ID**, a **Provider name**, and the endpoint's **Base URL**. Add the endpoint's key with **Add deployment**, then add a custom model for each model it serves. A custom provider is called with its own key only, and its base URL must resolve to a public address. See [Custom provider](/docs/integrations/gateway/model-providers/custom) and the [custom provider API](/docs/apis/models/create-custom-provider).

## Providers

Setup for each provider, including the keys and settings it needs, is under Providers:

- [OpenAI](/docs/integrations/gateway/model-providers/openai), [Azure OpenAI](/docs/integrations/gateway/model-providers/azure)
- [Anthropic](/docs/integrations/gateway/model-providers/anthropic), [Gemini](/docs/integrations/gateway/model-providers/gemini), [AWS Bedrock](/docs/integrations/gateway/model-providers/bedrock)
- [xAI](/docs/integrations/gateway/model-providers/xAI), [Mistral](/docs/integrations/gateway/model-providers/mistral), [Groq](/docs/integrations/gateway/model-providers/groq), [Together](/docs/integrations/gateway/model-providers/together), [Fireworks](/docs/integrations/gateway/model-providers/fireworks), [DeepSeek](/docs/integrations/gateway/model-providers/deepseek), [Perplexity](/docs/integrations/gateway/model-providers/perplexity), [OpenRouter](/docs/integrations/gateway/model-providers/openrouter)

## Next steps

- [Provider routing](/docs/ai-gateway/routing/provider-routing): how a model ID becomes ordered attempts.
- [Fallbacks](/docs/ai-gateway/routing/fallbacks): what happens when a provider fails.
- [Routes and aliases](/docs/ai-gateway/routing/routes-and-aliases): name a fallback chain or a weighted split.
- [Span-02](/docs/documentation/span-02/quickstart): Respan's own model.
