Claude Code "invalid x-api-key": sua requisição foi para a Anthropic
Wokey Team · 2026-09-24
Resposta curta: se você vê invalid x-api-key, sua requisição foi para o próprio api.anthropic.com da Anthropic, não para o gateway que você configurou. A Wokey nunca retorna essa mensagem; o erro de chave dela é invalid_api_key, com underscores. Então não troque sua chave ainda. Descubra por que a base URL não foi aplicada.
Primeiro, descubra quem respondeu
Compare o JSON do seu erro com esta tabela para ver aonde a requisição realmente chegou. Cada linha é uma resposta bruta capturada com curl:
| A resposta contém | Quem respondeu | Significado |
|---|---|---|
"message":"invalid x-api-key" |
Anthropic | Uma chave sk- foi enviada como Authorization: Bearer, ou o valor de x-api-key não parece uma chave |
"message":"API key is invalid." |
Anthropic | Uma chave sk- não emitida pela Anthropic foi enviada como x-api-key |
"message":"x-api-key header is required" |
Anthropic | Nenhuma chave foi enviada |
"message":"Invalid bearer token" |
Anthropic | O valor bearer não começa com sk- |
"code":"invalid_api_key" |
Wokey | A requisição chegou à Wokey, mas a chave está ausente, digitada errado ou foi excluída |
A resposta completa da Anthropic fica assim. Repare no "type":"error" externo e, normalmente, em um request_id:
{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011C..."}
A resposta da Wokey não tem type: "error" externo, e o code usa underscores:
{"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"}}
As chaves da Wokey começam com sk-. Coloque uma em ANTHROPIC_AUTH_TOKEN (enviada como bearer token) e deixe a requisição ir para a Anthropic, e você recebe invalid x-api-key. Coloque-a em ANTHROPIC_API_KEY (enviada como x-api-key) e você recebe API key is invalid. A causa é a mesma nos dois casos.
Por que a base URL não foi aplicada
1. A variável não está no processo que roda o claude. Um export só vale para o terminal atual. Uma variável definida em outro terminal, uma adicionada ao ~/.zshrc sem abrir um terminal novo, ou um editor aberto pelo Dock ou pelo menu Iniciar não vão enxergá-la. No terminal que inicia o claude, confira se as duas variáveis estão lá:
env | grep ANTHROPIC
2. O nome da variável está errado. O Claude Code só lê ANTHROPIC_BASE_URL. ANTHROPIC_API_BASE, ANTHROPIC_BASE, CLAUDE_BASE_URL e OPENAI_BASE_URL são todas ignoradas, e a requisição vai silenciosamente para o endereço oficial.
3. O settings.json tem a chave, mas não o endereço. Se o bloco env de ~/.claude/settings.json define ANTHROPIC_AUTH_TOKEN sem ANTHROPIC_BASE_URL, a chave é enviada para a Anthropic. Mantenha as duas juntas:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.wokey.ai",
"ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
}
}
4. Você está usando a extensão do VS Code. A verificação de login da extensão não lê variáveis do shell. Defina-as em claudeCode.environmentVariables nas configurações de usuário do VS Code; veja o guia da extensão do VS Code.
5. Você está usando o app desktop do Claude. O app desktop não lê ANTHROPIC_BASE_URL nem settings.json. Defina o gateway em Developer → Configure Third-Party Inference; veja solução de problemas do app desktop com uma API de terceiros.
6. Você está chamando o SDK no seu próprio código. Os SDKs de Python e TypeScript da Anthropic usam por padrão o endereço oficial. Passe base_url explicitamente (baseURL em TypeScript), também sem /v1:
from anthropic import Anthropic
client = Anthropic(base_url="https://api.wokey.ai", api_key="your Wokey API key")
Confirme dentro do Claude Code
Rode /status no Claude Code. A aba Status deve mostrar uma linha Anthropic base URL definida como https://api.wokey.ai. Se a linha não aparecer, o Claude Code está usando o endereço oficial e uma das causas acima se aplica.
Compare com curl
No mesmo terminal que inicia o claude, rode:
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":"."}]}'
O que o resultado indica:
curl: (3) URL rejected: No host part in the URL:ANTHROPIC_BASE_URLestá vazia; a variável nunca foi definida.- Começa com
{"id":"msg_: o gateway e a chave estão certos. O problema é a configuração que o Claude Code lê; verifique as causas 3 a 5 acima. invalid_api_key: a requisição chegou à Wokey, então agora é mesmo a chave. Confira no console se ela foi copiada inteira e não foi excluída.
Vendo esse erro com a API oficial
Se você usa a API da Anthropic diretamente, invalid x-api-key significa exatamente o que diz: a chave está errada ou foi revogada, ou foi copiada com uma quebra de linha ou um espaço a mais. O Claude Code bloqueia uma chave com quebra de linha antes de enviá-la, com um erro como Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break.
Perguntas frequentes
A Wokey retorna "invalid x-api-key"?
Não. Essa mensagem vem da própria API da Anthropic. Para uma chave ausente ou errada, a Wokey retorna 401 com {"error":{"code":"invalid_api_key",...}}. Se você vê "invalid x-api-key", a requisição nunca chegou à Wokey porque ANTHROPIC_BASE_URL não foi aplicada.
Como verificar qual base URL o Claude Code está usando?
Rode /status no Claude Code e olhe Anthropic base URL. Com a Wokey, deve aparecer https://api.wokey.ai. Se a linha não existir ou mostrar o endereço da Anthropic, a variável não chegou ao processo em execução.
O echo mostra a variável, então por que ainda falha?
Normalmente a variável foi definida sem export, ou o Claude Code foi aberto em outro terminal, em uma IDE ou por um ícone da área de trabalho que nunca a viu. A correção mais confiável é colocar ANTHROPIC_BASE_URL e ANTHROPIC_AUTH_TOKEN no bloco env de ~/.claude/settings.json.
E se a extensão do VS Code ou o app desktop mostrar esse erro?
Na extensão do VS Code, defina as variáveis em claudeCode.environmentVariables nas suas configurações de usuário. O app desktop do Claude ignora variáveis de ambiente: configure o gateway em Developer → Configure Third-Party Inference e depois clique em Save & Restart.
Posso usar uma chave da Wokey direto com a Anthropic?
Não. Uma chave da Wokey é sk- seguido de 32 caracteres hexadecimais e só funciona em api.wokey.ai. Enviada à Anthropic, ela recebe 401.