Model catalog
98 EU-hosted models across chat, embeddings, audio and rerank — auto-synced every 6h.
CleverRouter exposes around 98 models from three EU-resident providers.
All IDs follow <family>/<model> and stay stable even when the
upstream provider renames or rehosts a model.
At a glance
| Endpoint | GET /v1/models |
| Filter | `?kind=chat |
| Auto-sync | Every 6 hours from every configured provider |
| Live view | cleverouter.eu/models |
Model kinds
The kind field determines which endpoint accepts the model:
| Kind | Endpoint | Example IDs |
|---|---|---|
chat | POST /v1/chat/completions | mistral/mistral-large-2, qwen/qwen3-235b, meta/llama-3.3-70b |
embedding | POST /v1/embeddings | cohere/embed-v4, baai/bge-multilingual-gemma2 |
rerank | POST /v1/rerank | cohere/rerank-v3-5, amazon/rerank-v1 |
audio | POST /v1/audio/transcriptions | systran/faster-whisper-large-v3, openai/whisper-large-v3 |
Live catalog
Via SDK
import { createCleverRouter } from '@cleverrouter/sdk';
const cr = createCleverRouter({ apiKey: process.env.CLEVERROUTER_API_KEY! });
const all = await cr.listModels();
const embeddings = await cr.listModels({ kind: 'embedding' });
const audio = await cr.listModels({ kind: 'audio' });Via HTTP
curl https://api.cleverouter.eu/v1/models \
-H "Authorization: Bearer $CLEVERROUTER_API_KEY"
curl 'https://api.cleverouter.eu/v1/models?kind=embedding' \
-H "Authorization: Bearer $CLEVERROUTER_API_KEY"Response:
{
"object": "list",
"data": [
{
"id": "mistral/mistral-small-3.2",
"object": "model",
"kind": "chat",
"owned_by": "mistral"
}
]
}Static autocomplete
For frequently-used models there's a typed MODELS constant for
editor autocomplete:
import { MODELS } from '@cleverrouter/sdk';
await cr.openai().chat.completions.create({
model: MODELS['qwen/qwen3-coder'],
// …
});MODELS is a curated subset. Any string is valid at runtime — the
gateway resolves it against the live registry.
ID format
<family>/<model>[:variant]Examples:
| ID | Meaning |
|---|---|
mistral/mistral-small-3.2 | Mistral's small-3.2 family member |
meta/llama-3.3-70b | Meta's Llama 3.3 70B |
mistral/pixtral-large-latest | Aliased "latest" Pixtral large variant |
cohere/rerank-v3-5 | Cohere's rerank v3.5 |
Aliases (like :latest) point to a concrete model id internally and
auto-update when the upstream tag moves.
Pricing on a model
The dashboard's /models page is the authoritative view for
context windows, prices per 1M tokens and per-provider availability.
Via API, pricing is not in /v1/models itself — it lives in the
dashboard and on usage rollups, so you can't accidentally trust a
stale local copy.
When `pricingKnown=false`
Newly auto-synced models without a pricing-whitelist entry show
pricingKnown=false. Calls still work; cost tracking shows €0
until pricing is added (we typically update within 48h of a model
appearing).
Related
- Model classes —
frontier-reasoning,fast,coder, … - Providers — what each provider hosts.
- Auto-sync — how new models appear without SDK releases.
- Pricing — billing model.