> Markdown mirror of https://router.one/blog/azure-aws-vertex-channel-model-ids for AI assistants and crawlers. Router One is an OpenAI-compatible LLM API gateway.
> Published: 2026-09-22 · Author: Router One Team

# Azure GPT, AWS and Vertex Claude on One Key: Channel Model IDs

_What azure/, aws/ and vertex/ model ids change on Router One — isolated routing, own rates and quota, the channel in every trace — and how to call one._

On 2026-09-22 the Router One catalog lists 21 model ids that carry a channel prefix instead of a vendor prefix: five `azure/gpt-*` ids, nine `aws/claude-*` ids and seven `vertex/claude-*` ids. Each one is the same base model as a default-channel id you may already call — `azure/gpt-5.6-sol` is GPT-5.6 Sol, `aws/claude-sonnet-5` is Claude Sonnet 5 — sold as a separate product: its own routing pool, its own posted rates and tiers, its own quota accounting, and its own line in every trace. The key, base URL, endpoints and request shape do not change; only the `model` string does.

This guide is what the catalog and the gateway's published behavior let us state about channel ids on that date: which ids exist, what a channel prefix changes and what it leaves alone, which endpoint serves each family, and how to point a client — the OpenAI SDK, Claude Code or Codex CLI — at one. Prices are not printed here; the [model catalog](https://router.one/models) and each model page carry the live rate, and the comparison pages listed below render a channel id beside its default twin.

## What a channel id is, and what it is not

A channel id names a **public sales channel** on Router One's catalog. `azure/`, `aws/` and `vertex/` are the labels the catalog uses for three channels through which the same base models are served, each with a price list of its own. The default channel is everything you called before this change: bare names such as `gpt-5.6-sol`, and vendor-prefixed names such as `openai/gpt-5.6-sol` and `anthropic/claude-sonnet-5`. Those ids keep their existing routing and rates; nothing about them changed on 2026-09-22.

