Model Slugs and Naming Conventions on OpenRouter
OpenRouter model ids are strings, not free-form marketing names.
If you misread the slug grammar, you get 400s, wrong models, or silent quality regressions from the wrong variant.
How to Use This Cheatsheet
- Keep this page open while wiring
modelfields and config maps. - Treat every concrete slug as verify at build against openrouter.ai/models or
GET /api/v1/models. - Prefer copying slugs from the catalog UI rather than inventing them from memory.
- Log both the requested slug and the response
modelafter fallbacks or auto-routing.
Anatomy of a Slug
[router-or-author]/[model-name][:variant]| Piece | Meaning | Examples (illustrative; verify at build) |
|---|---|---|
| Author / org | Catalog owner namespace | openai, anthropic, google, meta-llama, deepseek, openrouter |
| Model name | Specific model id | gpt-4o-mini, claude-sonnet-4.5, gemini-2.5-flash |
| Variant suffix | Routing or capability shortcut | :nitro, :floor, :free, :online, :thinking, :extended, :exacto |
| Router slug | Special model that selects others | openrouter/auto, free-model routers (see docs) |
| Latest alias | Moving target for a family | forms like ~openai/gpt-latest (verify syntax at build) |
Full slug examples:
| Slug pattern | Reads as |
|---|---|
openai/gpt-4o-mini | OpenAI GPT-4o mini via OpenRouter catalog |
anthropic/claude-sonnet-4.5 | Anthropic Claude Sonnet release line |
meta-llama/llama-3.3-70b-instruct | Meta Llama instruct checkpoint |
openrouter/auto | Auto Router selects a model per prompt |
meta-llama/llama-3.3-70b-instruct:nitro | Same model, prefer high-throughput providers |
meta-llama/llama-3.3-70b-instruct:floor | Same model, prefer lowest price providers |
Variant Suffix Cheatsheet
| Suffix | Intent | Rough equivalent | Notes |
|---|---|---|---|
:nitro | Speed / throughput | provider.sort = "throughput" | Good for chat UX |
:floor | Lowest price | provider.sort = "price" | Good for batch |
:free | Free endpoints when available | free catalog filter | Strict rate limits; verify availability |
:online | Web-grounded variant | online plugin / search routing | Not every model supports it |
:thinking | Extended reasoning style | reasoning-enabled routing | Model-dependent |
:extended | Extended context variant | longer context endpoints | Check actual window |
:exacto | Quality-first tool-call routing | exacto provider preference | Useful for tool-heavy agents |
Suffixes compose only when documented.
Do not invent chains like :nitro:floor unless the catalog shows them.
Provider Slugs vs Model Slugs
These are different namespaces.
| Kind | Where used | Example |
|---|---|---|
| Model slug | model / models fields | anthropic/claude-sonnet-4.5 |
| Provider slug | provider.order, only, ignore | anthropic, openai, azure, together, deepinfra/turbo |
Base provider slugs often match all regions/variants for that host.
Full endpoint slugs (for example deepinfra/turbo or google-vertex/us-east5) pin a specific endpoint - verify current endpoint names at build.
Common Author Prefixes
| Prefix | Typical models | Agent notes |
|---|---|---|
openai/ | GPT family | Strong tool ecosystem familiarity |
anthropic/ | Claude family | Strong long-context / coding profiles (verify) |
google/ | Gemini family | Multimodal options vary by slug |
meta-llama/ | Llama instruct | Often multi-provider hosted |
deepseek/ | DeepSeek lines | Check tool and reasoning support |
mistralai/ | Mistral lines | Watch context and tool support |
openrouter/ | Routers and meta models | auto and related routers |
This table is a map of namespaces, not a quality ranking.
Routers and Special Slugs
| Slug / feature | Role | When to use |
|---|---|---|
openrouter/auto | Per-prompt model selection | Mixed unknown prompts |
| Free models router | Route among free endpoints | Zero-cost experiments (limits apply) |
Latest aliases (~... forms) | Track newest family member | Avoid manual renames; accept drift |
| Presets (product feature) | Named server-side configs | Shared org defaults (verify at build) |
Always read response model when using routers or aliases.
JSON Shape Reminder
{
"model": "anthropic/claude-sonnet-4.5",
"models": ["openai/gpt-4o-mini", "google/gemini-2.5-flash"],
"provider": {
"order": ["anthropic", "amazon-bedrock"],
"allow_fallbacks": true,
"ignore": ["deepinfra"]
}
}model/modelstake model slugs.provider.*lists take provider slugs.- Mixing them up is a frequent 400 source.
Discovery Commands
# List catalog (paginate / filter as needed; verify endpoint at build)
curl -s https://openrouter.ai/api/v1/models \
-H "Authorization: Bearer $OPENROUTER_API_KEY" | headimport os, httpx
r = httpx.get(
"https://openrouter.ai/api/v1/models",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
timeout=30.0,
)
r.raise_for_status()
ids = [m["id"] for m in r.json().get("data", [])]
print(len(ids), "models")
print([i for i in ids if i.startswith("anthropic/")][:5])Mistakes to Avoid
| Mistake | Why it hurts |
|---|---|
| Using UI display names as API ids | Display names are not slugs |
| Dropping the author prefix | Ambiguous / invalid model |
| Hardcoding obsolete version numbers forever | Breaks when catalog renames |
Assuming :free means unlimited | Rate and availability limits apply |
Copying a provider slug into model | Wrong field namespace |
Ignoring response model after :auto | You do not know what you paid for |
FAQs
Where is the source of truth for slugs?
The live OpenRouter models catalog and the models API.
Blog posts and older tutorials go stale.
Are slugs case-sensitive?
Treat them as case-sensitive exact strings.
Copy from the catalog.
Do fine-tunes or private models use the same pattern?
Private/BYO model features use documented scoping rules.
Follow the private models guide for your account type (verify at build).
Is `gpt-4o-mini` without `openai/` ever valid?
Do not rely on bare ids.
Use the full catalog slug OpenRouter lists.
How do multi-model fallbacks list slugs?
As an ordered array of full model slugs in models (plus a primary model depending on SDK examples).
Can variants appear on router slugs?
Prefer documented combinations only.
When unsure, set provider explicitly instead of stacking suffixes.
Why does the response model differ from the request?
Fallbacks, auto-router, or latest-alias resolution selected a different concrete model.
How should config files store slugs?
As plain strings under logical policy names (planner, fast, cheap), not raw literals at every call site.
Do embeddings models share the same author/model form?
Yes, catalog style is similar, but use embeddings endpoints rather than chat completions.
How often do slugs change?
New versions appear frequently.
Pin versions for production agents; use latest aliases only where drift is acceptable.
What about modality suffixes or vision models?
Vision/audio capable models still use author/model slugs; capability is a property of the model card, not always the string shape.
Is OpenRouter's author prefix ever `openrouter/` for normal chat models?
Yes for routers and some meta offerings.
Most third-party models keep their own author prefix.
Related
- OpenRouter Setup & Routing Basics - first call with a slug
- How Model Routing Actually Works Under an OpenRouter Request - model vs provider layers
- Auto-Router: Letting OpenRouter Pick the Best Model for a Prompt -
openrouter/auto - Switching Models by Config, Not Code: A Routing Pattern - map logical names to slugs
- Troubleshooting Common OpenRouter Setup Errors - invalid model symptoms
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.