OpenRouter en une phrase — et pourquoi les équipes s'y tournent

OpenRouter est une passerelle LLM : vous authentifiez vos requêtes avec Authorization: Bearer $OPENROUTER_API_KEY, vous postez sur https://openrouter.ai/api/v1/chat/completions, et vous accédez à GPT, Claude, Gemini, Llama, DeepSeek, Qwen ou Mistral sans ouvrir un compte chez chaque éditeur.

Dans le quotidien d'un développeur Apple Silicon, l'intérêt est opérationnel : le même client OpenAI SDK que vous utilisez déjà pour un prototype Swift ou un backend Node.js suffit — il suffit de remplacer base_url et la clé. Les modèles se nomment fournisseur/modèle, par exemple openai/gpt-4o ou anthropic/claude-3.5-sonnet.

Ce qui distingue OpenRouter d'un simple proxy, ce sont deux décisions de routage indépendantes :

Couche Question résolue Levier
Routage modèleQuel modèle répond à la requêteChamp model, ou openrouter/auto pour une sélection automatique
Routage fournisseurQuel backend sert ce modèleObjet provider ; par défaut, pondération favorisant prix et stabilité

Si le fournisseur principal est saturé ou renvoie une erreur, OpenRouter bascule vers le suivant ou vers le modèle suivant dans votre chaîne models — sans que vous implémentiez vous-même un circuit breaker dans l'application.

Les frictions typiques sans passerelle — création de comptes parallèles, gestion de quotas hétérogènes, rapprochement manuel des factures — sont précisément ce qu'OpenRouter cherche à absorber.

OpenRouter face aux API directes — comment trancher

OpenRouter ne remplace pas les SDK officiels ; il les unifie derrière une interface commune. Le tableau ci-dessous résume les compromis que nous observons le plus souvent en production légère et en phase d'exploration.

Critère OpenRouter API directes
Comptes et clésUn seul Key OpenRouterUn compte par éditeur
Migration SDKModifier base_url et api_keySDK et protocoles parfois divergents
RésilienceBasculer de fournisseur + fallback modèle intégrésRetry et failover à coder
FacturationDashboard unifiéPlusieurs consoles à rapprocher
Prix tokenTarif éditeur sans markup token (selon FAQ)Tarif officiel ; remises enterprise possibles
Frais annexes5,5 % à l'achat de crédits (min. 0,80 $) ; +5 % en cryptoPas de couche intermédiaire
LatenceHop supplémentaire, typiquement 10–80 msChemin le plus court
Fonctions avancéesChat Completions génériquePrompt Caching, Batch API, Assistants, Vertex AI, etc.

Cinq atouts concrets — et les cas où il vaut mieux passer outre

Atout 1 — Un Key, tous les modèles : changer de modèle revient à modifier une chaîne model, pas à réécrire une couche d'adaptation.

Atout 2 — Failover automatique : déclarez une liste models avec route: "fallback" ; OpenRouter enchaîne les tentatives.

Atout 3 — Visibilité consolidée : coûts, TTFT et débit par modèle dans un seul tableau de bord.

Atout 4 — Pas de markup sur les tokens : la FAQ OpenRouter indique une facturation au tarif éditeur ; la marge se concentre sur l'achat de crédits (5,5 %, minimum 0,80 $).

Atout 5 — Cas d'usage nets : prototypage rapide, A/B multi-modèles, applications à volume modéré (quelques milliers de dollars par mois), agents nécessitant une haute disponibilité sans équipe dédiée au routage.

Quand éviter OpenRouter : vous ne consommez qu'un seul modèle à très gros volume (les 5,5 % sur les crédits deviennent significatifs), vous avez besoin de capacités exclusives (Prompt Caching Anthropic, Batch API OpenAI, toolchain Vertex), la latence est critique au millisecond près, ou vos exigences de souveraineté des données interdisent le transit par une passerelle américaine — dans ces scénarios, l'API directe ou le mode BYOK avec vos propres clés reste plus adapté.

Six étapes pour brancher OpenRouter dans votre workflow

Nous recommandons une machine macOS propre — idéalement un Mac mini M4 loué — pour isoler les dépendances Python ou Node.js de votre poste principal.

  1. Créer un compte : inscription sur openrouter.ai via GitHub ou e-mail.
  2. Générer une clé API : Dashboard → Keys ; stocker dans OPENROUTER_API_KEY, jamais dans le dépôt Git.
  3. Créditer le compte (optionnel) : les modèles payants exigent un solde ; frais de 5,5 % à l'achat. Sans crédit, 25+ modèles gratuits restent accessibles avec limites.
  4. Consulter le catalogue : GET /api/v1/models pour les identifiants et tarifs à jour.
  5. Envoyer la première requête : curl ou SDK vers /v1/chat/completions.
  6. Valider streaming et fallback : tester stream: true et le tableau models avant la mise en production.