The label is a product identity, not a disclosure. Router One does not publish which suppliers serve any channel, how many candidate routes a channel has, what the routes cost the gateway, or which regions they run in, and the customer trace does not either ([routing facts](https://router.one/facts/routing.md)). A channel id therefore does not come with a data-residency, region or compliance statement from Router One. If your own policy needs a specific cloud channel, the channel label and the per-request trace are what the gateway gives you to work with; the rest belongs to your own review.

## The 21 ids

Every id below was listed in the 2026-09-22 catalog check. The catalog entry, not this table, is authoritative for context window, input modalities, capability flags and rates — open the model page before you send traffic.

| Channel id | Base model | Endpoints |
| --- | --- | --- |
| [`azure/gpt-5.5`](https://router.one/models/azure-gpt-5-5) | GPT-5.5 | `/v1/chat/completions`, `/v1/responses` |
| [`azure/gpt-5.6-luna`](https://router.one/models/azure-gpt-5-6-luna) | GPT-5.6 Luna | `/v1/chat/completions`, `/v1/responses` |
| [`azure/gpt-5.6-sol`](https://router.one/models/azure-gpt-5-6-sol) | GPT-5.6 Sol | `/v1/chat/completions`, `/v1/responses` |
| [`azure/gpt-5.6-terra`](https://router.one/models/azure-gpt-5-6-terra) | GPT-5.6 Terra | `/v1/chat/completions`, `/v1/responses` |
| [`azure/gpt-6-astra`](https://router.one/models/azure-gpt-6-astra) | GPT-6 Astra | `/v1/chat/completions`, `/v1/responses` |
| [`aws/claude-haiku-4.5`](https://router.one/models/aws-claude-haiku-4-5) | Claude Haiku 4.5 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-sonnet-4.5`](https://router.one/models/aws-claude-sonnet-4-5) | Claude Sonnet 4.5 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-sonnet-4.6`](https://router.one/models/aws-claude-sonnet-4-6) | Claude Sonnet 4.6 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-sonnet-5`](https://router.one/models/aws-claude-sonnet-5) | Claude Sonnet 5 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-opus-4.5`](https://router.one/models/aws-claude-opus-4-5) | Claude Opus 4.5 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-opus-4.6`](https://router.one/models/aws-claude-opus-4-6) | Claude Opus 4.6 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-opus-4.7`](https://router.one/models/aws-claude-opus-4-7) | Claude Opus 4.7 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-opus-4.8`](https://router.one/models/aws-claude-opus-4-8) | Claude Opus 4.8 | `/v1/chat/completions`, `/v1/messages` |
| [`aws/claude-opus-5`](https://router.one/models/aws-claude-opus-5) | Claude Opus 5 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-sonnet-4.5`](https://router.one/models/vertex-claude-sonnet-4-5) | Claude Sonnet 4.5 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-sonnet-4.6`](https://router.one/models/vertex-claude-sonnet-4-6) | Claude Sonnet 4.6 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-sonnet-5`](https://router.one/models/vertex-claude-sonnet-5) | Claude Sonnet 5 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-opus-4.6`](https://router.one/models/vertex-claude-opus-4-6) | Claude Opus 4.6 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-opus-4.7`](https://router.one/models/vertex-claude-opus-4-7) | Claude Opus 4.7 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-opus-4.8`](https://router.one/models/vertex-claude-opus-4-8) | Claude Opus 4.8 | `/v1/chat/completions`, `/v1/messages` |
| [`vertex/claude-opus-5`](https://router.one/models/vertex-claude-opus-5) | Claude Opus 5 | `/v1/chat/completions`, `/v1/messages` |

Two things the table shows are easy to miss. The channel lineups are not copies of the default lineup: `aws/claude-opus-4.5` and `aws/claude-sonnet-4.5` have no default-channel twin in today's catalog, the AWS channel carries a Haiku 4.5 id while the Vertex channel does not, and no channel carries a `-thinking` id or Claude Fable 5. And `azure/gpt-5.6-luna` is a new channel product, not the default-channel `openai/gpt-5.6-luna` id, which is not currently listed.

## What changes when you pick a channel

The gateway treats a channel id as a product in its own right. Six consequences follow, and they are the reason to choose — or not to choose — a channel id.

1. **Routing stays inside the channel.** A request for `azure/gpt-5.6-sol` is served only by Azure-channel routes for that model. Retries after a retryable upstream failure stay inside the channel; the request never falls back to the default channel, and automatic routing cannot move it there. When no channel route is available, the request fails with the no-eligible-route error the [error codes page](https://router.one/llm-api-error-codes) describes rather than being answered by another channel.
2. **The default id never borrows channel capacity.** `openai/gpt-5.6-sol` keeps the fallback scope it had; the fact that a channel serves the same base model does not add that channel's routes to the default id's candidates.
3. **Rates are the channel's own.** Every rate line the model page shows — input, output, and the whole-request long-context tier the Azure GPT ids carry above 272,000 input tokens — is posted per channel id and does not inherit the default id's promotional discount. On 2026-09-22 the default GPT ids are where the up to 90% off official prices positioning applies, the Azure ids carry a smaller discount off the same list rate, and the AWS and Vertex Claude ids bill at their posted list rate with no promotional discount. Read the current figures on the model page; they change.
4. **Quota and discounts follow the channel id.** A subscription quota that covers a default id does not automatically cover its channel twin: unless the live plan response lists the channel id in a model tier, calls to it bill to wallet balance at the posted rates, and the [cost calculator](https://router.one/llm-cost-calculator) reports that no published plan quota covers the model. Account-level discounts are likewise applied to the channel id you called, not to the base model name.
5. **The channel survives into the response and the ledger.** The `model` field in the response, the row in Dashboard → Logs and the settled charge carry the channel id you sent, so channel traffic can be filtered, budgeted with a dedicated key and its `maxSpend`, and reconciled by `request_id` like any other model ([per-request observability](https://router.one/llm-observability)).
6. **The catalog shows the channel and the customer price, nothing behind them.** Supplier names, candidate counts and procurement prices are not published for any channel, the default channel included.

## Which endpoint serves a channel id

Channel ids follow their base family's endpoint rule, which the [API compatibility facts](https://router.one/facts/api-compatibility.md) state and each model page lists:

- `azure/gpt-*` ids are GPT-family: `POST /v1/chat/completions`, and `POST /v1/responses` served natively — the path Codex CLI speaks.
- `aws/claude-*` and `vertex/claude-*` ids are Claude-family: `POST /v1/chat/completions`, and `POST /v1/messages` in the Anthropic wire format — the path Claude Code speaks.

An id sent to an endpoint that does not serve it — a Claude channel id on `/v1/responses`, for instance — is rejected with HTTP 400 `invalid_request_error` before any model is called, and the message names the path to use. No channel id ends in `-thinking`, so the thinking default described on the compatibility sheet does not apply to them.

There is no channel field in the request body. The model id is the only selector: `azure/gpt-5.6-sol` selects the Azure channel, `gpt-5.6-sol` and `openai/gpt-5.6-sol` select the default channel, and no header or extra parameter changes that.

## Calling one

Chat Completions with an Azure GPT id — the request you send today, with a different `model` string:

```bash
curl https://api.router.one/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "azure/gpt-5.6-sol",
    "messages": [{"role": "user", "content": "Explain what a sales channel is on an API catalog, in one sentence."}]
  }'
```

Messages with an AWS Claude id:

```bash
curl https://api.router.one/v1/messages \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "aws/claude-sonnet-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Explain what a sales channel is on an API catalog, in one sentence."}]
  }'
```

Claude Code: keep `ANTHROPIC_BASE_URL=https://api.router.one` and `ANTHROPIC_AUTH_TOKEN` as the [Claude Code setup](https://router.one/claude-code-china) describes, and set `ANTHROPIC_MODEL=aws/claude-sonnet-5` (or a `vertex/claude-*` id). Claude Code sends the id unchanged on `/v1/messages`.

Codex CLI: in the provider block the [Codex and Responses API guide](https://router.one/codex-responses-api) shows, set `model = "azure/gpt-5.6-sol"`. Codex sends the id unchanged on `/v1/responses`, where the Azure GPT ids are served natively.

Then open Dashboard → Logs: each call is one row with the channel id as its model, tokens, cost, latency and status. If you run a channel and its default twin side by side, give each its own key with a `maxSpend` cap so the comparison has a budget ([per-key cost tracking](https://router.one/llm-cost-tracking)).

## Compare a channel with its default twin

Three comparison pages render a channel id beside its default-channel twin from the live catalog — the price gap on a 1M-input + 1M-output mix, the context window and the endpoint family, refreshed within the hour:

- [GPT-5.6 Sol (Azure) vs GPT-5.6 Sol](https://router.one/models/compare/azure-gpt-5-6-sol-vs-gpt-5-6-sol)
- [Claude Sonnet 5 (AWS) vs Claude Sonnet 5](https://router.one/models/compare/aws-claude-sonnet-5-vs-claude-sonnet-5)
- [Claude Opus 5 (Vertex AI) vs Claude Opus 5](https://router.one/models/compare/vertex-claude-opus-5-vs-claude-opus-5)

These pages state price facts only; whether a channel behaves differently for your prompts is a question for your own A/B run.

## When a channel id is the right call

- **You need traffic pinned to one channel.** Latency, availability and error observations in your traces are then attributable to that channel alone, because no request was quietly served elsewhere.
- **Your procurement or review policy names a cloud channel.** The catalog label and the trace give you a per-request record of which channel product answered; Router One supplies no certification or residency statement on top of that.
- **You are evaluating the channel itself.** Run the channel id and the default id under separate keys and compare traces before moving volume.

When cost decides, the default ids are the answer on 2026-09-22: they carry the deeper discount on the same base models. A channel id is a deliberate choice to pay the channel's rate for the channel's isolation.

## What is not offered

- No request-body channel selector; `model` is the only way to choose a channel.
- No promise that a channel lineup stays complete or stable. Ids are listed and retired on the catalog's schedule, and the comparison pages above return 404 rather than wrong numbers if a side leaves.
- No `-thinking` channel ids and no Claude Fable 5 channel id as of 2026-09-22.
- No supplier, region, candidate-count or procurement-price disclosure, for channel or default ids.

## FAQ

**Does `azure/gpt-5.5` give me the same model as `openai/gpt-5.5`?**
The same base model, sold as a separate product: its own routing pool, its own posted rates, its own quota accounting. The two catalog entries may also differ in published details, so read both model pages rather than assuming parity.

**Will a channel id fall back to the default channel when the channel is busy?**
No. Retries stay inside the channel; when no channel route is available the request fails with the no-eligible-route error rather than being served by another channel. The default id, in turn, never uses channel routes.

**Does my Pro, Max or Ultra plan cover the channel ids?**
Only if the live plan response lists the channel id in a model tier. A quota that covers `openai/gpt-5.5` does not cover `azure/gpt-5.5`; without listed coverage, channel calls bill to wallet balance at the posted rates, and the cost calculator says so for the model you pick.

**Are the channel ids cheaper?**
Not on 2026-09-22. The default ids carry the deeper promotional discount; the Azure ids carry a smaller discount, and the AWS and Vertex Claude ids bill at their posted list rate. The comparison pages render the gap live, and this post prints no rates.

**Which endpoint do Claude Code and Codex use with a channel id?**
Claude Code sends `aws/claude-*` or `vertex/claude-*` ids on `/v1/messages`; Codex sends `azure/gpt-*` ids on `/v1/responses`, where the Azure GPT ids are served natively. Both are the paths their default-channel twins already use.

## Next steps

- Pick a channel id on the [model catalog](https://router.one/models) and read its endpoints, tiers and live rate; the discount qualifier is on the [pricing page](https://router.one/pricing).
- Read the [pricing facts](https://router.one/facts/pricing.md) and [routing facts](https://router.one/facts/routing.md) for the channel rules in fact-sheet form.
- For the rest of the September lineup, including Grok 4.7, see the [September 2026 new-model guide](https://router.one/blog/new-llm-models-september-2026).

## See also

- Canonical page: https://router.one/blog/azure-aws-vertex-channel-model-ids
- LLM API Gateway and Routing: https://router.one/llm-api-gateway
- All blog posts: https://router.one/blog
- Models and per-model token rates: https://router.one/models (markdown: https://router.one/models.md)
- Pricing: https://router.one/pricing
- API docs (markdown): https://router.one/docs.md
- Company facts: https://router.one/facts/company.md
