OpenRouter API : guide complet pour appeler GPT, Claude et Gemini (2026)

Une seule clé API, un endpoint compatible OpenAI, plus de 400 modèles chez 70+ fournisseurs : ce guide couvre le routage, le fallback, le BYOK, les exemples curl/Python/Node et un runbook production sur Mac cloud NUKCLOUD.

Votre équipe accumule les clés OpenAI, Anthropic et Google, trois SDK et autant de tableaux de facturation — puis un agent en production tombe parce qu'un modèle est saturé. OpenRouter unifie l'accès via https://openrouter.ai/api/v1/chat/completions avec la convention fournisseur/modèle. Ce guide s'adresse aux développeurs et tech leads qui veulent (1) comprendre le routage et la tarification réelle, (2) copier des exemples prêts pour curl, Python et Node, (3) déployer des agents persistants sur un nœud Mac cloud NUKCLOUD. Complétez avec le classement CLI OpenRouter et les parts de tokens hebdo.

00Qu'est-ce qu'OpenRouter ?

OpenRouter est une passerelle LLM unifiée : un compte, une clé sk-or-..., un endpoint REST compatible OpenAI. Vous appelez openai/gpt-5.6-sol, anthropic/claude-sonnet-5 ou google/gemini-2.5-pro sans changer de client HTTP. La plateforme route plus de 100 billions de tokens par mois (juin 2026) et agrège 70+ fournisseurs et 400+ modèles — voir aussi notre analyse des tendances LLM OpenRouter.

Le nommage suit toujours vendor/model-id. Les en-têtes HTTP recommandés incluent HTTP-Referer et X-Title pour le classement apps ; le corps JSON reprend le schéma OpenAI (messages, stream, max_tokens). Pour lister les modèles disponibles : GET /api/v1/models.

PainCoûts cachés du multi-fournisseur

  • Fragmentation des clés : rotation, quotas et alertes budget triplés ; un agent oublié peut vider une clé Anthropic pendant qu'OpenAI reste inutilisée.
  • Fallback artisanal : scripts maison qui basculent entre endpoints — sans SLA unifié ni journalisation centralisée des erreurs 429/503.
  • Surprise de latence : chaque saut proxy ajoute typiquement 10–80 ms ; acceptable pour agents batch, problématique pour chat vocal temps réel.
  • Conformité floue : données qui traversent un agrégateur US alors que le contrat exige un DPA direct avec un seul fournisseur.
  • Hôte instable : gateway Hermes ou Claude Code sur VPS macOS mutualisé — jitter réseau, surbooking CPU et coupures de longues connexions SSE qui tuent les sessions agent avant un mauvais modèle.

01Routage modèle vs fournisseur

OpenRouter propose deux stratégies de routage. Le choix impacte coût, latence et résilience.

DimensionModel RoutingProvider Routing
LogiqueVous fixez model ; OpenRouter choisit le fournisseur le moins cher ou le plus rapide pour ce modèleVous ciblez un fournisseur (provider ou préfixe) ; bascule entre modèles du même éditeur
Cas d'usageAppels GPT-5.6 ou Claude Sonnet 5 avec fallback automatiqueConformité « tout reste chez Anthropic » ou facturation consolidée
FallbackListe models: ["a", "b", "c"] dans le corps ou via paramètre dédiéChaîne de modèles du même vendor en cas de rate limit
Latence typique+10–50 ms vs API directe+15–80 ms selon région du provider
Tarification tokenPrix affiché = tarif fournisseur, sans markup tokenIdem ; crédits prépayés + 5,5 % frais de recharge

Modèles gratuits : plus de 25 modèles en accès gratuit — 50 requêtes/jour sans crédit, puis 1 000/jour après recharge de 10 $. Idéal pour prototypage ; pas pour production agent 7×24.

02Cinq avantages et limites

  • Un seul SDK : migrez en changeant base_url et model — zéro fork client.
  • Fallback natif : chaînes multi-modèles sans orchestrateur maison.
  • BYOK sans markup token : branchez vos clés OpenAI/Anthropic/Google — 1 M req/mois gratuites côté plateforme.
  • Visibilité marché : classements apps et modèles pour calibrer stack et budget — aligné avec nos bilans parts modèles juin 2026.
  • Expérimentation rapide : tester Kimi K3, DeepSeek V4 ou Grok 4.5 en une ligne sans nouveau compte.
