Claude API Error 400:请求格式错误怎么解决
400 参数错误的排查顺序:缺 max_tokens、messages 结构不对、模型不支持该参数,附最小可复现请求。
更新 2026-10-28
核验 2026-10-28 · 码农阿风
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。
你在这个站点上遇到过这个问题?
认领站点后可补充证据、申请公开核验;认证不改榜单排序,只对应可复核的检测与复测。
认领 / 申请认证