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。
还是没解决?把报错贴进来
新用户福利:先免费试,再决定充值
注册就送积分,可兑换 API 额度。拿真实请求验证本页结论,比看十篇教程都有用。
领免费额度