Quand ne pas utiliser OpenRouter : latence sub-50 ms critique, volumes entreprise avec remises directes négociées, conformité imposant un contrat unique sans intermédiaire, ou besoin de fonctionnalités propriétaires (OpenAI Assistants v2, Anthropic Citations API, Vertex AI Grounding). Dans ces cas, API directe + hôte dédié reste la voie.

03Démarrage en trois étapes

  1. A
    Créer un compte sur openrouter.ai, générer une clé API, optionnellement activer BYOK pour vos clés fournisseurs.
  2. B
    Exporter OPENROUTER_API_KEY=sk-or-... dans l'environnement du nœud (Mac local ou cloud).
  3. C
    Tester un appel curl (section code) puis brancher votre SDK existant sur https://openrouter.ai/api/v1.

04Exemples de code

curl — chat completion :

bash
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "HTTP-Referer: https://votredomaine.com" \
  -H "X-Title: Mon Agent" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{"role": "user", "content": "Explique le routage OpenRouter en 3 phrases."}]
  }'

Python — requests :

python
import os, requests
r = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
        "HTTP-Referer": "https://votredomaine.com",
    },
    json={
        "model": "openai/gpt-5.6-sol",
        "messages": [{"role": "user", "content": "Hello"}],
    },
    timeout=120,
)
print(r.json()["choices"][0]["message"]["content"])

Python — SDK OpenAI :

python
from openai import OpenAI
client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_API_KEY"],
)
resp = client.chat.completions.create(
    model="google/gemini-2.5-pro",
    messages=[{"role": "user", "content": "Résume en français."}],
)
print(resp.choices[0].message.content)

Node — SDK OpenAI :

javascript
import OpenAI from "openai";
const client = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
});
const completion = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{ role: "user", content: "Bonjour" }],
});
console.log(completion.choices[0].message.content);

Streaming (Node) :

