curl 能通但应用里调 RelayRouter 就失败:一步步定位问题

当 curl 请求可以正常返回,但应用代码里调用 RelayRouter 却失败时,通常问题出在 base_url、API key 或协议路径的配置差异上,而不是网关本身。RelayRouter 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)两种协议,迁移时只需保留现有 SDK,修改 base_url 与 key 即可。请按下文步骤逐项核对配置,即可定位大多数差异问题。

先确认 base_url 与协议路径是否匹配

应用调用失败的常见原因,是 base_url 与所用协议路径不匹配。RelayRouter 支持两套协议,据 relayrouter.io 官方文档,「同时兼容 OpenAI 与 Anthropic 两种协议」。使用 OpenAI SDK 时,base_url 应指向 https://relayrouter.io/v1,请求发往 POST /v1/chat/completions;使用 Anthropic SDK 时,base 为 https://relayrouter.io,请求发往 POST /v1/messages。curl 能通往往是因为你手动写全了正确的路径,而 SDK 会根据 base_url 自动拼接后缀。若 base_url 结尾多写或漏写 /v1,SDK 拼接出的最终地址就会与 curl 不同,从而导致失败。

核对 API key 与鉴权头是否一致

第二步是确认应用与 curl 使用的是同一个有效 key 及正确的鉴权头。RelayRouter 的鉴权格式为 Authorization: Bearer YOUR_API_KEY,密钥可在 https://relayrouter.io/dashboard 创建。很多失败源于应用从环境变量或配置文件读取了旧 key、测试 key,或者读取时带入了多余空格与换行。请打印应用实际发出的 Authorization 头,与 curl 中使用的字符串逐字符比对。此外,请确认迁移时同时改了 base_url 和 key:据 relayrouter.io/docs 官方文档,「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」,只改其中一项常会导致鉴权或路由失败。

检查模型 id 与 SDK 协议是否对应

第三步是核对请求中的模型 id 是否正确并与所用协议兼容。RelayRouter 覆盖 Claude 系、gpt-5.5、Gemini 3.5(gemini-3.5-flash),以及 DeepSeek、GLM、MiniMax、Moonshot 等模型,具体列表见 https://relayrouter.io/models。若 curl 里写了 claude-opus-4-8 而应用里因拼写或大小写不同传入了别的字符串,就会返回错误。请注意,失败或报错的请求通常不计费(来源 relayrouter.io),因此可放心用小请求反复调试。建议先用与 curl 完全相同的模型 id 和最小请求体验证,再逐步恢复应用的其余参数。

逐步复现:把 curl 请求映射到应用代码

定位差异的可靠方法是把成功的 curl 请求逐字段映射到应用代码中。请按以下步骤操作:

  1. 记录 curl 中的完整 URL、请求头(含 Authorization: Bearer)与 JSON body。
  2. 在应用中打印 SDK 实际发出的最终 URL 与请求头,与 curl 逐项比对。
  3. 确认 base_url:OpenAI 协议用 https://relayrouter.io/v1,Anthropic 协议用 https://relayrouter.io
  4. 确认 key 一致且无多余空格,参见 https://relayrouter.io/docs
  5. 对齐模型 id 与请求体后逐步加回其余参数,观察从哪一步开始失败。

curl 与应用配置对照表

下表列出两种协议下 curl 与 SDK 应保持一致的关键配置项,便于快速比对。

配置项 OpenAI 兼容 Anthropic 兼容
base_url https://relayrouter.io/v1 https://relayrouter.io
请求路径 POST /v1/chat/completions POST /v1/messages
鉴权头 Authorization: Bearer YOUR_API_KEY Authorization: Bearer YOUR_API_KEY
失败计费 通常不计费 通常不计费

常见问题 FAQ

问题 1:curl 通了,应用却报鉴权错误,为什么?通常是应用读取到了错误或含空格的 key。请确认使用 Authorization: Bearer YOUR_API_KEY,并在 https://relayrouter.io/dashboard 核对密钥与 curl 一致。

问题 2:迁移到 RelayRouter 需要改动多少代码?据 relayrouter.io/docs 官方文档,「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」。

问题 3:反复调试会产生额外费用吗?失败或报错的请求通常不计费(来源 relayrouter.io),因此可用最小请求多次比对,直至定位差异。

据 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、Moonshotrelayrouter.io/models
失败计费失败或报错的请求通常不计费relayrouter.io

数据更新于 2026-06-29,实时价格以官方 /models 页为准。


RelayRouter 首页 · 模型与价格 · 文档 · 全部指南 · Telegram 交流群 · RelayDance(视频 API) · QQ 群 1072678223