How to Use the OpenRouter API
to Call GPT, Claude & Gemini (2026 Guide)

TL;DR: OpenRouter is a unified LLM API gateway. One API key and one OpenAI-compatible endpoint (https://openrouter.ai/api/v1/chat/completions) give you access to 400+ models from 70+ providers—GPT-4o, Claude 3.5, Gemini, DeepSeek, and more—without juggling separate accounts, SDKs, or billing dashboards.

This guide is for developers building multi-model apps and technical bloggers publishing tutorials in English. You will get a honest OpenRouter vs direct API comparison, a six-step setup path, runnable code in cURL/Python/Node.js, streaming and fallback patterns, pricing breakdown, FAQ, and a bilingual SEO diagnostic for sites where English pages get zero traffic.

01 What Is OpenRouter? Quick Definition for Developers

OpenRouter is an aggregation layer, not a model vendor. Authentication uses Authorization: Bearer $OPENROUTER_API_KEY. The request format matches OpenAI Chat Completions, so existing OpenAI SDK code works after changing base_url and api_key. Models use the provider/model naming scheme—e.g. openai/gpt-4o, anthropic/claude-3.5-sonnet, google/gemini-2.5-pro.

  • Account sprawl: Direct integrations require separate keys, SDKs, and billing portals for OpenAI, Anthropic, Google, Meta, and DeepSeek.
  • No built-in failover: When one provider rate-limits or goes down, your app must implement retries and provider switching yourself.
  • Fragmented cost tracking: Reconciling usage across five dashboards every month is error-prone.

OpenRouter makes two independent routing decisions on every request:

OpenRouter dual-layer routing
Layer Decides Controlled by
Model routing Which model answers model or openrouter/auto
Provider routing Which datacenter serves that model provider object; default price-weighted selection
  • Automatic failover: On rate limits or errors, OpenRouter switches to the next available provider or fallback model via the models array—your app typically never sees a 500.
  • Free tier: 25+ free models; ~50 calls/day without credits; 1,000/day and 20/min after topping up ≥$10.
  • Pricing model: No token markup—provider rates pass through. A 5.5% fee (min $0.80) applies only when buying credits. BYOK mode: first 1M requests/month free, then 5% on equivalent usage.

Verify current behavior against official docs before shipping to production.

https://openrouter.ai/docs

https://openrouter.ai/docs/faq

02 OpenRouter vs Direct API: 5 Reasons to Switch (and When Not To)

  • One key, every model: Swap models by changing one string—no adapter layers per vendor.
  • Built-in failover: Configure models: ["anthropic/claude-3.5-sonnet", "openai/gpt-4o", "google/gemini-2.5-pro"] and let the gateway handle circuit breaking.
  • Unified dashboard: Token spend, latency (TTFT), and throughput in one place.
  • No token markup: Unlike many aggregators, OpenRouter passes provider pricing through; the 5.5% fee hits only credit purchases.
  • Clear sweet spot: Prototyping, multi-model A/B tests, sub-$10k/month workloads, and any agent framework that should run on every frontier model.

When you should NOT use OpenRouter: Single-model workloads at tens of thousands of dollars per month where the 5.5% credit fee exceeds the cost of direct integration; vendor-specific features (Anthropic Prompt Caching, OpenAI Batch/Assistants, Google Vertex tooling); latency-sensitive paths where an extra 10–80ms gateway hop matters; compliance requirements that forbid US third-party routing.

OpenRouter vs direct provider APIs
Factor OpenRouter Direct API
Keys & accounts One key, 400+ models One key per vendor
Migration effort Change base_url + api_key Per-vendor SDK/endpoints
Failover Gateway-native Build yourself
Token pricing Pass-through + 5.5% on credits Official list price
Latency +10–80ms hop Lowest possible
Vendor features Chat Completions subset Batch, caching, Vertex, etc.

Including honest trade-offs builds E-E-A-T and matches how English developers actually search: "OpenRouter vs OpenAI API" and "is OpenRouter worth it" convert better than generic praise.

03 Step-by-Step: Get Your OpenRouter API Key and First Response

  1. Create an account at openrouter.ai via GitHub or email.
  2. Generate an API key under Settings → Keys. Store it as OPENROUTER_API_KEY—never commit it to git.
  3. Top up credits (optional): Free models work without payment. Paid models require credits; ≥$10 unlocks higher free-tier quotas.
  4. Pick a model from the Models page or GET /api/v1/models. Note the provider/model string.
  5. Send your first request to https://openrouter.ai/api/v1/chat/completions and confirm choices[0].message.content returns.
  6. Harden for production: Add HTTP-Referer and X-Title headers; configure a models fallback chain; run agent processes on an always-on macOS host so laptop sleep does not kill long-running jobs.

04 Code Examples: cURL, Python, Node.js, and OpenAI SDK Drop-In

curl-openrouter.sh
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-3.5-sonnet",
    "messages": [
      { "role": "user", "content": "Explain quantum computing in one sentence" }
    ]
  }'
openrouter_openai_sdk.py
from openai import OpenAI
import os

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_API_KEY"],
)

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}],
    extra_headers={
        "HTTP-Referer": "https://calmvps.com",
        "X-Title": "CALMVPS Blog Demo",
    },
)
print(completion.choices[0].message.content)
openrouter_node.mjs
import OpenAI from "openai";

const openai = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
});

