Codex CLI 自定义 Base URL 配置教程:解决 invalid_api_key 和 api.openai.com 问题
api.openai.com,说明本地配置没有生效,而不是 Key 本身有错。使用 Link-AI 时,应在 ~/.codex/config.toml 中配置 openai_base_url 或 model_providers,长请求建议使用 api2.link-ai.cc/v1,直连源站避免 Cloudflare 120 秒超时和 524 错误。
最简配置(推荐长请求)
model = "gpt-5.5"
openai_base_url = "https://api2.link-ai.cc/v1"
普通请求(非长任务)
openai_base_url = "https://api1.link-ai.cc/v1"
Provider 版(如果最简版不生效)
model_provider = "linkai"
[model_providers.linkai]
base_url = "https://api2.link-ai.cc/v1"
experimental_bearer_token = "sk-你的key"
API Key 格式:sk-xxxxxxxx,从控制台获取
和 Link-AI 有什么关系?
Link-AI 是什么?
Link-AI 是 OpenAI-compatible API gateway,面向开发者提供 Claude、GPT 等模型的接入服务。
- api1:普通 API 请求、网页端、登录、注册、充值、支付回调
- api2:Claude Opus、Claude Code、Codex、长上下文、长输出、Agent 长任务直连通道
在 api1.link-ai.cc 控制台创建 API Key 后,即可在 Codex CLI 中使用。
如果担心扣费问题,使用 API 扣费检测工具验证 raw quota 变化。
为什么 Codex 还在请求 api.openai.com?
如果 Codex 报 invalid_api_key,但错误里显示的 URL 是 https://api.openai.com/v1/...,这通常不是 Key 本身的问题,而是 Codex 没有读取自定义 Base URL,仍然在请求 OpenAI 官方地址。
请按以下步骤排查:
- 确认
~/.codex/config.toml文件存在且路径正确 - 确认文件内容没有语法错误(TOML 格式对空格和引号敏感)
- 确认
openai_base_url包含/v1后缀 - 如果仍不生效,尝试使用
model_providers方式配置
前置准备
- 已安装 Codex CLI(
npm install -g @openai/codex或对应安装方式) - 拥有 Link-AI 账户,可在 api1.link-ai.cc 注册或登录
- 已获取 API Key(控制台 → API Keys → 创建密钥)
config.toml 最简配置
在 ~/.codex/config.toml 中添加一行配置:
model = "gpt-5.5" openai_base_url = "https://api2.link-ai.cc/v1"
此配置让 Codex CLI 所有请求通过 Link-AI 代理。长输出和复杂代码生成建议使用 api2 通道。
model_providers 自定义配置
如果最简版不起效(Codex CLI 仍然请求 api.openai.com),可尝试使用 model_providers 方式:
model = "gpt-5.5" model_provider = "linkai" [model_providers.linkai] name = "LinkAI" base_url = "https://api2.link-ai.cc/v1" wire_api = "responses" experimental_bearer_token = "sk-你的key"
其中 wire_api = "responses" 适配 OpenAI Responses API 模式。
Base URL 要不要带 /v1?
需要带 /v1。
Base URL 应填写 https://api2.link-ai.cc/v1,Codex CLI 会自动拼接 /chat/completions 等路径。如果只写 https://api2.link-ai.cc,Codex CLI 拼接后可能变成 /v1/chat/completions(少了前缀 slash),导致 404。
简单记法:填什么就填什么,让 Codex 自己拼后面的路径。
Codex CLI 长请求为什么建议用 api2?
Codex 复杂代码生成任务(如多文件修改、大规模重构)输出时间长,经过 Cloudflare 代理的 api1 通道有 120 秒超时限制,容易报 524。
api2 直连源站,等待时间由源站控制(1800 秒),不会有 524 问题。
api1 适合普通快速请求;api2 适合 Codex、Claude Code、Claude Opus 等需要长时间处理的任务。
常见错误排查表
| 错误现象 | 可能原因 | 解决方式 |
|---|---|---|
| invalid_api_key URL 是 api.openai.com |
config.toml 没生效,Codex 仍在请求 OpenAI 官方 | 检查 config.toml 路径和内容,尝试 provider 方式 |
| 524 Origin Timeout | Cloudflare 120 秒超时,长任务未完成 | 切换到 api2.link-ai.cc/v1,详见 524 解决页 |
| 404 Not Found | Base URL 重复拼接了 /v1 | 确认 Base URL 只含一个 /v1,如 https://api2.link-ai.cc/v1 |
| 401 / 403 Unauthorized | API Key 有误,或令牌无该模型权限 | 检查 Key 格式和令牌权限设置 |
| 503 Service Unavailable 长请求后出现 |
上游渠道不可用,或请求超时被切断 | 切换 api2 通道重试,或稍后再试 |
| invalid_api_key URL 确实是 Link-AI |
Key 本身无效、过期或无权限 | 在控制台重新生成 API Key |
api1 与 api2 的区别
| 通道 | Base URL | 适用场景 | 超时限制 |
|---|---|---|---|
| api1(Cloudflare 代理) | https://api1.link-ai.cc/v1 |
普通请求、网页端、充值、支付回调 | Cloudflare 120s |
| api2(直连,推荐长请求) | https://api2.link-ai.cc/v1 |
Claude Opus、Codex、长上下文、长输出 | 源站超时(1800s) |
注意:api2 只作为长请求 API 通道,不作为 New API 后台服务器地址(后台地址始终为 api1.link-ai.cc)。
常见问题
说明本地配置没有生效。检查 ~/.codex/config.toml 是否存在、路径是否正确、openai_base_url 是否包含 /v1 后缀。也可以尝试使用 model_provider 方式配置。
这通常不是 Key 本身的问题,而是 Codex 没有读取自定义 Base URL,仍然在请求 OpenAI 官方地址。解决方法:确保 config.toml 里的 openai_base_url 或 model_providers 配置正确。
需要带 /v1。Base URL 填写 https://api2.link-ai.cc/v1,Codex CLI 会自动拼接 /chat/completions 等路径。如果只写 https://api2.link-ai.cc,Codex CLI 拼接后可能变成 /v1/chat/completions(少了前缀),导致 404。
Codex 复杂代码生成任务(多文件修改、大规模重构)输出时间长,经过 Cloudflare 代理的 api1 通道有 120 秒超时限制,容易报 524。api2 直连源站,等待时间由源站控制(1800 秒),不会有 524 问题。
将 Base URL 从 api1.link-ai.cc/v1 切换为 api2.link-ai.cc/v1。api2 直连不走 Cloudflare,没有 120 秒超时限制,适合 Claude Opus、Codex 等长输出任务。
检查 Base URL 是否重复拼接了 /v1。如果你在 URL 里已经写了 /v1,Codex CLI 自动追加的路径就会导致 /v1/v1/... 出现 404。
检查 API Key 是否正确、是否包含空格或特殊字符、模型是否有权限。有些渠道模型有额度限制或白名单设置,请确认令牌关联的渠道支持该模型。
普通快速请求用 api1.link-ai.cc/v1;长请求(如复杂代码生成、多次往返对话)建议用 api2.link-ai.cc/v1,api2 直连源站,避免 Cloudflare 120 秒超时。