404 on /v1/v1/messagesClaude Code works but Codex returns 404, or the reverseUnexpected token '<' — HTML where JSON was expectedThe key is valid and the model exists, yet nothing connectsNo trace of the failed request in the provider's usage logDeux 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.
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.
/v1. Les nouveaux outils entrent dans l'une des deux catégories sans instructions propres./ peut produire une double barre qui mène au site au lieu de l'API.| Client | La base URL doit |
|---|---|
| Claude Code | être l'hôte seul, sans /v1 |
| Anthropic SDK | être l'hôte seul : le SDK ajoute /v1/messages |
| Codex | se terminer par /v1 |
| OpenAI SDK (Python, Node, Go) | se terminer par /v1 |
| Cursor, Cline, Roo Code | se terminer par /v1 |
| Cherry Studio, Chatbox, LobeChat | se terminer par /v1 |
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.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.