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_URL está 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.