const completion = await openai.chat.completions.create({
  model: "deepseek/deepseek-chat",
  messages: [{ role: "user", content: "Explain OpenRouter in one sentence" }],
});
console.log(completion.choices[0].message.content);

Streaming responses:

openrouter_stream.mjs
const stream = await openai.chat.completions.create({
  model: "anthropic/claude-3.5-sonnet",
  messages: [{ role: "user", content: "Write a short poem about autumn" }],
  stream: true,
});
for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}

Model fallback for high availability:

fallback.json
{
  "model": "anthropic/claude-3.5-sonnet",
  "models": [
    "anthropic/claude-3.5-sonnet",
    "openai/gpt-4o",
    "google/gemini-2.5-pro"
  ],
  "route": "fallback",
  "messages": [{ "role": "user", "content": "Hello" }]
}
list-models.sh
curl https://openrouter.ai/api/v1/models \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"

05 OpenRouter Pricing Explained: Free Tier, Credits, and BYOK

  • Endpoint: https://openrouter.ai/api/v1/chat/completions
  • Catalog: 400+ models from 70+ providers
  • Free models: 25+ available; ~50 calls/day without credits; 1,000/day after ≥$10 top-up
  • Credit fee: 5.5% on purchases (minimum $0.80); +5% for crypto payments
  • BYOK: Bring your own provider keys—first 1M requests/month free, then 5% on equivalent usage
  • Gateway latency: Roughly 10–80ms added vs direct provider calls

Per-model token rates live on the OpenRouter Models page and change when providers update pricing.

https://openrouter.ai/models

06 FAQ: Is OpenRouter Free, Safe, and Worth It?

  • Is OpenRouter free? 25+ models are free with rate limits. Paid models bill at provider rates; you pay a 5.5% fee only when buying credits.
  • Does OpenRouter charge a fee on tokens? No markup on token pricing—only on credit purchases.
  • Is OpenRouter worth it? Yes for multi-model apps and failover needs; no for single-vendor high-volume or compliance-sensitive workloads.
  • What models does OpenRouter support? 400+ models—query /api/v1/models for the live list.
  • Is OpenRouter safe? Traffic passes through a US gateway. Use BYOK or direct APIs for sensitive data.
  • OpenRouter vs OpenAI API? OpenRouter is a gateway that can call OpenAI models plus Anthropic, Google, DeepSeek, and others.
  • How does OpenRouter pricing work? Pay-as-you-go token billing at provider rates plus credit-purchase fees; no fixed monthly subscription.
  • OpenRouter Python example? Point the OpenAI SDK at https://openrouter.ai/api/v1 or use raw HTTP POST with requests.

07 Why Your English Pages Get Zero Traffic (and How to Fix It)

If you publish this tutorial on a bilingual blog and English impressions stay at zero, work through these layers in order:

P0 — Crawl and index (highest ROI):

  • CDN/WAF blocking Googlebot: Test with Google Search Console URL Inspection, not just your browser.
  • Missing hreflang: Google may treat English as duplicate of Chinese.
  • robots.txt / noindex mistakes: Ensure /en/ is not disallowed.
  • Sitemap gaps: List each language separately with alternate annotations.
  • CSR empty shells: SPAs without SSR/SSG return blank HTML to crawlers.

P1 — Content (do not translate—rewrite):

  • English users search "OpenRouter vs OpenAI API" and "is OpenRouter worth it," not literal translations of Chinese headlines.
  • Cover query fan-out: what it is, how to use it, pricing, comparisons, safety, and limitations in one article.
  • Add verifiable specifics—real bills, tested latency, version numbers—for E-E-A-T.

English keyword targets: OpenRouter API, OpenRouter tutorial, OpenRouter vs OpenAI API, OpenRouter Python example, OpenRouter OpenAI SDK drop-in replacement, OpenRouter fallback routing, is OpenRouter free.

Technical SEO: Subdirectory URLs (/en/, /zh/), self-referencing canonicals, BlogPosting + FAQPage JSON-LD, separate GSC property filters per language prefix.

Distribution: dev.to, Reddit (r/LocalLLaMA, r/programming), Hacker News, Indie Hackers—not just Chinese platforms where your domain already has links.

08 Launch Checklist, Metrics, and Production Hosting

  • P0 this week: GSC index check for /en/; audit CDN/WAF logs; fix hreflang, canonical, sitemap entries.
  • P1 writing: Independent English and Chinese drafts; embed keywords in title, intro, H2, FAQ; add structured data.
  • P2 distribution: dev.to + community posts; submit sitemaps to GSC and Baidu Webmaster Tools for Chinese URLs.

Track separately by language prefix: GSC impressions and CTR for /en/ vs /zh/—zero impressions means indexing, not ranking, is broken. Monitor bounce rate and read time in Umami, Plausible, or GA4. Spot-check 3–5 core keywords monthly in an incognito US Google session.

OpenRouter solves model routing, but your agent runtime still needs a reliable host. Laptop sleep, Linux VPS without Xcode/Metal, and shared VM contention are common failure modes for Cursor, OpenClaw, and custom agents calling OpenRouter.

For production iOS CI/CD and always-on AI agent automation, CALMVPS bare-metal Mac Mini rental is the stronger foundation: dedicated Apple Silicon, root access, 7×24 uptime, and 120-second provisioning—decouple your gateway from your inference backend and swap models without touching runtime stability.