OrcaRouter

Codex 配置 API Key 和 Base URL:从安装到首次调用

更新于 2026-10-26 · orcarouter.cyou

简答:Codex 的 API Key 通常不直接写进 config.toml,而是通过环境变量交给 env_key;Base URL 写入用户级 config.toml,并按网关要求决定是否包含 /v1。先确认网关提供商给出的完整地址、模型名、认证变量和 Responses API 支持,再用 codex --version、codex doctor 或实际请求验证。

定义:Codex 配置 API Key 和 Base URL,是在用户级 config.toml 中指定模型提供商与接口地址,并通过环境变量或 Codex 凭证存储提供认证信息。

先用这张表确定配置方式

如果你准备让 Codex 连接某个 OpenAI 兼容网关,先不要把未经核实的品牌地址直接复制进配置。当前可核验的 Codex 文档要求网关支持 Responses API;以 Gateway compatibility requirements 为准,网关需要处理 POST /v1/responses、流式事件和最终的 response.completed。

场景推荐配置Key 保存位置
已有 OpenAI 兼容地址openai_base_url 或自定义 provider环境变量或 Codex 凭证存储
网关有独立模型别名model_provider 加 [model_providers.id]env_key 指向环境变量
需要管理员或脚本刷新令牌自定义 provider 的 auth.command由命令输出 Bearer token
只想临时测试用 codex --config 或临时环境变量测试结束后清理 shell 环境

Codex 的配置文件、项目配置边界和 CODEX_HOME 说明,可查看 Configuration Reference。本文不是 OrcaRouter 官方页面;OrcaRouter 的具体 Key、模型名和 Base URL 如果没有从其可核验文档取得,应保留为占位符,并以服务提供方给出的信息为准。

安装 Codex 并确认版本

  1. 使用 npm 安装:npm install -g @openai/codex。
  2. 安装后执行:codex --version。
  3. Windows 用户按官方说明通过 WSL2 使用 Linux 环境;Microsoft 的 Codex 配置示例将 Windows 场景列为 WSL2,并展示了安装与版本检查步骤,见 Codex with Azure OpenAI in Microsoft Foundry Models。
  4. 确认你拿到四项信息:完整 Base URL、模型名、认证方式、网关是否支持 Responses API。不要只凭一个能返回文本的 Chat Completions 地址判断兼容。

推荐方案:config.toml 加环境变量 API Key

用户级配置默认位于 macOS 和 Linux 的 ~/.codex/config.toml;Windows 原生客户端通常使用 %USERPROFILE%\.codex\config.toml。在 WSL 中,Codex 使用 Linux 的 CODEX_HOME 和路径。官方网关示例要求把模型、provider 选择放在第一个 TOML 表之前,示例可参考 Use API/provider credentials through a gateway。

下面是可复制的通用模板。所有大写占位符都必须替换成服务提供方实际给出的值:

model = "YOUR_MODEL_ID"
model_provider = "custom-gateway"

[model_providers.custom-gateway]
name = "Custom Gateway"
base_url = "https://YOUR_VERIFIED_BASE_URL/v1"
wire_api = "responses"
env_key = "YOUR_API_KEY_ENV"

如果提供方给出的完整地址已经包含 /v1,不要重复追加;如果文档给出的是资源根地址,则按该文档补齐路径。不要把 YOUR_API_KEY_ENV 换成 Key 本身,它必须是环境变量名。Microsoft 的官方示例也明确将 env_key 配置为变量名,并在终端中单独设置变量。

macOS、Linux、WSL:

export YOUR_API_KEY_ENV="你的_API_Key"
codex doctor
codex

PowerShell:

$env:YOUR_API_KEY_ENV = "你的_API_Key"
codex doctor
codex

为降低泄露风险,优先使用交互式读取或系统密钥环,不要把 Key 写进 Git、截图、命令历史或 URL 查询参数。Codex 的认证存储方式包括文件、keyring、自动选择和仅进程内存,详见 Authentication。

openai_base_url 与自定义 provider 怎么选

如果只是把内置 OpenAI provider 指向一个兼容网关,可以在 config.toml 中使用 openai_base_url;官方高级配置文档给出了这一用途。若网关有独立的 provider ID、专用环境变量、模型目录或自定义认证头,使用 model_provider 与 [model_providers.id] 更清晰,参考 Advanced Configuration。

配置项适合情况需要注意
openai_base_url只需要改变内置 OpenAI provider 的地址仍要确认目标地址支持 Codex 所需的 Responses API
model_provider网关有独立模型名、Key 变量或认证头provider ID、表名和顶层 model_provider 必须一致
wire_api = "responses"Codex 连接 Responses API 网关不能用 Chat Completions 的可用性替代验证
model_catalog_url 或 model_catalog_json网关使用 Codex 未内置的自定义模型别名目录中的别名和 model 必须匹配

首次验证:按顺序检查四层

  1. 本地层:执行 codex --version,确认命令来自预期环境;WSL 与 Windows 原生终端不要混用配置目录。
  2. 配置层:执行 codex doctor,启动后使用 /status 查看当前模型和 provider。官方网关接入流程将这两项作为检查现有配置和确认连接的方式。
  3. 认证层:确认启动 Codex 的同一个进程能读取环境变量。桌面应用不一定继承你在终端临时设置的变量,因此需要重新启动应用或使用系统级环境配置。
  4. 接口层:用一个简单任务验证,例如让 Codex 返回固定短语;同时确认网关日志记录了正确的模型别名和 Responses 请求。仅有健康检查或普通文本返回,不能证明工具调用、流式输出和后续轮次都兼容。

