
One API Key, 500+ Models, Automatic Fallback: Getting Started with OpenRouter
Chris Harper
2 min read
Aug 5, 2026 · 20:05 UTC
One OpenRouter key + one endpoint = access to 500+ models across 70+ providers — define a fallback chain so your app stays live when any model or provider goes down.
What you'll be able to do after this:
- Call Claude, GPT-4.1, Gemini, Llama, Mistral, and hundreds more from a single
openrouter.ai/api/v1endpoint using your existing OpenAI SDK - Define a fallback chain in the request body so your app stays up when a model hits a rate limit or outage
- Route to the fastest available provider using the
:nitrosuffix — no extra code
Start here: Accessing Multiple AI Models With the OpenRouter API — Real Python (June 2026) — full walkthrough from setup to intelligent routing.
Why OpenRouter
Three providers means three SDK configs, three billing accounts, and three error handlers. OpenRouter collapses it to one. The API is OpenAI-compatible, so switching is one base_url change in your existing code.
Setup
pip install openai
export OPENROUTER_API_KEY="sk-or-..."
Basic call
from openai import OpenAI
import os
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4-6",
messages=[{"role": "user", "content": "Explain LoRA in one sentence."}],
)
print(response.choices[0].message.content)
Swap model to openai/gpt-4.1, google/gemini-3.5-flash, or any of the 500+ slugs at openrouter.ai/models. No other changes.
Fallback chains
Pass a models array in priority order:
response = client.chat.completions.create(
extra_body={
"models": [
"anthropic/claude-sonnet-4-6", # primary
"openai/gpt-4.1", # if Claude rate-limits or is down
"google/gemini-3.5-flash", # last resort
]
},
messages=[{"role": "user", "content": "..."}],
)
OpenRouter triggers the next model automatically on context-length errors, moderation flags, rate limits, or provider downtime — no retry logic needed in your code.
Speed routing
Append :nitro to any model slug to route to the fastest available provider serving it:
model="anthropic/claude-haiku-4-5:nitro"
The provider switches invisibly; your code stays the same.
Sources: How OpenRouter Model Routing Works — OpenRouter Blog · Complete Python guide — Real Python · Video tutorial — Real Python on YouTube