Claude API 報錯 400 / 401 / 403 / 413 / 500 怎麼排查:錯誤類型、request_id 和常見 400 原因

Claude API 返回 400、401、402、403、404、413、500、504 怎麼辦?按官方《Claude API errors》列出各狀態碼的 error type,講錯誤 JSON 與 request_id、413 大小上限和常見的 400 原因。429 與 529 另有專文。

NNathaniel bigo··原創首發·AI 輔助撰寫
12 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Claude 官方《Claude API errors》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。API 是按用量計費的獨立服務,與 Claude 訂閱分開計算,Key 的獲取見 /guides/claude-api-key-console。429 限流請看 /guides/claude-api-error-429-rate-limit,529 過載請看 /guides/claude-api-error-529-overloaded,本文不重複。

適用於誰

調用 Claude API 時收到 400、401、402、403、404、413、500、504 這類狀態碼的開發者。官方整理了一張狀態碼和錯誤類型的對照表,本文把它翻成中文,並補上最常見的幾類 400 報錯。

結論先說

  1. 先看響應體裏的 error.type 和 message,再看狀態碼。 同一個狀態碼可能對應不同原因,資訊裏常直接寫了問題。
  2. 4xx 一般是你這邊要改:參數、密鑰、權限、請求大小;5xx 一般可以稍後重試,重試仍失敗再帶着 request_id 聯絡官方。
  3. 每個響應都有 request_id,出了問題先記下來,求助時附上。
  4. 流式請求可能在返回 200 之後才出錯,要處理 error 事件。
  5. 413 在第一方 API 上由 Cloudflare 攔截,請求都沒到 API 伺服器,要從請求體大小入手。

狀態碼和錯誤類型對照

圖:本站根據 Claude 官方《Claude API errors》 整理的示意圖

一、官方的狀態碼對照

狀態碼error.type含義
400invalid_request_error請求的格式或內容有問題;也可能用於未單獨列出的其他 4XX
401authentication_errorAPI 密鑰有問題
402billing_error帳單或付款資訊有問題
403permission_error你的密鑰無權使用該資源
404not_found_error找不到請求的資源
409conflict_error請求與資源的當前狀態衝突
413request_too_large請求超過允許的最大字節數
500api_errorAnthropic 系統內部的意外錯誤
504timeout_error請求處理超時

429(rate_limit_error)和 529(overloaded_error)見前面兩篇專文。

二、錯誤響應長什麼樣

錯誤總是 JSON,頂層 type 是 error,裏面的 error 對象帶 type 和 message,另有 request_id 字段。官方示例:

json
{
  "type": "error",
  "error": {
    "type": "not_found_error",
    "message": "The requested resource could not be found."
  },
  "request_id": "req_011CSHoEeqs5C35K2UUqR7Fy"
}

每個響應還有同樣內容的 request-id 響應頭。在 SDK 裏,Python 和 TypeScript 都能從返回對象的 _request_id 屬性讀到。官方提醒,這些對象裏的值以後可能增加新的 type,所以不要把錯誤類型寫成死的窮舉。

三、400 invalid_request_error:先查什麼

官方對 400 的定義很寬:請求格式或內容有問題,也可能表示其他沒單獨列出的 4XX。另外,如果你的組織或工作區觸達了你自己設定的花費上限,同樣返回 400(Claude Code 工作區的上限可能返回 429)。

官方在“常見校驗錯誤”裏列了幾類,覆蓋了現在最容易遇到的情況:

  • 預填被拒:Claude 4.6 及之後的模型不支持預填助手消息,對話必須以用戶消息結尾。改用結構化輸出(見 /guides/claude-api-structured-outputs)、系統提示指令或 output_config.format;
  • 思考塊被改動:最近一條助手消息裏的 thinking 或 redacted_thinking 塊被編輯、重排、過濾或重建,會返回 400。工具調用後要把這些塊原樣傳回,包括 thinking 字段為空的塊;
  • 舊思考寫法被拒:Claude 4.7 及之後的模型不支持 thinking.type 為 enabled,應使用 adaptive 並配合 effort;反過來,較舊的 4.5 及更早模型不支持 adaptive。細節見 /guides/claude-api-extended-thinking;
  • 無法關閉思考:部分模型的思考始終開啟,把 thinking 設為 disabled 會 400;
  • 強制工具調用被拒:Opus 5.5、Sonnet 5.5、Fable 5.1、Mythos 5.1 不支持 tool_choice 取 any 或指定工具,用 auto 即可,必要時配合嚴格工具調用;
  • 花費上限:檢查控制檯裏為組織或工作區設定的限額。

排查順序可以這樣走:先讀 message;再核對是否傳了該模型不支持的參數(採樣參數、預填、思考設定、tool_choice);再核對消息結構(角色交替、內容塊類型);最後核對圖片、PDF 的限制,見 /guides/claude-api-image-input 與 /guides/claude-api-pdf-support。