Lister les modèles
curl https://openrouter.ai/api/v1/models \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"
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": "Explique l'informatique quantique en une phrase." }
    ]
  }'
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": "Écris un tri rapide en Python."}
        ],
    },
)
print(response.json()["choices"][0]["message"]["content"])
Python — SDK OpenAI
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://your-app-domain.com",
        "X-Title": "My App",
    },
)
print(completion.choices[0].message.content)
Node.js — SDK OpenAI
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
const stream = await openai.chat.completions.create({
  model: "anthropic/claude-3.5-sonnet",
  messages: [{ role: "user", content: "Écris un court poème sur l'automne." }],
  stream: true,
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}
Chaîne de fallback
{
  "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" }]
}

Free tier, BYOK et tarification — ce qu'il faut retenir

  • Modèles gratuits : plus de 25 modèles free (Llama, Gemma, DeepSeek, etc.). Compte non crédité : environ 50 requêtes/jour ; à partir de 10 $ de crédits : environ 1 000/jour, 20/minute.
  • BYOK : apportez vos clés éditeur — 1 million de requêtes/mois sans frais de service OpenRouter, puis 5 % sur la part excédentaire.
  • Tokens : tarif éditeur sans markup selon la FAQ ; frais à l'achat de crédits 5,5 % (min. 0,80 $), +5 % en cryptomonnaie.
  • Contrôle des coûts : le Dashboard détaille prix prompt/completion et consommation réelle — indispensable lors d'A/B tests parallèles.

Les paliers gratuits, la liste des modèles et les frais évoluent — référez-vous aux sources officielles plutôt qu'à ce résumé.

OpenRouter — documentation officielle

OpenRouter — FAQ tarifs et BYOK

OpenRouter — mécanisme de Provider Routing

FAQ

OpenRouter est-il payant ?

Plus de 25 modèles gratuits avec quotas. Les modèles payants sont facturés au tarif éditeur ; OpenRouter n'applique pas de markup token selon la FAQ, mais prélève 5,5 % à l'achat de crédits (min. 0,80 $).

Quels modèles sont disponibles ?

70+ fournisseurs, 400+ modèles — GPT-4o, Claude 3.5 Sonnet, Gemini 2.5 Pro, DeepSeek, Llama, Qwen, Mistral, etc. Liste live via GET /api/v1/models.

OpenRouter ou Claude en direct ?

Claude seul, latence minimale et Prompt Caching : API Anthropic. Multi-modèles, facture unique et fallback : OpenRouter.

Les données transitent-elles en sécurité ?

Les requêtes passent par la passerelle OpenRouter avant d'atteindre l'éditeur cible. Pour des contraintes strictes de résidence ou de conformité, évaluez l'API directe ou le BYOK avec des clés restreintes.

Comment appeler OpenRouter depuis Python ?

Via requests sur l'endpoint chat completions, ou via le SDK OpenAI en changeant base_url et la clé.

À quoi sert le mode BYOK ?

Vous conservez vos clés éditeur existantes : 1 M requêtes/mois sans commission OpenRouter, puis 5 % au-delà — pertinent si vous avez déjà des accords enterprise.

OpenRouter rationalise l'accès aux modèles, pas votre environnement local : conflits de virtualenv, agents à moitié codés et processus oubliés en arrière-plan finissent par encrasser la machine principale. Pour enchaîner les essais multi-modèles, un prototype Next.js ou un agent longue durée, une machine Apple Silicon dédiée — louée à la journée, réinitialisable à volonté — offre la même tranquillité d'esprit qu'un runner CI propre. Nous avons documenté cette approche dans notre guide de test Kimi K3 et notre guide runner CI Xcode ; l'intégration OpenRouter s'inscrit dans la même logique de machine jetable et maîtrisée.

Intégrez vos modèles sur du vrai Apple Silicon

Lancez un Mac mini M4 à la journée, branchez vos scripts OpenRouter en SSH, puis résiliez — sans laisser de dépendances sur votre poste principal.

Mac Mini M4 · 16GB / 256GB
Journalier$19.3 /jour
Hebdomadaire$52.2 /sem.
Mensuel$96.7 /mois
Trimestriel$263 /trim.