Router One

Codex CLI 挂在中转上?根因是 Responses API

OpenAI 的 Codex CLI 调用的不是经典的 Chat Completions API,而是更新的 Responses API 线协议。多数 OpenAI 兼容中转只实现了 Chat Completions,于是同一个 key 在 curl 里正常、放进 Codex 就 404 或报格式错误。Router One 原生实现了 Responses 线协议(wire_api = "responses"),改两分钟配置即可跑通。

一句话根因

Codex 把请求发往 /responses 风格的路径,请求 schema 也是 Chat Completions 服务端不认识的。只会说 Chat Completions 的中转只能回 404(路径不存在)或 400(字段不识别)。换 key、换模型都救不了线协议不匹配——必须网关本身支持。

可用的配置

在 ~/.codex/config.toml 里把 Codex 指向 Router One,并在运行 codex 的同一个 shell 里导出密钥:

config.toml
# ~/.codex/config.toml
model_provider = "router"

[model_providers.router]
name = "router"
base_url = "https://api.router.one/v1"
requires_openai_auth = true
wire_api = "responses"

# 在 shell 里:
# export OPENAI_API_KEY=sk-your-router-one-key

报错排查表

改完配置仍然失败时:

症状原因修复
所有请求都 404base_url 指向了不支持 Responses API 的中转,或有拼写错误base_url 精确设为 https://api.router.one/v1,并保留 wire_api = "responses"。
401 未授权运行 codex 的 shell 里看不到 OPENAI_API_KEY在同一会话(或 shell profile)里导出密钥,重启终端后再运行 codex。
模型不存在模型 ID 与目录不一致从 /models 页复制精确 ID——区分大小写。
402 余额不足钱包或 Key 消费上限用尽充值,或在 Dashboard → API Keys 调高 maxSpend。
配置像是没生效Codex 读的配置文件不是你改的那个确认文件位于 ~/.codex/config.toml(Windows:%USERPROFILE%\.codex\config.toml)。

用 trace 验证

请求一旦到达网关,每次 Codex 调用都会出现在 Dashboard → Logs 里,带模型、tokens、花费和状态。如果 Codex 在报错而日志是空的,问题仍在本地——配置路径或环境变量;如果日志里有 4xx 记录,trace 会直接指出撞上的限制。

常见问题

为什么我的 key 在 curl 里能用,在 Codex 里不行?
curl 测的是 Chat Completions 面;Codex 用的是 Responses API 线协议。一个中转完全可以通过 curl 测试、却对 Codex 返回 404。网关必须原生实现 Responses 线协议——Router One 支持。
wire_api = "responses" 到底是干什么的?
它告诉 Codex 用哪种协议形态与该 provider 块通信。设为 "responses" 时,Codex 发送 Responses API 格式的请求;对面的端点必须原生理解它。
base URL 要不要带 /v1?
要——Codex 用的 OpenAI 兼容 base URL 是 https://api.router.one/v1,包含 /v1。这和 Claude Code 正好相反:Anthropic 兼容 base URL 不带 /v1。
通过网关 Codex 能用哪些模型?
目录里任何具备对话能力的模型,用精确的模型 ID 即可——/models 页列出了 ID、价格和上下文窗口,不锁定在单一模型系列。
中国大陆能用吗?
能。网关在大陆可直连、无需 VPN;上面的 config.toml 在任何地区都完全一致。