四、401 authentication_error:密鑰有問題

官方說明:API 密鑰格式錯誤、已被撤銷或已過期都會返回 401。檢查:

  • 環境變量裏的 Key 有沒有多餘空格、引號或換行;
  • Key 是否在控制檯裏被刪除或輪換(獲取與管理見 /guides/claude-api-key-console);
  • 請求頭是否帶對:SDK 會自動帶,手寫 HTTP 請求要帶 x-api-key 和 anthropic-version。

有一種 401 不是密鑰的問題:如果資訊以 “CORS requests are not allowed for this Organization” 開頭,說明請求帶了瀏覽器才會加的 Origin 頭,而你的組織不允許從瀏覽器直接調用 Claude API(官方舉例:啟用了零數據保留,或 Compliance API)。改請求頭沒用,應當由你自己的後端發請求。

五、402、403、404、409

  • 402 billing_error:帳單或付款資訊有問題,去控制檯檢查付款資訊;
  • 403 permission_error:密鑰無權使用該資源,檢查組織的訪問權限和工作區設定;
  • 404 not_found_error:檢查接口路徑和 URL 裏的資源編號(比如文件 ID、批次 ID);
  • 409 conflict_error:請求與資源當前狀態衝突,例如資源被並發修改,或要求唯一的值已被佔用。先處理衝突,再重試。

六、413 request_too_large:請求太大

官方給出的第一方 Claude API 單個請求上限:

接口最大請求大小
Messages API128 MB
Token Counting API128 MB
Batch API256 MB
Files API500 MB

超過就返回 413,並且官方說明在第一方 API 上,這個錯誤是 Cloudflare 在請求到達 API 伺服器之前返回的。處理辦法:減小請求體。最常見的原因是大量 base64 圖片或 PDF,改用 Files API 上載後引用 file_id(見 /guides/claude-api-files-api),或拆分成多個請求。

413 和 500 類錯誤的處理思路

圖:本站根據 Claude 官方《Claude API errors》 整理的示意圖

七、500 api_error 與 504 timeout_error

  • 500 api_error:Anthropic 內部的意外錯誤。官方建議用指數退避重試,持續出現就聯絡官方並附上 request_id;
  • 504 timeout_error:請求處理超時。官方特別說明,timeout_error 也會出現在別的狀態碼上,比如請求在伺服器時限內還沒開始響應時返回 500。長耗時的 Messages 請求請用流式,見 /guides/claude-api-streaming,或用批量接口。

官方對長請求的建議:不要在不用流式的情況下把 max_tokens 設得很大,因為有些網絡會掐斷空閒連接,導致請求失敗或超時卻沒收到響應;批量接口讓你輪詢結果,不必保持一條不間斷的網絡連接,見 /guides/claude-api-message-batches。

八、SDK 已經幫你做了什麼

官方 SDK 會自動重試暫時性錯誤(連接錯誤、限流、5xx),預設重試 2 次,帶指數退避,並遵守 retry-after 響應頭。可用 max_retries(TypeScript 裏是 maxRetries)調整。SDK 還把錯誤拋成有類型的異常,例如 404 對應 anthropic.NotFoundError。官方建議捕獲具體的異常類,而不是去匹配錯誤訊息的字符串,並且先處理最具體的類。TypeScript 裏的異常類對應關係見 /guides/claude-api-typescript-quickstart。

常見問題

Q:同一個請求有時 200 有時 5xx?

5xx 多是暫時性問題,SDK 預設會重試。持續出現時,記錄 request_id 聯絡官方。

Q:流式請求顯示成功,但內容中斷?

流在 200 之後仍可能出錯,檢查有沒有收到 error 事件。

Q:錯誤訊息是英文,我看不懂?

本文列出的是官方給出的片段,把完整的英文資訊原樣複製進搜尋或官方文檔,通常能定位到對應的頁面。

參考資料

  • Claude 官方:Claude API errors — https://platform.claude.com/docs/en/api/errors

