docai.cc

Claude API Error 400:请求格式错误怎么解决

400高频400参数格式

30 秒结论

400 是你的请求体不符合接口规范,服务端拒绝解析。 Anthropic 的 400 有一个高频坑:忘了传 max_tokens(它是必填项,OpenAI 那边是可选)。

报错原文对照

{"type":"error","error":{"type":"invalid_request_error","message":"max_tokens: Field required"}}

{"type":"error","error":{"type":"invalid_request_error","message":"messages: Input should be a valid list"}}

{"type":"error","error":{"type":"invalid_request_error","message":"temperature: Input should be a valid number, unable to parse string as a number"}}

原因排序

概率 原因
35% Anthropic 缺 max_tokens
25% messages 结构不对(不是数组、缺 role/content)
20% 参数类型错(字符串传给了数字字段)
15% 该模型不支持这个参数(推理模型传 temperature)
5% 中文内容里有未转义的字符

修法

最小可复现请求

先用这个跑通,再一点点加参数:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

跑通了再逐个加:system → temperature → tools → stream。

messages 的正确结构

[
  {"role": "user", "content": "第一条"},
  {"role": "assistant", "content": "回复"},
  {"role": "user", "content": "第二条"}
]

常见错误:

  • content 写成对象而不是数组/字符串
  • role 写成 human / ai
  • 第一条就是 assistant

责任判定表

现象 责任方
同一个请求直连官方也 400 你的请求体
直连官方好、走中转站 400 中转站转换协议时出错
只有某个模型 400 该模型不支持你的参数组合

推理模型的坑

o1 / o3 / deepseek-reasoner 这类推理模型不接受 temperature。传了就是 400,报错里会说 unsupported parameter。

还是没解决?把报错贴进来

纯本地判断,不上传你的报错内容。支持 400 / 401 / 403 / 404 / 413 / 429 / 500 / 502 / 503 / 504 / 529 及常见错误码文字。

新用户福利:先免费试,再决定充值

注册就送积分,可兑换 API 额度。拿真实请求验证本页结论,比看十篇教程都有用。

领免费额度