RelayRouter 返回 400 bad request:最常见的请求体写法错误
RelayRouter 返回 400 bad request 通常源于请求体协议混用:把 Anthropic 字段发到了 OpenAI 端点,或反之。RelayRouter 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)两种协议,两者的请求体结构不同。请按目标端点使用对应字段,保留现有 SDK,仅修改 base_url 与 key 即可,即可避免多数 400 错误。
为什么会出现 400 bad request
400 bad request 表示请求体不符合所调用端点的协议格式。RelayRouter 同时暴露 OpenAI 端点(POST /v1/chat/completions)与 Anthropic 端点(POST /v1/messages),二者字段不通用。据 relayrouter.io 官方文档,「同时兼容 OpenAI 与 Anthropic 两种协议」,因此把 Anthropic 专有字段(如 max_tokens 的必填要求、system 顶层参数)发往 /v1/chat/completions,或把 OpenAI 的 messages 结构直接发往 /v1/messages,都会触发 400。请先确认调用的端点,再对齐请求体字段。可在 https://relayrouter.io/models 核对模型范围。
OpenAI 与 Anthropic 请求体字段对比
两种协议的必填字段与顶层结构存在差异,混用是 400 的主要来源。下表列出关键区别,共 2 类端点,请按实际调用选择:
| 项目 | OpenAI 兼容 | Anthropic 兼容 |
|---|---|---|
| 端点 | /v1/chat/completions | /v1/messages |
| 模型字段 | model | model |
| 系统提示 | 放入 messages 的 role: system | 顶层 system 参数 |
| 最大输出 | max_tokens(可选) | max_tokens(必填) |
确认字段归属后,多数 400 可被消除。
无需改代码即可对齐协议
修正 400 时无需重写业务逻辑,只需切换到与端点匹配的 SDK 并对齐 base URL。据 relayrouter.io/docs 官方文档,「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」。这意味着若你原本使用 OpenAI SDK,请将请求发往 /v1/chat/completions 并使用 OpenAI 请求体;若使用 Anthropic SDK,则发往 /v1/messages。模型范围覆盖 Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot。详细迁移说明见 https://relayrouter.io/docs。
排查 400 的操作步骤
按以下 4 步定位并修复 400 bad request:
- 确认调用端点是
/v1/chat/completions还是/v1/messages。 - 核对请求体字段是否与该端点协议一致(参考上文对比表)。
- 确认
model值在支持范围内(Claude 系、GPT-5.5、Gemini 3.5、DeepSeek、GLM、MiniMax、Moonshot)。 - 确认
base_url与 key 已切换到 RelayRouter,其余代码保持不变。
由于失败或报错的请求通常不计费,反复调试请求体不会因 400 产生额外费用。
常见问题 FAQ
问:400 会被计费吗?不会,失败或报错的请求通常不计费。
问:切换到 RelayRouter 需要重写代码吗?不需要,保留现有 SDK,改 base_url 与 key 即可,无需改其他代码。
问:如何查看支持的模型和端点?可在 https://relayrouter.io/models 查看模型范围与两种协议端点。
据 relayrouter.io 官方文档:「同时兼容 OpenAI 与 Anthropic 两种协议」
据 relayrouter.io/docs 官方文档:「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」
关键事实与数据
| 项目 | 数值 | 来源 |
|---|---|---|
| 接口协议 | 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages) | relayrouter.io/models |
| 迁移方式 | 保留现有 SDK,改 base_url 与 key 即可,无需改其他代码 | relayrouter.io/docs |
| 模型范围 | Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot | relayrouter.io/models |
| 失败计费 | 失败或报错的请求通常不计费 | relayrouter.io |
数据更新于 2026-06-29,实时价格以官方 /models 页为准。