一、Claude Code 默认应该走 /v1/messages:核心机制解读
En primer lugar, antes de empezar a diagnosticar, debemos tener claro cuál es el comportamiento esperado de Claude Code para identificar dónde está el fallo.
1.1 Diseño del protocolo de @anthropic-ai/claude-code
El paquete NPM oficial @anthropic-ai/claude-code mantenido por Anthropic utiliza exclusivamente el protocolo nativo Messages API de Anthropic. Sus características son:
| Dimensión | Comportamiento oficial de Claude Code |
|---|---|
| Endpoint de solicitud | POST {ANTHROPIC_BASE_URL}/v1/messages |
| Cabeceras | x-api-key, anthropic-version: 2023-06-01, anthropic-beta |
| Formato del cuerpo | { "model": "...", "messages": [...], "system": "...", "max_tokens": ... } |
| Formato de respuesta | { "content": [...], "stop_reason": "...", "usage": {...} } |
| Respuesta en streaming | Flujo de eventos SSE, con tipos como message_start, content_block_delta |
Si al capturar el tráfico ves /v1/chat/completions, Authorization: Bearer ... o un cuerpo de solicitud que contiene un array choices, estás ante características del protocolo de OpenAI. Esto indica que la solicitud no está siguiendo la ruta que debería tomar el Claude Code oficial.
1.2 Semántica correcta de las variables de entorno clave
El Claude Code oficial solo reconoce las siguientes variables de entorno para ajustar el comportamiento de la API:
# Obligatorio: Clave API de Anthropic o clave de un servicio compatible
ANTHROPIC_AUTH_TOKEN=sk-tu-clave
# O la variable equivalente:
ANTHROPIC_API_KEY=sk-tu-clave
# Opcional: URL personalizada del servicio proxy de API (no incluir el sufijo /v1)
ANTHROPIC_BASE_URL=https://api.anthropic.com
# Opcional: ID del modelo personalizado
ANTHROPIC_MODEL=claude-sonnet-4-5
ANTHROPIC_SMALL_FAST_MODEL=claude-haiku-4-5
Nota: El Claude Code oficial no utiliza variables como OPENAI_BASE_URL o CLAUDE_CODE_USE_OPENAI. Si estas variables aparecen en tu entorno, significa que estás utilizando un envoltorio (wrapper) de terceros.
💡 Consejo de verificación rápida: Ejecuta
which claudeen tu terminal para ver la ruta de instalación de Claude Code y luego ejecutacat $(which claude) | head -20. Si ves la cadena@anthropic-ai/claude-code, significa que tienes instalada la versión oficial. Si ves palabras clave comoopenclaude,claudexocli-agent-openai-adapter, ahí es donde reside la causa raíz.