401、403、404、429 与连接错误排查表

现象优先检查处理动作
401 Unauthorized环境变量未传入、Key 过期、认证头类型不匹配确认 env_key 写的是变量名,重新打开当前终端或应用,再核对提供方要求的认证方式。
403 Forbidden账户、项目或模型权限向服务提供方确认 Key 是否有该模型和 Responses API 权限;不要只更换模型名。
404 Not FoundBase URL 路径或 endpoint 不完整核对是否应包含 /v1,并确认网关是否提供 /v1/responses。
429 Too Many Requests限速、并发或账户额度查看响应头和网关控制台的限速信息,降低并发并等待服务端给出的重试时间。
ENOTFOUND、DNS 或超时域名解析、代理、网络或地址拼写先用系统 DNS 和 HTTPS 连接检查,再确认 Base URL 没有多余空格、路径或端口。
model not found模型别名不一致或模型目录缺失让提供方确认可用模型名;自定义别名需要匹配的模型目录,不能把上游模型名想当然地填入。
余额不足或额度错误服务提供方账户、项目余额或预算在提供方控制台核对余额、预算和 Key 所属项目;该信息不是 Codex 本地配置能够修复的。
流式中断网关缓冲、SSE 转发或未转发完成事件确认网关按 Responses API 转发 SSE,并保留终止的 response.completed 事件。

三个常见配置误区

常见问题 FAQ

Codex 的 Base URL 要不要写 /v1?

没有统一答案,取决于服务提供方给出的完整 API 路径。若提供方给出的 Base URL 是 https://example.com/v1,就直接填写它;若只给资源根地址,应按其文档补齐。Codex 网关兼容文档以 POST /v1/responses 为示例,因此修改前先核对实际 endpoint。

API Key 应该放在 auth.json 还是环境变量?

对于网关 API Key,优先使用环境变量配合 env_key,便于轮换且不把密钥写入配置。auth.json 或系统 keyring 主要由 Codex 的登录凭证存储机制使用;具体存储模式可在官方认证文档中核对。

为什么配置了模型名仍然提示 model not found?

模型名必须是网关实际暴露的别名,不一定等于上游模型的公开名称。如果网关使用 Codex 未内置的自定义别名,还可能需要匹配的 model_catalog_url 或 model_catalog_json,修改后重启 Codex。

Windows 设置了 API Key,Codex 仍然 401,怎么办?

先确认是在启动 Codex 的同一个 PowerShell 或 WSL 环境中设置变量;再检查变量名与 env_key 完全一致。若从桌面应用启动,终端里的临时变量可能不会继承,需要重启应用或使用应用进程可读取的环境配置。

OrcaRouter 的地址和模型名在哪里填写?

填写位置与其他兼容网关相同:地址放在 base_url,模型放在顶层 model,Key 通过 env_key 指向环境变量。本文没有把 OrcaRouter 的具体端点、模型清单或价格当作已核实事实,实际值请以该服务提供方当前公开文档或控制台显示为准。

常见问题

Codex 的 Base URL 要不要写 /v1?

没有统一答案,取决于服务提供方给出的完整 API 路径。若提供方给出的 Base URL 已经是 https://example.com/v1%EF%BC%8C%E5%B0%B1%E7%9B%B4%E6%8E%A5%E5%A1%AB%E5%86%99%EF%BC%9B%E4%BF%AE%E6%94%B9%E5%89%8D%E7%A1%AE%E8%AE%A4%E5%AE%9E%E9%99%85%E8%AF%B7%E6%B1%82%E6%98%AF%E5%90%A6%E5%BA%94%E8%90%BD%E5%88%B0 /v1/responses。

API Key 应该放在 auth.json 还是环境变量?

对于网关 API Key,优先使用环境变量配合 env_key,避免把密钥写入配置文件。auth.json 或系统 keyring 主要用于 Codex 登录凭证,具体存储模式以官方认证文档为准。

为什么配置了模型名仍然提示 model not found?

模型名必须是网关实际暴露的别名,不一定等于上游模型名称。自定义别名可能还需要匹配的 model_catalog_url 或 model_catalog_json,修改后重启 Codex。

Windows 设置了 API Key,Codex 仍然 401,怎么办?

确认变量是在启动 Codex 的同一个 PowerShell 或 WSL 环境中设置,并检查变量名与 env_key 完全一致。桌面应用可能不会继承终端临时变量。

OrcaRouter 的地址和模型名在哪里填写?

地址写入 base_url,模型写入顶层 model,Key 由 env_key 指向环境变量。具体端点、模型清单和权限应以该服务提供方当前公开资料为准,本文不把未核实值当作固定配置。

相关阅读

参考资料

  1. Use API/provider credentials through a gateway(learn.chatgpt.com)
  2. Gateway compatibility requirements(learn.chatgpt.com)
  3. Configuration Reference(learn.chatgpt.com)
  4. Advanced Configuration(learn.chatgpt.com)
  5. Authentication(learn.chatgpt.com)
  6. Codex with Azure OpenAI in Microsoft Foundry Models
  7. codex/README.md at main