Claude Code「invalid x-api-key」:リクエストは Anthropic に送られていた
Wokey Team · 2026-09-24
結論: invalid x-api-key が表示されたら、リクエストは設定したゲートウェイではなく、Anthropic 自身の api.anthropic.com に送られています。Wokey がこのメッセージを返すことはありません。Wokey のキーエラーはアンダースコア付きの invalid_api_key です。ですから、まだキーを再発行しないでください。base URL が適用されなかった理由を突き止めましょう。
まず、誰が応答したかを確かめる
エラーの JSON を次の表と照らし合わせて、リクエストが実際にどこに届いたかを確認してください。どの行も curl で取得した生のレスポンスです。
| レスポンスに含まれる内容 | 応答元 | 意味 |
|---|---|---|
"message":"invalid x-api-key" |
Anthropic | sk- キーが Authorization: Bearer として送られたか、x-api-key の値がキーの形式になっていない |
"message":"API key is invalid." |
Anthropic | Anthropic が発行していない sk- キーが x-api-key として送られた |
"message":"x-api-key header is required" |
Anthropic | キーがまったく送られていない |
"message":"Invalid bearer token" |
Anthropic | Bearer の値が sk- で始まっていない |
"code":"invalid_api_key" |
Wokey | リクエストは Wokey に届いたが、キーがない、打ち間違えている、または削除されている |
Anthropic の完全なレスポンスは次のようになります。外側の "type":"error" と、通常は request_id があることに注目してください。
{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011C..."}
Wokey のレスポンスには外側の type: "error" がなく、code はアンダースコアを使います。
{"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"}}
Wokey のキーは sk- で始まります。これを ANTHROPIC_AUTH_TOKEN(Bearer トークンとして送信)に入れてリクエストが Anthropic に送られると invalid x-api-key になります。ANTHROPIC_API_KEY(x-api-key として送信)に入れると API key is invalid. になります。どちらも原因は同じです。
base URL が適用されなかった理由
1. claude を実行しているプロセスに変数がない。 export は現在のターミナルでしか有効ではありません。別のターミナルで設定した変数、~/.zshrc に追加したものの新しいターミナルを開いていない変数、Dock やスタートメニューから起動したエディタからは見えません。claude を起動するターミナルで、両方の変数があることを確認してください。
env | grep ANTHROPIC
2. 変数名が間違っている。 Claude Code が読むのは ANTHROPIC_BASE_URL だけです。ANTHROPIC_API_BASE、ANTHROPIC_BASE、CLAUDE_BASE_URL、OPENAI_BASE_URL はすべて無視され、リクエストは黙って公式のアドレスに送られます。
3. settings.json にキーはあるがアドレスがない。 ~/.claude/settings.json の env ブロックで ANTHROPIC_BASE_URL なしに ANTHROPIC_AUTH_TOKEN を設定すると、キーが Anthropic に送られます。2 つは必ずセットにしてください。
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.wokey.ai",
"ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
}
}
4. VS Code 拡張機能を使っている。 拡張機能のログインチェックはシェル変数を読みません。VS Code のユーザー設定の claudeCode.environmentVariables に設定してください。VS Code 拡張機能ガイドをご覧ください。
5. Claude デスクトップアプリを使っている。 デスクトップアプリは ANTHROPIC_BASE_URL も settings.json も読みません。Developer → Configure Third-Party Inference でゲートウェイを設定してください。サードパーティ API でのデスクトップアプリのトラブルシューティングをご覧ください。
6. 自作のコードから SDK を呼び出している。 Anthropic の Python と TypeScript の SDK は、デフォルトで公式のアドレスを使います。base_url(TypeScript では baseURL)を明示的に渡してください。こちらも /v1 は不要です。
from anthropic import Anthropic
client = Anthropic(base_url="https://api.wokey.ai", api_key="your Wokey API key")
Claude Code の中で確認する
Claude Code で /status を実行します。Status タブに、https://api.wokey.ai に設定された Anthropic base URL の行があるはずです。この行がなければ Claude Code は公式のアドレスを使っており、上のいずれかの原因に当てはまります。
curl で比較する
claude を起動するのと同じターミナルで次を実行します。
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":"."}]}'
結果からわかること:
curl: (3) URL rejected: No host part in the URL:ANTHROPIC_BASE_URLが空で、変数が一度も設定されていません。{"id":"msg_で始まる: ゲートウェイとキーは正常です。問題は Claude Code が読む設定にあるので、上の原因 3〜5 を順に確認してください。invalid_api_key: リクエストは Wokey に届いているので、今度は本当にキーの問題です。コンソールで、キーが完全にコピーされているか、削除されていないかを確認してください。
公式 API で表示される場合
Anthropic の API を直接使っている場合、invalid x-api-key は文字どおりの意味です。キーが間違っているか失効しているか、余分な改行やスペースが付いた状態でコピーされています。Claude Code は改行を含むキーを送信前にブロックし、Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break のようなエラーを表示します。
よくある質問
「invalid x-api-key」は Wokey が返しているのですか?
いいえ。このメッセージは Anthropic 自身の API が返すものです。キーがない、または間違っている場合、Wokey は {"error":{"code":"invalid_api_key",...}} を含む 401 を返します。「invalid x-api-key」が表示されるなら、ANTHROPIC_BASE_URL が適用されておらず、リクエストは Wokey に届いていません。
Claude Code がどの base URL を使っているか確認するには?
Claude Code で /status を実行し、Anthropic base URL を確認してください。Wokey なら https://api.wokey.ai と表示されるはずです。この行がない、または Anthropic のアドレスが表示される場合、変数が実行中のプロセスに渡っていません。
echo では変数が表示されるのに、なぜまだ失敗するのですか?
多くの場合、変数が export なしで設定されているか、Claude Code がその変数を参照できない別のターミナル、IDE、デスクトップのアイコンから起動されています。最も確実なのは、ANTHROPIC_BASE_URL と ANTHROPIC_AUTH_TOKEN を ~/.claude/settings.json の env ブロックに書くことです。
VS Code 拡張機能やデスクトップアプリでこのエラーが出る場合は?
VS Code 拡張機能では、ユーザー設定の claudeCode.environmentVariables に変数を設定してください。Claude デスクトップアプリは環境変数を無視します。Developer → Configure Third-Party Inference でゲートウェイを設定し、Save & Restart をクリックしてください。
Wokey のキーを Anthropic で直接使えますか?
いいえ。Wokey のキーは sk- に 16 進数 32 文字が続く形式で、api.wokey.ai でのみ使えます。Anthropic に送ると 401 になります。