Nathaniel 的更多內容

  1. 01

    Claude Code 處理大倉庫:怎麼讓它只看需要的目錄(子目錄 CLAUDE.md、claudeMdExcludes、deny 規則)

    倉庫太大,Claude Code 總在讀無關文件、讀進別的包的規則?本文按官方大倉庫指南講:從哪個目錄啟動、子目錄 CLAUDE.md、claudeMdExcludes、Read 的 deny 規則、worktree.sparsePaths、additionalDirectories,以及一份合併後的配置示例。

    Claude0
  2. 02

    Claude Code 在 CI 裏跑:從本機 claude -p 到 GitHub Actions 的完整例子(自動審 PR、控成本)

    一條線走完 Claude Code 的 CI 用法:先在本機用 claude --bare -p 配 --json-schema 跑通,再寫進 GitHub Actions 用 claude-code-action@v1 自動審 PR,最後加上 --max-turns、超時、並發限制來控成本,並附上常見故障的排查順序。

    Claude0
  3. 03

    Claude Code 自定義 subagent 實例:測試員、調試員、只讀調研員、只讀數據庫員怎麼寫

    四個可直接改的 subagent 實例:跑測試的 test-runner、找根因的 debugger、只讀調研員、用 PreToolUse hook 限成只讀 SQL 的 db-reader;講 tools、disallowedTools、model、maxTurns 怎麼配,怎麼點名調用。

    Claude0
  4. 04

    Claude Code 的 CLAUDE.md 模板:前端、後端、數據分析各一份,附拆分與自檢方法

    直接拿去改的三份 CLAUDE.md 模板(前端、後端、數據分析),每份都控制在官方建議的 200 行以內;再講怎麼用 .claude/rules 的 paths 拆出專屬規則、用 @ 導入長文檔,以及用 /context all 和 /doctor prompt-audit 檢查是否生效。

    Claude0
  5. 05

    Claude Code 自己寫一個插件並發布到 marketplace:plugin.json、marketplace.json、validate 到團隊安裝的完整流程

    想把自己寫的 Skill、Hook 打包給團隊用?按 Claude Code 官方 Plugins 文檔,從目錄結構、plugin.json、claude plugin validate,到寫 marketplace.json、推到 Git、讓同事一條命令安裝,再到版本更新,走完一遍完整流程。

    Claude0
  6. 06

    Claude Code 寫一個會自動觸發的 Skill:從需求到觸發,用 description、when_to_use 和 paths 控制它什麼時候出場

    寫好的 Skill 總是不觸發,或者什麼都觸發?本文按 Claude Code 官方「Extend Claude with skills」走一遍完整實例:把「改數據庫遷移前先檢查」寫成一個會自動出場的 Skill,包含 description、when_to_use、paths、附帶腳本、觸發測試和評估。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 配 Sentry MCP 排查線上報錯:添加命令、瀏覽器授權、貼 issue 連結修 bug 和插件子智能體

    線上報錯只能手動複製堆棧給 Claude Code?Sentry 官方提供 MCP 服務,可以讓它直接讀 issue、堆棧和 trace。本文按 Claude Code 官方 MCP 文檔和 Sentry MCP 官方說明,講添加命令、/mcp 授權、典型排查流程、插件方式和自託管注意事項。

    Claude0
  2. 02

    Claude Code 配 Context7 MCP 查最新文檔:兩種安裝方式、use context7 怎麼寫、指定庫和版本

    Claude Code 寫出來的代碼用了舊版 API?Context7 是一個把庫的最新文檔餵給編程助手的 MCP 服務。本文按 Context7 官方倉庫和文檔,講兩種安裝方式、在 Claude Code 裏的添加命令、use context7 與 library ID 的寫法,以及使用時的注意事項。

    Claude0
  3. 03

    Claude API 用量層級與速率限制:Evaluation / Start / Build / Scale 怎麼分、月度花費上限、自設上限和怎麼申請提額

    Claude API 的限額到底按什麼算?按官方《Rate limits》講清用量層級、RPM / ITPM / OTPM、緩存讀取為何不佔 ITPM、各層級月度花費上限、自設花費上限的 400、工作區限額、響應頭,以及在 Console 裏 Request tier increase 提額。

    Claude0
  4. 04

    Claude API 模型 ID 怎麼寫、怎麼查可用模型:dateless 命名、別名區別、Models API 的 lifecycle 和 capabilities

    model 參數該填什麼?按官方《Models overview》《Model IDs and versioning》《List Models》講清 Claude 模型 ID 的格式、4.6 之前帶日期與之後不帶日期的區別、別名是什麼,以及用 GET /v1/models 查可用模型、生命週期和能力字段。

    Claude0
  5. 05

    Claude API 代碼執行工具(code execution)怎麼用:tools 寫法、上載文件分析、取回生成文件、容器限制和計費

    想讓 Claude API 真的跑代碼做數據分析、生成圖表和文件?按官方《Code execution tool》講清三個工具版本、最小請求、上載 CSV 分析、$OUTPUT_DIR 取回文件、容器內存與聯網限制、錯誤碼、容器複用和計費規則。

    Claude0
  6. 06

    Claude API 聯網搜尋工具(web search tool)怎麼用:tools 寫法、max_uses、域名過濾、引用字段和計費

    想讓 Claude API 回答帶最新資訊?按官方《Web search tool》講清 web_search 工具的三個版本、請求寫法、max_uses、域名過濾、引用字段、錯誤碼和計費,附排查表。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~