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 logDos linajes de SDK, dos convenciones, un único nombre de host de pasarela. Ningún cliente está equivocado; simplemente no se ponen de acuerdo sobre quién es dueño del segmento /v1. Si los inviertes obtienes /v1/v1/… o una ruta sin versión.
El 404 resultante es especialmente difícil de depurar porque a menudo nunca llega a la API. Una pasarela que sirve su web en el mismo dominio responde a las rutas desconocidas con la página comercial: HTTP 200, Content-Type: text/html. El cliente intenta entonces interpretar HTML como JSON y muestra un error de sintaxis que no apunta ni de lejos a la causa real.
También significa que el fallo no deja rastro en el lado del proveedor. El soporte dirá que no ve peticiones de tu clave, y dirá la verdad: la petición la respondió un servidor web antes de convertirse en una llamada a la API.
Pregunta por el tipo de contenido en lugar de leer el cuerpo: un comando lo resuelve:
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 significa que la URL es correcta: incluso una clave errónea responde en JSON. text/html significa que estás hablando con una web y que el problema es la base URL.
/v1. Las herramientas nuevas encajan en uno de los dos sin necesitar instrucciones propias./ puede producir una doble barra que acaba en la web en lugar de en la API.| Cliente | La base URL debe |
|---|---|
| Claude Code | ser solo el host, sin /v1 |
| Anthropic SDK | ser solo el host: el SDK añade /v1/messages |
| Codex | terminar en /v1 |
| OpenAI SDK (Python, Node, Go) | terminar en /v1 |
| Cursor, Cline, Roo Code | terminar en /v1 |
| Cherry Studio, Chatbox, LobeChat | terminar en /v1 |
https://apiclan.us para Claude Code y el SDK de Anthropic, https://apiclan.us/v1 para Codex y todo lo compatible con OpenAI. Las configuraciones listas para copiar de cada cliente están en el inicio rápido.Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.