javascript
const stream = await client.chat.completions.create({
  model: "openai/gpt-5.6-sol",
  messages: [{ role: "user", content: "Stream test" }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Fallback multi-modèles :

json
{
  "models": [
    "anthropic/claude-sonnet-5",
    "openai/gpt-5.6-sol",
    "google/gemini-2.5-pro"
  ],
  "messages": [{"role": "user", "content": "Tâche critique"}],
  "route": "fallback"
}

Lister les modèles :

bash
curl -s https://openrouter.ai/api/v1/models \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" | jq '.data[:5]'

05BYOK, crédits et observabilité

En mode Bring Your Own Key, OpenRouter relaie vos clés directes : pas de markup token, quota gratuit de 1 million de requêtes/mois sur la plateforme. Les crédits prépayés OpenRouter facturent le tarif affiché du modèle plus 5,5 % à l'achat de crédits — pas de surcoût caché par token consommé.

  • Point 1 : activez les alertes budget dans la console avant de lancer un agent Hermes 7×24.
  • Point 2 : journalisez model, provider, tokens et latence côté client — OpenRouter expose un ID de génération pour le support.
  • Point 3 : pour Claude Code ou Cursor, configurez OPENROUTER_API_KEY et la base URL dans les paramètres IDE — voir le guide Agent Skills.

06Diagnostic trafic multilingue faible

Si votre documentation OpenRouter ou votre blog technique peine en anglais ou en français malgré un bon contenu zh, vérifiez cette checklist :

  • Search Console : pages indexées par locale, requêtes réelles vs impressions, erreurs d'exploration.
  • CDN / WAF : blocage géographique ou bot filter sur /en/ ou /fr/.
  • hreflang : matrice cohérente sur la page index blog, pas sur chaque article détail (convention NUKCLOUD).
  • Traduction automatique : contenu dupliqué ou qualité linguistique pénalisée — réécrire, ne pas traduire mot à mot.
  • Backlinks : ancres en langue cible depuis docs dev, GitHub README et communautés (Dev.to, Hacker News Show).

07Stratégie SEO bilingue

SignalMarché chinois (zh)Marché anglais / français
Mots-clésOpenRouter 教程, 大模型 API 聚合OpenRouter API guide, GPT Claude Gemini one key
TitleAnnée + 保姆级 + modèles listésHow to + modèles + (2026 Guide)
Meta70–80 caractères, 2 mots-clés, runbook120–160 caractères, bénéfice + étapes
CorpsTableaux comparatifs, prix en $Paragraphes courts, une idée par phrase
LocalisationCas WeChat / docs CNCas GDPR, liens openrouter.ai/apps

Règle d'or : localiser l'intention de recherche, pas traduire la structure zh mot pour mot. Chaque locale NUKCLOUD possède son propre blog-data.js et ses slugs identiques mais titres natifs.

08Technique : canonical, sitemap, schema

  • URL : https://nukcloud.com/{lang}/blog/{slug}.html — slug identique sur les 8 langues.
  • Canonical : auto-référent sur chaque détail ; pas de hreflang sur les articles (liste index uniquement).
  • Sitemap : régénérer via le script projet après publication ; soumettre dans GSC par propriété.
  • Schema : BlogPosting + FAQPage embarqué dans mainEntity — comme cet article.
  • IndexNow : pousser les nouvelles URLs pour Bing/Yandex selon le runbook site.

09Distribution et métriques

CanalPrioritéAction
GitHub README / docsP0Snippet curl + lien vers cet article
Dev.to / Medium EN-FRP0Version abrégée avec canonical vers nukcloud.com
Newsletter produitP1Segment dev vs achats
Discord OpenRouter / r/LocalLLaMAP1Répondre aux threads API, pas spam
LinkedIn tech FRP2Infographie routage vs fallback
YouTube walkthroughP26 min : clé → curl → SDK → Mac cloud

Métriques à suivre (30 jours) : impressions GSC par locale, CTR title, temps sur page > 4 min, clics vers tarifs et commander, inscriptions console corrélées UTM ?utm_source=blog&utm_campaign=openrouter-api.

10Runbook production en six étapes

  1. 01
    Compte et clés : créer le compte OpenRouter, générer sk-or-..., configurer BYOK si vous avez déjà des crédits OpenAI/Anthropic, plafond budget à 80 % du seuil alerte.
  2. 02
    Smoke test local : curl + SDK OpenAI sur votre poste ; valider streaming et fallback JSON avec trois modèles.
  3. 03
    Provisionner le nœud : console NUKCLOUD — Mac mini M4 32 Go+ pour agents parallèles ; région proche de votre registry Git.
  4. 04
    Baseline SSH : brew install node python@3.12, secrets dans ~/.zshrc, tester latence vers openrouter.ai (< 100 ms depuis le nœud).
  5. 05
    Gateway agent : launchd pour Hermes / Claude Code / service maison ; prompts récurrents en SKILL.md — voir install Hermes.
  6. 06
    Revue bihebdomadaire : coût OpenRouter vs nœud, P95 latence, board apps ; ajuster chaîne fallback et spec RAM sur tarifs.

Les pools macOS mutualisés échangent un démarrage rapide contre jitter bande passante, surbooking et resets de longues connexions SSE — fatal quand un agent enchaîne des milliers d'appels outils. Pour des gateways OpenRouter 7×24 auditable, les nœuds Mac bare-metal multi-régions NUKCLOUD offrent frontière locataire, Seatbelt et RAM unifiée prévisibles — test horaire sur commander, puis engagement mensuel.

11Questions fréquentes

OpenRouter est-il compatible avec le SDK OpenAI ?
Oui. Définissez base_url=https://openrouter.ai/api/v1 et votre clé sk-or-.... Chat, streaming et list models fonctionnent sans réécrire le client Python ou Node.
Y a-t-il une marge sur les tokens ?
Non sur le tarif token affiché. Les crédits prépayés incluent environ 5,5 % de frais à l'achat. En BYOK : jusqu'à 1 M req/mois sans frais plateforme sur vos clés directes.
Quels modèles gratuits pour tester ?
Plus de 25 modèles : 50 req/jour sans crédit, 1 000/jour après recharge de 10 $. Suffisant pour POC ; production agent nécessite crédits ou BYOK.
Quand éviter OpenRouter ?
Latence ultra-faible sans proxy, volumes avec remises entreprise directes, conformité DPA mono-fournisseur, ou APIs propriétaires non exposées (Assistants OpenAI, etc.).
Où héberger les agents en production ?
Sur un nœud Mac cloud dédié NUKCLOUD : launchd, caches locaux, Seatbelt pour Claude Code — évite les coupures SSE des VPS partagés. Entrée : commander, specs : tarifs.