二、6 posibles razones por las que Claude Code utiliza el modo compatible con OpenAI
Ordenadas de mayor a menor probabilidad, te recomendamos revisarlas en este orden.
2.1 Razón 1: Instalación accidental de paquetes "OpenAI Wrapper" de terceros (aprox. 35% de los casos)
En NPM existen varios paquetes con nombres similares a "Claude Code" pero con funciones totalmente distintas, diseñados específicamente para la compatibilidad con OpenAI. Es posible que hayas instalado uno de ellos por error:
| Nombre del paquete | Función real | Protocolo predeterminado |
|---|---|---|
@anthropic-ai/claude-code |
✅ Paquete oficial | /v1/messages |
@gitlawb/openclaude |
Shim de OpenAI | /v1/chat/completions |
@aryanjsx/openclaude |
Shim de OpenAI | /v1/chat/completions |
cli-agent-openai-adapter |
Conversor de protocolo | /v1/chat/completions |
claude-code-openai-wrapper |
Wrapper de doble protocolo | Soporta ambos |
claudex |
Proxy de OpenAI en Go | /v1/chat/completions |
Método de diagnóstico:
# 1. Verificar la ruta de instalación real
which claude
# Ejemplo de salida: /usr/local/bin/claude
# 2. Verificar el "name" en el package.json del paquete
cat $(npm root -g)/@anthropic-ai/claude-code/package.json 2>/dev/null | grep '"name"'
# 3. Listar todos los paquetes relacionados con claude instalados globalmente
npm list -g --depth=0 | grep -i claude
Si npm list no muestra @anthropic-ai/claude-code pero sí otros paquetes con nombres similares, esa es la causa.
2.2 Razón 2: Uso de herramientas de enrutamiento como claude-code-router (aprox. 25% de los casos)
claude-code-router (CCR) es una herramienta comunitaria popular que intercepta las peticiones de Claude Code y las redirige a diferentes modelos (como OpenAI, DeepSeek o Zhipu). Su funcionamiento es:
- Inicia un servidor proxy local (por defecto
http://localhost:3456). - El usuario apunta
ANTHROPIC_BASE_URLa este proxy local. - CCR recibe la petición
/v1/messagesy la traduce a/v1/chat/completionspara reenviarla al modelo objetivo. - Al capturar el tráfico, verás el protocolo de OpenAI.
Método de diagnóstico:
# Comprobar variables de entorno
env | grep -i ANTHROPIC
# Si ves algo como ANTHROPIC_BASE_URL=http://localhost:3456 o http://127.0.0.1:xxx
# Es muy probable que sea un proxy local como CCR / claude-code-router
2.3 Razón 3: ANTHROPIC_BASE_URL apunta a una pasarela compatible con OpenAI (aprox. 20% de los casos)
Algunas pasarelas de LLM (como LiteLLM Proxy, OneAPI o Bifrost), aunque permiten configurar modelos de Anthropic, solo exponen la interfaz /v1/chat/completions. Si apuntas ANTHROPIC_BASE_URL a estas pasarelas:
- Claude Code sigue enviando peticiones a
/v1/messages. - La pasarela devuelve un 404 o reescribe la ruta automáticamente.
- La pasarela convierte internamente la petición al formato de OpenAI.
- Si capturas el tráfico después de la pasarela, verás el protocolo de OpenAI.
Método de diagnóstico: Comprueba si ANTHROPIC_BASE_URL es una pasarela conocida compatible con OpenAI y si la petición tiene éxito (200) o falla (404).
2.4 Razón 4: Variables de entorno de wrappers de terceros (aprox. 10% de los casos)
Algunos paquetes wrapper cambian el protocolo mediante variables de entorno, por ejemplo:
# Variables de cambio para openclaude
CLAUDE_CODE_USE_OPENAI=1
OPENAI_API_KEY=sk-xxx
OPENAI_MODEL=gpt-4o
OPENAI_BASE_URL=https://api.openai.com/v1
Incluso si instalaste el paquete oficial, si hay un script wrapper en tu PATH (por ejemplo, si /usr/local/bin/claude es en realidad un wrapper), estas variables surtirán efecto.
Método de diagnóstico:
# Listar todos los ejecutables llamados claude en el PATH
type -a claude
# Comprobar si existen variables de entorno relacionadas
env | grep -E 'CLAUDE_CODE|OPENAI_BASE_URL|OPENAI_MODEL'
2.5 Razón 5: Intercepción por alias de Shell o scripts wrapper (aprox. 7% de los casos)
Es posible que hayas configurado un alias en tu ~/.bashrc o ~/.zshrc:
# Este tipo de alias reemplaza el comando claude original
alias claude='openclaude'
alias claude='claude-code-router run'
# O una función definida con el mismo nombre
claude() {
CCR_PROXY=http://localhost:3456 command claude "$@"
}
Método de diagnóstico:
# Ver alias
alias | grep claude
# Ver funciones
type claude
# Revisar archivos de inicio de shell
grep -nE 'claude' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null
2.6 Razón 6: Error de juicio en la captura de tráfico (aprox. 3% de los casos)
En casos aislados, la herramienta de captura está mal configurada y no muestra la petición real que envía Claude Code. Por ejemplo:
- Claude Code → Proxy transparente local (ej. mitmproxy) → Pasarela remota de OpenAI.
- Si capturas después de la pasarela, verás la petición reescrita.
- En realidad, Claude Code envió
/v1/messages.
Método de diagnóstico: Usa mitmproxy localmente para interceptar directamente el proceso de Claude Code y confirmar qué protocolo utiliza en el primer salto.
三、5 pasos para diagnosticar rápidamente anomalías en el protocolo de Claude Code

Sigue este orden y podrás localizar la mayoría de las anomalías en los primeros 3 pasos.
3.1 Paso 1: Confirmar la instalación del paquete NPM oficial
# Desinstalar todos los posibles wrappers
npm uninstall -g @gitlawb/openclaude @aryanjsx/openclaude cli-agent-openai-adapter claudex claude-code-router 2>/dev/null
# Desinstalar y reinstalar el paquete oficial
npm uninstall -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
# Verificar la versión y origen
claude --version
npm list -g @anthropic-ai/claude-code
Condición de éxito: La salida de npm list -g incluye @anthropic-ai/[email protected].
3.2 Paso 2: Limpiar PATH y alias de Shell
# Encontrar todos los ejecutables llamados claude en el PATH
type -a claude
which -a claude
# Eliminar alias / funciones con el mismo nombre
unalias claude 2>/dev/null
unset -f claude 2>/dev/null
# Revisar y limpiar configuraciones relacionadas con claude en los scripts de inicio
grep -n 'claude' ~/.bashrc ~/.zshrc ~/.profile 2>/dev/null
Condición de éxito: type -a claude solo muestra una ruta, apuntando al paquete oficial en el directorio global de npm.
3.3 Paso 3: Limpiar variables de entorno conflictivas
# Ver todas las variables relacionadas con claude / openai
env | grep -iE 'claude|openai|anthropic'
# Limpiar variables que puedan causar conflictos
unset CLAUDE_CODE_USE_OPENAI
unset OPENAI_BASE_URL
unset OPENAI_MODEL
unset CCR_PROXY
# Mantener solo las variables necesarias para el paquete oficial
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-tu-clave-apiyi"
🎯 Recordatorio clave:
ANTHROPIC_BASE_URLdebe apuntar a la raíz del dominio (sin el sufijo/v1), ya que Claude Code añadirá automáticamente/v1/messages. Si poneshttps://vip.apiyi.com/v1, se formaráhttps://vip.apiyi.com/v1/v1/messages, lo que causará un error 404.
3.4 Paso 4: Probar si la base_url soporta nativamente /v1/messages
Usa curl para simular la petición de Claude Code y verificar si la pasarela realmente soporta el protocolo nativo de Anthropic:
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 100,
"messages": [{"role": "user", "content": "Hello"}]
}'
Condición de éxito: Recibir un código 200 y que el cuerpo de la respuesta contenga "type": "message" y "content": [...].
Si recibes un 404 o el formato de respuesta es de OpenAI (contiene choices), significa que la pasarela no soporta el protocolo nativo. En este caso, cambiar a APIYI (apiyi.com) resolverá el problema inmediatamente, ya que soporta nativamente /v1/messages y es compatible con /v1/chat/completions.
3.5 Paso 5: Verificación mediante captura de tráfico local
Si los pasos anteriores no han funcionado, utiliza mitmproxy para capturar el tráfico localmente:
# Iniciar mitmproxy (puerto 8080 por defecto)
mitmproxy --listen-port 8080
# Configurar Claude Code para usar el proxy local
export HTTPS_PROXY=http://localhost:8080
export HTTP_PROXY=http://localhost:8080
# Iniciar Claude Code
claude
Condición de éxito: La primera petición capturada por mitmproxy debe ser POST /v1/messages e incluir la cabecera anthropic-version.
IV. Configuración completa para conectar Claude Code a APIYI mediante el protocolo nativo /v1/messages
APIYI (apiyi.com) es uno de los pocos servicios proxy de API que soporta de forma nativa el protocolo Anthropic Messages API, lo que garantiza que Claude Code utilice /v1/messages en lugar de /v1/chat/completions.
4.1 Configuración de variables de entorno (la forma más sencilla)
# macOS / Linux
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-apiyi-key"
# Opcional: especificar el modelo por defecto
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export ANTHROPIC_SMALL_FAST_MODEL="claude-haiku-4-5"
# Windows PowerShell
$env:ANTHROPIC_BASE_URL = "https://vip.apiyi.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-your-apiyi-key"
# Iniciar Claude Code
claude
4.2 Configuración persistente en el archivo de inicio del Shell
# Añadir a ~/.zshrc o ~/.bashrc
cat >> ~/.zshrc <<'EOF'
# Configuración del proxy de APIYI para Claude Code
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-apiyi-key"
export ANTHROPIC_MODEL="claude-sonnet-4-5"
EOF
# Recargar configuración
source ~/.zshrc
4.3 Mediante el comando de configuración integrado de Claude Code (recomendado)
Claude Code ofrece su propia CLI de configuración para evitar la exposición de variables de entorno:
# Opción 1: Interactiva
claude /login
# Selecciona "Custom Endpoint", introduce https://vip.apiyi.com y tu clave API
# Opción 2: Modificar directamente el archivo de configuración
cat > ~/.claude/settings.json <<'EOF'
{
"env": {
"ANTHROPIC_BASE_URL": "https://vip.apiyi.com",
"ANTHROPIC_AUTH_TOKEN": "sk-your-apiyi-key"
}
}
EOF
4.4 Verificar la ruta de solicitud tras la configuración
Después de iniciar Claude Code, abre una nueva terminal y utiliza uno de los siguientes comandos para verificar:
# Opción 1: Captura de paquetes con mitmproxy (la más precisa)
mitmproxy --listen-port 8080
# Al iniciar Claude Code en otra terminal, configura HTTPS_PROXY=http://localhost:8080
# Opción 2: Activar los registros de depuración de Claude Code
ANTHROPIC_LOG=debug claude
# Los registros mostrarán la URL de solicitud completa y el método
Resultado esperado: Todas las URLs de solicitud deben ser https://vip.apiyi.com/v1/messages, con método POST y la cabecera anthropic-version: 2023-06-01.
4.5 Ventajas clave de conectar con APIYI
| Ventaja | Descripción |
|---|---|
| Soporte nativo /v1/messages | Protocolo predeterminado de Claude Code, sin pérdida de conversión |
| Soporte simultáneo /v1/chat/completions | Una clave para ambos protocolos, adaptabilidad flexible |
| Preservación total de cabeceras anthropic-beta | Soporta características avanzadas como prompt caching y uso de herramientas |
| Sin límite de concurrencia | Sin estrangulamiento en sesiones largas de Claude Code |
| Recarga de 100 USD con 10% extra | Equivalente a un 15% de descuento respecto a la web oficial |
| Pagos en moneda local (RMB) | Pago directo mediante WeChat/Alipay |
V. Comparativa de protocolos: Nativo /v1/messages vs OpenAI /v1/chat/completions

