Volver a las guías
Solución de problemas·28 de agosto de 2026·6 min de lectura

Claude Code «API Error: 401 authentication_error» con una URL base personalizada: todas las causas

Aquí, un 401 se refiere a tus credenciales o a tu URL base, nunca a tu modelo; un problema de modelo devuelve 404 con un mensaje que nombra el modelo. Esta única distinción resuelve la mayoría de los casos con un solo curl.

Última revisión: .

Aquí, un 401 se refiere a tus credenciales o a tu URL base, nunca a tu modelo; un problema de modelo devuelve 404 con un mensaje que nombra el modelo. Esta única distinción resuelve la mayoría de los casos con un solo curl.

El error

terminal
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Missing or invalid API key"}}

Causas y soluciones de un vistazo

CausaSolución
ANTHROPIC_API_KEY configurada cuando debía usarse ANTHROPIC_AUTH_TOKENUsa AUTH_TOKEN para una URL base de terceros; API_KEY requiere una solicitud de aprobación única.
URL base con una ruta /v1Establece solo el origen; Claude Code añade /v1/messages por sí mismo.
Clave revocada o cuenta suspendidaAmbas situaciones responden con 401, nunca con 403. Genera una clave nueva y comprueba la cuenta.
Un modelo que el endpoint Messages no ofreceEso devuelve 404 mencionando el modelo, no 401; por tanto, requiere una solución diferente.

Muestra las tres variables y comprueba que la URL base no tenga una ruta

La causa más común se ve aquí. La URL base debe ser un origen, sin /v1 ni una ruta final, porque el cliente añade el endpoint por sí mismo. Una URL base que termina en /v1 produce una solicitud a /v1/v1/messages.

check-env.sh
env | grep -E '^ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY|MODEL)='

# Right: https://api.kunavo.com
# Wrong: https://api.kunavo.com/v1

Llama directamente al endpoint de las dos formas

/v1/messages de Kunavo acepta las credenciales tanto mediante x-api-key como mediante Authorization: Bearer, por lo que Claude Code no necesita ningún plugin ni proxy delante. Si curl funciona y la CLI no, el problema está en el entorno de tu shell, no en el servidor.

probe.sh
curl -s https://api.kunavo.com/v1/messages   -H "x-api-key: $ANTHROPIC_AUTH_TOKEN"   -H "anthropic-version: 2023-06-01"   -H "content-type: application/json"   -d '{"model":"claude-sonnet-5","max_tokens":8,
       "messages":[{"role":"user","content":"hi"}]}'

# Same call, other header style — both are accepted:
#   -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN"

Elimina la variable que no utilizas

Si ANTHROPIC_API_KEY y ANTHROPIC_AUTH_TOKEN están configuradas, puede imponerse la incorrecta. Elimina ANTHROPIC_API_KEY, inicia un shell nuevo y vuelve a intentarlo; una exportación obsoleta en el perfil del shell persiste más que cualquier otra solución que pruebes.

Si el estado es 404, deja de depurar la clave

Un 404 cuyo mensaje menciona el modelo significa que la credencial se aceptó, pero la cadena del modelo no. Corrige ANTHROPIC_MODEL; la clave no tiene ningún problema. En una configuración nueva, la causa habitual es que nada fija el modelo: Claude Code envía entonces su valor predeterminado integrado, el Opus más reciente, que Kunavo quizá aún no ofrezca; y /model sonnet solicita Sonnet 5.5, que Kunavo no ofrece. Establece ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL y ANTHROPIC_DEFAULT_SONNET_MODEL en identificadores obtenidos de GET /v1/models.

Si llamas a través de Kunavo

Un 401 de Kunavo se reduce a cinco causas: no llegó ninguna clave mediante Authorization: Bearer ni x-api-key; la clave no tiene el prefijo sk-kn-; es una clave sk-kn- que Kunavo nunca emitió (por un error tipográfico o una copia truncada); fue revocada; o la cuenta está suspendida. Ninguna de ellas devuelve 403, por lo que el código de estado por sí solo indica en qué familia de problemas estás; y una clave válida dirigida a un modelo que el endpoint Messages no ofrece devuelve 404 con el modelo nombrado en el mensaje, no 401. Ese es todo el árbol de diagnóstico.

Preguntas frecuentes

¿Por qué mi clave funciona en curl pero no en Claude Code?

Casi siempre se debe a una segunda variable definida en el perfil del shell o a una URL base que incluye una ruta. El endpoint acepta ambos estilos de encabezado, así que la diferencia no está en el encabezado.

¿ANTHROPIC_AUTH_TOKEN o ANTHROPIC_API_KEY?

AUTH_TOKEN para una URL base de terceros: se usa de inmediato. API_KEY activa primero una solicitud de aprobación única, que a menudo se confunde con un fallo.

¿Una suscripción de Claude cubre una URL base personalizada?

No. Una suscripción autentica contra el endpoint propio del proveedor; si diriges la CLI a otro lugar, se usa la credencial de ese endpoint y este cobra el uso.

Guías relacionadas

Encontrarás más detalles sobre el significado de los errores en referencia de errores; obtener una clave lleva un minuto mediante registro y la guía de autenticación.