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。