Entender las diferencias fundamentales entre ambos protocolos es crucial para comprender por qué Claude Code debe utilizar el protocolo nativo para desplegar todo su potencial.
| Dimensión | Anthropic /v1/messages | OpenAI /v1/chat/completions |
|---|---|---|
| Cabecera de autenticación | x-api-key: sk-... |
Authorization: Bearer sk-... |
| Cabecera de versión | anthropic-version: 2023-06-01 |
Ninguna (usa versión en la URL) |
| Cabecera de características | anthropic-beta: prompt-caching-... |
Sin estándar unificado |
| Campo system | Campo independiente de nivel superior | Como rol system en messages[0] |
| Formato de respuesta | { "content": [...], "stop_reason": "..." } |
{ "choices": [{ "message": {...} }] } |
| Eventos de streaming | Eventos estructurados (message_start, content_block_delta, etc.) |
SSE genérico data: {...} |
| Invocación de herramientas | tool_use incrustado en bloques de contenido |
choices[0].message.tool_calls |
| Conteo de tokens | usage.input_tokens / usage.output_tokens |
usage.prompt_tokens / usage.completion_tokens |
Conclusión clave: Claude Code utiliza intensivamente características exclusivas de Anthropic (prompt caching, incrementos de streaming de tool_use, contenido de razonamiento, etc.). Si se fuerza una conversión al protocolo de OpenAI, se perderán estas capacidades o el comportamiento será inconsistente. Por eso es indispensable asegurar que utilice el /v1/messages nativo.
VI. Lista de verificación para solución de problemas por escenario
6.1 Escenario 1: Uso local para desarrolladores individuales
Causa más común: Un wrapper con el mismo nombre en el alias de Shell o en el PATH.
Lista de verificación:
- ¿
npm list -gincluye@anthropic-ai/claude-code? - ¿
type -a claudeapunta únicamente al paquete oficial? - ¿
~/.zshrc/~/.bashrctiene algúnalias claude=...? - ¿
env | grep -i claudemuestra variables no estándar? - ¿
ANTHROPIC_BASE_URLincluye el sufijo/v1? (No debería llevarlo).
6.2 Escenario 2: Despliegue en entornos de equipo o empresa
Causa más común: La pasarela (gateway) de LLM interna solo admite el protocolo OpenAI.
Lista de verificación:
- ¿La pasarela corporativa admite de forma nativa el endpoint
/v1/messages? - ¿La pasarela reenvía las cabeceras
anthropic-versionyanthropic-beta? - ¿La pasarela conserva el formato original de los eventos SSE?
- ¿Existe algún script de wrapper unificado para el equipo?
Si la pasarela de tu empresa solo admite el protocolo OpenAI, te recomendamos configurar ANTHROPIC_BASE_URL en el cliente para que apunte a APIYI (apiyi.com). Esto permite una conexión directa con el protocolo nativo, evitando pérdidas por conversión.
6.3 Escenario 3: Invocación de Claude Code en entornos CI/CD
Causa más común: El script de CI tiene un wrapper de terceros integrado.
Lista de verificación:
- ¿El archivo de configuración de CI ejecuta
npm install -gcon un paquete no oficial? - ¿Las variables de entorno de CI incluyen
CLAUDE_CODE_USE_OPENAI=1o similares? - ¿La imagen del runner de CI tiene preinstalado algún wrapper?
6.4 Escenario 4: Ejecución dentro de contenedores Docker
Causa más común: La imagen base tiene preinstalado un wrapper.
Lista de verificación:
- ¿El nombre del paquete en
RUN npm install -gdentro del Dockerfile es el oficial? - ¿A dónde apunta
which claudedentro del contenedor? - ¿Las variables de entorno (ENV) del contenedor tienen configurada alguna variable de cambio de protocolo?
VII. Preguntas frecuentes (FAQ) sobre anomalías en el protocolo de Claude Code
Q1: Tengo instalado el paquete oficial @anthropic-ai/claude-code, ¿por qué sigue usando el protocolo OpenAI?
La causa más probable es que ANTHROPIC_BASE_URL apunte a una pasarela compatible con OpenAI. Algunas pasarelas, al recibir una solicitud /v1/messages, la convierten internamente a /v1/chat/completions para llamar al modelo superior. Si tu herramienta de captura de tráfico está desplegada después de la pasarela, verás el protocolo convertido.
La solución es cambiar ANTHROPIC_BASE_URL para que apunte a APIYI (apiyi.com), que admite de forma nativa /v1/messages sin ninguna pérdida por conversión.
Q2: ¿Cómo desinstalar completamente cualquier posible wrapper de Claude?
# Listar todos los paquetes globales relacionados con claude
npm list -g --depth=0 | grep -i claude
# Desinstalar de una vez los wrappers conocidos
npm uninstall -g \
@gitlawb/openclaude \
@aryanjsx/openclaude \
cli-agent-openai-adapter \
claudex \
claude-code-router \
ccr \
2>/dev/null
# Reinstalar el paquete oficial
npm install -g @anthropic-ai/claude-code
# Verificar
which claude
claude --version
Q3: ¿A qué nivel de ruta debo configurar ANTHROPIC_BASE_URL?
Configúralo en la raíz del dominio, sin el sufijo /v1. Claude Code añadirá automáticamente /v1/messages de forma interna.
# ✅ Correcto
export ANTHROPIC_BASE_URL="https://vip.apiyi.com"
# ❌ Incorrecto (se convertiría en /v1/v1/messages)
export ANTHROPIC_BASE_URL="https://vip.apiyi.com/v1"
# ❌ Incorrecto (incluye la ruta del endpoint)
export ANTHROPIC_BASE_URL="https://vip.apiyi.com/v1/messages"
Q4: ¿Por qué algunos tutoriales me piden instalar claude-code-router?
claude-code-router es una herramienta de la comunidad cuyo propósito principal es permitir que Claude Code invoque modelos que no son de Anthropic (como DeepSeek, Zhipu, Ollama local, etc.) mediante la conversión de protocolos.
Si solo quieres usar los modelos originales de Claude de Anthropic (como Claude Sonnet 4.5 o Opus 4.7), no necesitas CCR en absoluto. Conéctate directamente a APIYI (apiyi.com) usando el protocolo nativo /v1/messages para obtener una mejor experiencia y sin pérdidas por conversión.
Q5: ¿APIYI (apiyi.com) admite tanto /v1/messages como /v1/chat/completions?
Sí, APIYI es totalmente compatible con ambos protocolos:
https://vip.apiyi.com/v1/messages—— Formato nativo de Anthropic (predeterminado en Claude Code).https://vip.apiyi.com/v1/chat/completions—— Formato compatible con OpenAI.
Una misma clave API puede utilizar ambos protocolos, adaptándose automáticamente según la herramienta cliente.
Q6: Si la URL de solicitud capturada es https://vip.apiyi.com/v1/messages, ¿significa que es modo nativo?
No necesariamente. Debes verificar también lo siguiente:
- La cabecera de la solicitud contiene
anthropic-version: 2023-06-01. - El cuerpo de la solicitud tiene un array
messagesy un camposystemindependiente (no un rolsystemdentro demessages). - El cuerpo de la respuesta contiene
"type": "message"ycontent: [...](nochoices: [...]).
Si la URL es /v1/messages pero el cuerpo de la solicitud tiene formato OpenAI (con el rol system dentro de messages), significa que el cliente tiene su propia capa de conversión.
Q7: ¿Cuál es la variable de entorno para habilitar los registros de depuración (debug) en Claude Code?
# Mostrar registros detallados de solicitud/respuesta HTTP
ANTHROPIC_LOG=debug claude
# O usar el modo verbose
claude --verbose
# Ver la información de diagnóstico de Claude Code
claude /doctor
Los registros de depuración mostrarán la URL completa, las cabeceras y el cuerpo de la solicitud (los campos sensibles se enmascaran), siendo la forma más directa de localizar problemas de protocolo.
Q8: Mi Claude Code funcionaba bien y de repente cambió al protocolo OpenAI, ¿cuál podría ser la causa?
Las causas más comunes de este cambio repentino son:
- Se actualizó Claude Code, pero se instaló por error un paquete de terceros con el mismo nombre mediante
npm install -g. - El equipo desplegó recientemente una pasarela de LLM y configuró una nueva
ANTHROPIC_BASE_URL. - Algunos alias volvieron a activarse tras una actualización de macOS.
- La empresa habilitó un proxy transparente para auditar la conversión de protocolos.
Al investigar, prioriza revisar los cambios recientes en el entorno (historial de instalación de npm, cambios en la configuración de shell, notificaciones de cambios en la pasarela).
八、Key Takeaways Puntos clave
- ✅ El paquete oficial
@anthropic-ai/claude-codeutiliza siempre/v1/messages; no existe un modo de compatibilidad oficial con OpenAI. - ✅ 6 causas probables (por probabilidad): instalación errónea de paquetes de terceros / interceptación por
claude-code-router/base_urlapuntando a una pasarela de OpenAI / variables de entorno de terceros / alias de Shell / malinterpretación al capturar paquetes. - ✅ 5 pasos para un diagnóstico rápido: verificar el nombre del paquete → limpiar PATH/alias → limpiar variables de entorno → prueba
curlabase_url→ verificar con captura de paquetes local. - ✅ No incluyas el sufijo
/v1enANTHROPIC_BASE_URL, ya que Claude Code lo añade automáticamente. - ✅ APIYI (apiyi.com) admite de forma nativa
/v1/messagesy es compatible con/v1/chat/completions; una sola clave API para ambos protocolos. - ✅ Ventajas de usar el protocolo nativo: soporte completo para características exclusivas de Anthropic como prompt caching, tool_use y reasoning content.
- ✅ Método de verificación rápida: ejecuta
ANTHROPIC_LOG=debug claudepara ver la URL y el método de la solicitud real.
九、Conclusión
Claude Code instalado vía NPM debe utilizar siempre el protocolo nativo /v1/messages en el entorno de línea de comandos; este es un comportamiento codificado en el paquete oficial @anthropic-ai/claude-code y no existe ningún interruptor oficial para cambiar al modo de compatibilidad con OpenAI. Si al capturar los paquetes el cliente observa /v1/chat/completions, el problema reside sin duda en algún punto del entorno del cliente: ya sea que se haya instalado por error un envoltorio (wrapper) de terceros, que ANTHROPIC_BASE_URL apunte a una pasarela que solo admite el protocolo de OpenAI, o que un alias de Shell o una variable de entorno esté realizando una conversión interceptada.
Siguiendo el proceso de diagnóstico de 5 pasos descrito en el tercer capítulo de este artículo, la gran mayoría de los problemas pueden localizarse en menos de 10 minutos. La solución más común es: desinstalar todos los paquetes no oficiales → reinstalar @anthropic-ai/claude-code → configurar ANTHROPIC_BASE_URL hacia un servicio proxy de API que admita nativamente /v1/messages.
APIYI (apiyi.com) está diseñado para este tipo de escenarios: admite de forma nativa la API de mensajes de Anthropic (incluyendo la transmisión completa de las cabeceras anthropic-version y anthropic-beta), es compatible con OpenAI Chat Completions (protocolo dual con una sola clave), no tiene límites de concurrencia (evitando restricciones en sesiones largas de Claude Code), ofrece un bono del 10% en recargas de 100 USD (equivalente a un 15% de descuento respecto al sitio oficial) y permite pagos en RMB (vía WeChat/Alipay). Solo necesitas configurar ANTHROPIC_BASE_URL como https://vip.apiyi.com sin realizar ningún cambio en el código.
🎯 Siguiente paso recomendado: pide al cliente que siga el orden de los puntos 3.1 → 3.2 → 3.3 de este artículo, cambie
ANTHROPIC_BASE_URLahttps://vip.apiyi.comy, tras reiniciar Claude Code, utiliceANTHROPIC_LOG=debug claudepara verificar si la URL de la solicitud ha vuelto a/v1/messages.
Referencias
-
Documentación oficial de Claude Code: Instrucciones de configuración de LLM Gateway
- Enlace:
code.claude.com/docs/en/llm-gateway - Descripción: La documentación oficial especifica claramente que Claude Code utiliza el formato de la API de mensajes de Anthropic.
- Enlace:
-
Paquete NPM @anthropic-ai/claude-code: Página oficial del paquete NPM
- Enlace:
npmjs.com/package/@anthropic-ai/claude-code - Descripción: Verifica que tienes instalado el paquete oficial.
- Enlace:
-
Documentación oficial de la API de mensajes de Anthropic: Especificación del protocolo nativo
- Enlace:
docs.anthropic.com/en/api/messages - Descripción: Campos completos, encabezados de solicitud y formato de respuesta del endpoint
/v1/messages.
- Enlace:
-
Sitio web oficial de APIYI: Servicio proxy de API con protocolo nativo de Anthropic
- Enlace:
apiyi.com - Descripción: Soporte nativo para
/v1/messages+ compatibilidad con/v1/chat/completions, concurrencia ilimitada y un 10% de regalo en recargas de 100 USD.
- Enlace:
Autor: Equipo técnico
Última actualización: 02-05-2026
Sobre APIYI: APIYI (apiyi.com) es un proveedor profesional de servicios proxy de API para Claude. Ofrece soporte nativo para la API de mensajes de Anthropic (/v1/messages, incluyendo la transmisión completa de anthropic-version y anthropic-beta), a la vez que es compatible con OpenAI Chat Completions (/v1/chat/completions). Proporcionamos acceso estable a toda la serie Claude Sonnet 4.5, Claude Opus 4.7 y Claude Haiku 4.5. Con recargas de 100 USD obtienes un 10% adicional (equivalente a un 15% de descuento respecto al sitio oficial), sin límites de concurrencia y con un soporte técnico de respuesta rápida.
