OpenRouter — Unified LLM API Gateway
You are an expert in OpenRouter, the unified API gateway for accessing 200+ LLMs through a single OpenAI-compatible endpoint. You help developers route requests to GPT-4o, Claude, Gemini, Llama, Mistral, and other models with automatic fallbacks, cost tracking, rate limiting, and model comparison — enabling multi-model strategies without managing multiple API keys and SDKs.
Core Capabilities
OpenAI-Compatible API
import OpenAI from "openai";
const openai = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
defaultHeaders: {
"HTTP-Referer": "https://myapp.com", // Required for ranking
"X-Title": "My App", // Shows in OpenRouter dashboard
},
});
// Use any model with OpenAI SDK
const response = await openai.chat.completions.create({
model: "anthropic/claude-sonnet-4-20250514", // Or: "openai/gpt-4o", "google/gemini-2.0-flash"
messages: [{ role: "user", content: "Hello!" }],
});
// Streaming
const stream = await openai.chat.completions.create({
model: "openai/gpt-4o",
messages: [{ role: "user", content: "Write a poem" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
// Auto-routing: let OpenRouter pick the best model
const autoResponse = await openai.chat.completions.create({
model: "openrouter/auto", // Routes to best model for the task
messages: [{ role: "user", content: "Complex reasoning task..." }],
});
// Cost-optimized routing
const cheapResponse = await openai.chat.completions.create({
model: "openrouter/auto",
route: "fallback", // Try cheapest first, fall back to better
models: ["openai/gpt-4o-mini", "anthropic/claude-sonnet-4-20250514", "openai/gpt-4o"],
messages: [{ role: "user", content: "Simple task" }],
});
Model Comparison
// Compare models side-by-side
const models = [
"openai/gpt-4o",
"anthropic/claude-sonnet-4-20250514",
"google/gemini-2.0-flash",
"meta-llama/llama-3.1-70b-instruct",
];
const results = await Promise.all(
models.map(async (model) => {
const start = Date.now();
const response = await openai.chat.completions.create({
model,
messages: [{ role: "user", content: testPrompt }],
max_tokens: 500,
});
return {
model,
latency: Date.now() - start,
tokens: response.usage,
cost: response.usage?.total_tokens, // OpenRouter returns cost info
output: response.choices[0].message.content,
};
}),
);
With Vercel AI SDK
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
import { generateText } from "ai";
const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });
const { text } = await generateText({
model: openrouter("anthropic/claude-sonnet-4-20250514"),
prompt: "Explain quantum computing",
});
Installation
npm install openai # Use OpenAI SDK
# Or: npm install @openrouter/ai-sdk-provider # For Vercel AI SDK
Best Practices
- One API, all models — Single API key for GPT-4o, Claude, Gemini, Llama, Mistral; no vendor lock-in
- Fallback routing — Configure model fallbacks; if primary is down or overloaded, auto-switch to backup
- Cost tracking — OpenRouter dashboard shows per-model costs; optimize spend by routing simple tasks to cheap models
- OpenAI SDK compatible — Just change
baseURL and apiKey; all OpenAI SDK features work (tools, streaming, JSON mode)
- Free models — Some models available for free (rate-limited); great for prototyping
- Auto routing — Use
openrouter/auto to let the system pick the best model based on task complexity
- Provider preferences — Set model priorities and fallbacks; optimize for cost, speed, or quality
- Usage limits — Set per-key spending limits in dashboard; prevent runaway costs in production
1---2name: openrouter3description: You are an expert in OpenRouter, the unified API gateway for accessing 200+ LLMs through a single OpenAI-compatible endpoint. You help developers route requests to GPT-4o, Claude, Gemini, Llama, Mistral, and other models with automatic fallbacks, cost tracking, rate limiting, and model comparison — enabling multi-model strategies without managing multiple API keys and SDKs.4license: Apache-2.05---67# OpenRouter — Unified LLM API Gateway89You are an expert in OpenRouter, the unified API gateway for accessing 200+ LLMs through a single OpenAI-compatible endpoint. You help developers route requests to GPT-4o, Claude, Gemini, Llama, Mistral, and other models with automatic fallbacks, cost tracking, rate limiting, and model comparison — enabling multi-model strategies without managing multiple API keys and SDKs.1011## Core Capabilities1213### OpenAI-Compatible API1415```typescript16import OpenAI from "openai";1718const openai = new OpenAI({19 baseURL: "https://openrouter.ai/api/v1",20 apiKey: process.env.OPENROUTER_API_KEY,21 defaultHeaders: {22 "HTTP-Referer": "https://myapp.com", // Required for ranking23 "X-Title": "My App", // Shows in OpenRouter dashboard24 },25});2627// Use any model with OpenAI SDK28const response = await openai.chat.completions.create({29 model: "anthropic/claude-sonnet-4-20250514", // Or: "openai/gpt-4o", "google/gemini-2.0-flash"30 messages: [{ role: "user", content: "Hello!" }],31});3233// Streaming34const stream = await openai.chat.completions.create({35 model: "openai/gpt-4o",36 messages: [{ role: "user", content: "Write a poem" }],37 stream: true,38});39for await (const chunk of stream) {40 process.stdout.write(chunk.choices[0]?.delta?.content || "");41}4243// Auto-routing: let OpenRouter pick the best model44const autoResponse = await openai.chat.completions.create({45 model: "openrouter/auto", // Routes to best model for the task46 messages: [{ role: "user", content: "Complex reasoning task..." }],47});4849// Cost-optimized routing50const cheapResponse = await openai.chat.completions.create({51 model: "openrouter/auto",52 route: "fallback", // Try cheapest first, fall back to better53 models: ["openai/gpt-4o-mini", "anthropic/claude-sonnet-4-20250514", "openai/gpt-4o"],54 messages: [{ role: "user", content: "Simple task" }],55});56```5758### Model Comparison5960```typescript61// Compare models side-by-side62const models = [63 "openai/gpt-4o",64 "anthropic/claude-sonnet-4-20250514",65 "google/gemini-2.0-flash",66 "meta-llama/llama-3.1-70b-instruct",67];6869const results = await Promise.all(70 models.map(async (model) => {71 const start = Date.now();72 const response = await openai.chat.completions.create({73 model,74 messages: [{ role: "user", content: testPrompt }],75 max_tokens: 500,76 });77 return {78 model,79 latency: Date.now() - start,80 tokens: response.usage,81 cost: response.usage?.total_tokens, // OpenRouter returns cost info82 output: response.choices[0].message.content,83 };84 }),85);86```8788### With Vercel AI SDK8990```typescript91import { createOpenRouter } from "@openrouter/ai-sdk-provider";92import { generateText } from "ai";9394const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });9596const { text } = await generateText({97 model: openrouter("anthropic/claude-sonnet-4-20250514"),98 prompt: "Explain quantum computing",99});100```101102## Installation103104```bash105npm install openai # Use OpenAI SDK106# Or: npm install @openrouter/ai-sdk-provider # For Vercel AI SDK107```108109## Best Practices1101111. **One API, all models** — Single API key for GPT-4o, Claude, Gemini, Llama, Mistral; no vendor lock-in1122. **Fallback routing** — Configure model fallbacks; if primary is down or overloaded, auto-switch to backup1133. **Cost tracking** — OpenRouter dashboard shows per-model costs; optimize spend by routing simple tasks to cheap models1144. **OpenAI SDK compatible** — Just change `baseURL` and `apiKey`; all OpenAI SDK features work (tools, streaming, JSON mode)1155. **Free models** — Some models available for free (rate-limited); great for prototyping1166. **Auto routing** — Use `openrouter/auto` to let the system pick the best model based on task complexity1177. **Provider preferences** — Set model priorities and fallbacks; optimize for cost, speed, or quality1188. **Usage limits** — Set per-key spending limits in dashboard; prevent runaway costs in production