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 になります。