Pour éviter une clé par éditeur, OpenRouter expose 400+ modèles via un endpoint compatible OpenAI. Ce guide couvre le tableau comparatif, le failover, le code exécutable, six étapes d'intégration, trois chiffres tarifaires et l'hôte Mac Mini cloud KVMNODE pour agents CLI 24/7.
01

Qu'est-ce qu'OpenRouter ? Passerelle LLM unifiée

OpenRouter est une passerelle API unifiée : une clé, un endpoint compatible OpenAI, 400+ modèles. Routage dual model/provider, failover, 25+ modèles gratuits, sans markup token.

01

Prolifération de clés multi-fournisseurs.

02

Fragmentation SDK.

03

Pannes mono-fournisseur.

04

Quota free 50/1000 par jour.

05

Frais 5,5 % sur crédits ; BYOK 1 M/mois.

02

OpenRouter vs API directe

AxeOpenRouterDirect
ClésUnePar éditeur
Latence+10–80 msPlus basse
ConformitéPassage USRégions dédiées

Adapté aux prototypes et A/B multi-modèles. Moins adapté : très gros volumes, API exclusives, latence extrême, exigences de résidence des données.

03

Exemples de code API

Exemples exécutables :

bash · cURL
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": "用一句话解释什么是量子计算" }
    ]
  }'
Python · requests
import requests
import os

response = requests.post(
    url="https://openrouter.ai/api/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "google/gemini-2.5-pro",
        "messages": [
            {"role": "user", "content": "帮我写一个快速排序的 Python 实现"}
        ],
    },
)
print(response.json()["choices"][0]["message"]["content"])
Python · OpenAI SDK
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://kvmnode.com",
        "X-Title": "KVMNODE Blog Demo",
    },
)
print(completion.choices[0].message.content)
JavaScript · OpenAI SDK
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);
JavaScript · Streaming
const stream = await openai.chat.completions.create({
  model: "anthropic/claude-3.5-sonnet",
  messages: [{ role: "user", content: "写一首关于秋天的短诗" }],
  stream: true,
});
for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}
JSON · Fallback routing
{
  "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" }]
}
bash · Models list
curl https://openrouter.ai/api/v1/models \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"
04

Six étapes d'intégration

01

Inscription openrouter.ai

02

Créer une clé API

03

Variable d'environnement

04

Première requête

05

Streaming

06

Chaîne fallback

05

Tarifs, SEO bilingue, KVMNODE production

Trois données citables : pas de markup token, 5,5 % sur crédits / free tier 50/j sans crédit, 1000/j après $10, 20/min / BYOK 1 M req/mois gratuites.

OpenRouter route les modèles ; un hôte macOS 24/7 reste nécessaire pour les agents CLI. KVMNODE Mac Mini cloud — tarifs, commander, aide.