Claude Code 出現 invalid x-api-key:請求其實送到了 Anthropic 官方

Wokey Team · 2026-09-24

簡短回答: 看到 invalid x-api-key,表示你的請求送到了 Anthropic 官方的 api.anthropic.com,而不是你設定的閘道。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 token 送出)而請求送到了 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_AUTH_TOKEN 卻沒有 ANTHROPIC_BASE_URL,金鑰就會被送到 Anthropic。兩者要放在一起:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.wokey.ai",
    "ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
  }
}

4. 你用的是 VS Code 擴充功能。 擴充功能的登入檢查不讀 shell 變數。請在 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 分頁應該有一行 Anthropic base URL,值為 https://api.wokey.ai。如果沒有這一行,表示 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 一律回傳 401 和 {"error":{"code":"invalid_api_key",...}}。看到 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- 加上 32 個十六進位字元,只在 api.wokey.ai 有效;送到 Anthropic 會回傳 401。