Claude Code "invalid x-api-key": tu solicitud fue a Anthropic
Wokey Team · 2026-09-24
Respuesta corta: si ves invalid x-api-key, tu solicitud fue al propio api.anthropic.com de Anthropic, no al gateway que configuraste. Wokey nunca devuelve ese mensaje; su error de clave es invalid_api_key, con guiones bajos. Así que no cambies tu clave todavía. Averigua por qué no se aplicó la base URL.
Primero, averigua quién respondió
Compara el JSON de tu error con esta tabla para ver adónde llegó realmente la solicitud. Cada fila es una respuesta sin procesar capturada con curl:
| La respuesta contiene | Respondió | Significado |
|---|---|---|
"message":"invalid x-api-key" |
Anthropic | Se envió una clave sk- como Authorization: Bearer, o el valor de x-api-key no parece una clave |
"message":"API key is invalid." |
Anthropic | Se envió como x-api-key una clave sk- que no emitió Anthropic |
"message":"x-api-key header is required" |
Anthropic | No se envió ninguna clave |
"message":"Invalid bearer token" |
Anthropic | El valor bearer no empieza con sk- |
"code":"invalid_api_key" |
Wokey | La solicitud llegó a Wokey, pero la clave falta, está mal escrita o se eliminó |
La respuesta completa de Anthropic se ve así. Observa el "type":"error" exterior y, normalmente, un request_id:
{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011C..."}
La respuesta de Wokey no tiene un type: "error" exterior, y el code usa guiones bajos:
{"error":{"code":"invalid_api_key","message":"Invalid API key. Make sure you copied the complete Wokey API key, or create a new one at https://wokey.ai/api.","type":"invalid_request_error"}}
Las claves de Wokey empiezan con sk-. Si pones una en ANTHROPIC_AUTH_TOKEN (enviada como bearer token) y dejas que la solicitud vaya a Anthropic, obtienes invalid x-api-key. Si la pones en ANTHROPIC_API_KEY (enviada como x-api-key), obtienes API key is invalid. La causa es la misma en ambos casos.
Por qué no se aplicó la base URL
1. La variable no está en el proceso que ejecuta claude. Un export solo dura en la terminal actual. Una variable definida en otra terminal, una que agregaste a ~/.zshrc sin abrir una terminal nueva, o un editor abierto desde el Dock o el menú Inicio no la verán. En la terminal que inicia claude, comprueba que las dos variables estén presentes:
env | grep ANTHROPIC
2. El nombre de la variable es incorrecto. Claude Code solo lee ANTHROPIC_BASE_URL. ANTHROPIC_API_BASE, ANTHROPIC_BASE, CLAUDE_BASE_URL y OPENAI_BASE_URL se ignoran, y la solicitud va en silencio a la dirección oficial.
3. settings.json tiene la clave pero no la dirección. Si el bloque env de ~/.claude/settings.json define ANTHROPIC_AUTH_TOKEN sin ANTHROPIC_BASE_URL, la clave se envía a Anthropic. Mantén las dos juntas:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.wokey.ai",
"ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
}
}
4. Estás usando la extensión de VS Code. La comprobación de inicio de sesión de la extensión no lee las variables de la shell. Configúralas en claudeCode.environmentVariables de la configuración de usuario de VS Code; consulta la guía de la extensión de VS Code.
5. Estás usando la app de escritorio de Claude. La app de escritorio no lee ni ANTHROPIC_BASE_URL ni settings.json. Configura el gateway en Developer → Configure Third-Party Inference; consulta solución de problemas de la app de escritorio con una API de terceros.
6. Llamas al SDK desde tu propio código. Los SDK de Python y TypeScript de Anthropic usan por defecto la dirección oficial. Pasa base_url explícitamente (baseURL en TypeScript), también sin /v1:
from anthropic import Anthropic
client = Anthropic(base_url="https://api.wokey.ai", api_key="your Wokey API key")
Confírmalo dentro de Claude Code
Ejecuta /status en Claude Code. La pestaña Status debe mostrar una línea Anthropic base URL con el valor https://api.wokey.ai. Si falta la línea, Claude Code está usando la dirección oficial y se aplica alguna de las causas anteriores.
Compara con curl
En la misma terminal que inicia claude, ejecuta:
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":1,"messages":[{"role":"user","content":"."}]}'
Lo que te dice el resultado:
curl: (3) URL rejected: No host part in the URL:ANTHROPIC_BASE_URLestá vacía; la variable nunca se definió.- Empieza con
{"id":"msg_: el gateway y la clave están bien. El problema es la configuración que lee Claude Code; revisa las causas 3 a 5 de arriba. invalid_api_key: la solicitud llegó a Wokey, así que ahora sí es la clave. Comprueba en la consola que se copió completa y que no se eliminó.
Si lo ves con la API oficial
Si usas directamente la API de Anthropic, invalid x-api-key significa exactamente lo que dice: la clave es incorrecta o fue revocada, o se copió con un salto de línea o un espacio de más. Claude Code bloquea una clave que contiene un salto de línea antes de enviarla, con un error como Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break.
Preguntas frecuentes
¿Wokey devuelve "invalid x-api-key"?
No. Ese mensaje viene de la propia API de Anthropic. Si falta la clave o es incorrecta, Wokey devuelve un 401 con {"error":{"code":"invalid_api_key",...}}. Si ves "invalid x-api-key", la solicitud nunca llegó a Wokey porque ANTHROPIC_BASE_URL no se aplicó.
¿Cómo compruebo qué base URL está usando Claude Code?
Ejecuta /status en Claude Code y mira Anthropic base URL. Con Wokey debe mostrar https://api.wokey.ai. Si la línea no aparece o muestra la dirección de Anthropic, la variable no llegó al proceso en ejecución.
echo muestra la variable, ¿por qué sigue fallando?
Normalmente la variable se definió sin export, o Claude Code se abrió desde otra terminal, un IDE o un ícono del escritorio que nunca la vio. La solución más confiable es poner ANTHROPIC_BASE_URL y ANTHROPIC_AUTH_TOKEN en el bloque env de ~/.claude/settings.json.
¿Y si la extensión de VS Code o la app de escritorio muestra este error?
Para la extensión de VS Code, define las variables en claudeCode.environmentVariables de tu configuración de usuario. La app de escritorio de Claude ignora las variables de entorno: configura el gateway en Developer → Configure Third-Party Inference y luego haz clic en Save & Restart.
¿Puedo usar una clave de Wokey directamente con Anthropic?
No. Una clave de Wokey es sk- seguido de 32 caracteres hexadecimales y solo funciona en api.wokey.ai. Si se envía a Anthropic, recibe un 401.