Accueil → Aide

Claude Code et Codex ont besoin de base URL différentes sur la même passerelle

Les clients de style Anthropic (Claude Code, le SDK Anthropic) ajoutent eux-mêmes /v1/messages, donc leur base URL doit s'arrêter à l'hôte. Les clients de style OpenAI (Codex, le SDK OpenAI, Cursor, Cline) n'ajoutent rien, donc la leur doit se terminer par /v1.

Ce que vous voyez

Pourquoi cela arrive

Deux lignées de SDK, deux conventions, un seul nom d'hôte de passerelle. Aucun client n'a tort ; ils ne s'accordent simplement pas sur qui possède le segment /v1. Les inverser donne soit /v1/v1/…, soit un chemin sans version.

Le 404 qui en résulte est particulièrement difficile à déboguer, car souvent il n'atteint jamais l'API. Une passerelle qui sert son site sur le même domaine répond aux chemins inconnus avec la page commerciale : HTTP 200, Content-Type: text/html. Le client tente alors d'analyser du HTML comme du JSON et signale une erreur de syntaxe qui ne pointe nulle part près de la vraie cause.

Cela signifie aussi que l'échec ne laisse aucune trace côté fournisseur. Le support dira qu'il ne voit aucune requête de votre clé, et il dira vrai : la requête a reçu la réponse d'un serveur web avant même de devenir un appel d'API.

Vérifiez si c'est bien la cause

Demandez le type de contenu plutôt que de lire le corps : une commande suffit à trancher :

curl -s -o /dev/null -w '%{http_code} %{content_type}\n' \
  -X POST 'YOUR_BASE_URL/chat/completions' \
  -H 'Authorization: Bearer YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"model":"YOUR_MODEL","messages":[{"role":"user","content":"hi"}]}'

application/json signifie que l'URL est correcte : même une mauvaise clé répond en JSON. text/html signifie que vous parlez à un site web et que le problème vient de la base URL.

Comment le corriger

  1. Décidez selon la lignée du SDK, pas selon le nom du produitTout ce qui est construit sur le SDK Anthropic veut l'hôte seul ; tout ce qui est compatible OpenAI veut /v1. Les nouveaux outils entrent dans l'une des deux catégories sans instructions propres.
  2. Retirez la barre oblique finaleCertains clients assemblent les chemins naïvement, et une base URL terminée par / peut produire une double barre qui mène au site au lieu de l'API.
  3. Vérifiez le type de contenu avant la cléUne réponse HTML signifie que la requête n'a jamais atteint l'API. Changer de clé à ce stade ne change rien et coûte un après-midi.
  4. Utilisez d'abord les exemples du fournisseur tels quelsFaites fonctionner une configuration connue, puis changez une chose à la fois. La plupart des échecs de configuration sont deux erreurs à la fois.
ClientLa base URL doit
Claude Codeêtre l'hôte seul, sans /v1
Anthropic SDKêtre l'hôte seul : le SDK ajoute /v1/messages
Codexse terminer par /v1
OpenAI SDK (Python, Node, Go)se terminer par /v1
Cursor, Cline, Roo Codese terminer par /v1
Cherry Studio, Chatbox, LobeChatse terminer par /v1
Sur APICLAN : https://apiclan.us pour Claude Code et le SDK Anthropic, https://apiclan.us/v1 pour Codex et tout ce qui est compatible OpenAI. Les configurations prêtes à copier pour chaque client sont dans le démarrage rapide.

Voir aussi

Unexpected token '<' lors d'un appel à une API compatible OpenAI401 invalid API key : quand la clé semble correcte mais échoue quand même

Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.