中文 ▾
获取 API 密钥

Codex API 基础 URL:如何让你的客户端指向我们的服务

该服务的 codex api 基础 URL 为 https://api.getcodexapi.com/v1,模型 ID 为 uncensored,你的密钥放在标准的 Bearer 头中。更改这些值后,任何 OpenAI SDK 或客户端均可使用。

更新于

一根连接笔记本电脑和服务器立方体的发光电缆,值如何将客户端指向 API 基础 URL

要点

  • 基础 URL:https://api.getcodexapi.com/v1(包含 /v1,不包含接口路径)。
  • 模型 ID 为 uncensored,API 密钥方式为 Authorization: Bearer 加上你的密钥。
  • 在连接大型应用之前,先使用 GET /v1/models 测试连接。
  • 大多数故障源于重复的 /v1、多余的路径或错误的密钥。

你需要三个值

每个 OpenAI 兼容客户端都需要相同的三个信息。以下是该服务对应的内容。

设置值
Base URLhttps://api.getcodexapi.com/v1
API 密钥来自 API 密钥页面 的密钥
模型uncensored

密钥通过 Authorization: Bearer YOUR_KEY 发送。你可以调用的两个接口是 POST /v1/chat/completions 和 GET /v1/models。这是一个独立服务,运行一个开放权重模型,并非 OpenAI 的 Codex,因此不要将 OpenAI 的接口地址或密钥填入同一设置中。

使用 curl 检查连接

在编辑任何应用配置之前,请先在终端中确认密钥和 URL 有效。列出模型是开销最小的检查方式,因为它不需要提示词:

curl https://api.getcodexapi.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

你应该得到一个包含模型 uncensored 的 JSON 列表。然后发送一个真实的补全请求:

curl https://api.getcodexapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Say hello in five words."}]
  }'

如果两项调用都成功,后续任何失败的问题都出在你的客户端配置中,而非服务本身。响应头包含 X-Request-Id,如果你需要追踪特定调用,保留它很有用;以及 X-Balance-USD,显示你剩余的预付额度。

Python 配合 OpenAI SDK

官方的 openai 包在客户端构造函数中接受基础 URL。你的代码其他部分无需更改。

from openai import OpenAI

client = OpenAI(
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "Explain what a base URL is in two sentences."},
    ],
)
print(resp.choices[0].message.content)

如果你希望将配置与代码分离,SDK 也会从环境变量中读取 OPENAI_BASE_URL 和 OPENAI_API_KEY:

export OPENAI_BASE_URL="https://api.getcodexapi.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"

设置后,OpenAI() 无需参数即可自动获取这些变量。这很方便,因为基于该 SDK 构建的许多第三方工具无需任何代码更改即可继承相同的变量。

Node.js

JavaScript SDK 使用相同的选项名称,拼写为 baseURL。

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.getcodexapi.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Write a haiku about version control." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

启用 stream: true 时,流式输出以服务器发送事件(SSE)形式返回,并在末尾包含用量信息。请注意,流式请求会占用一个并发槽位,直到流结束。如果你放弃流但未关闭连接,它仍会占用该槽位。

具有设置界面的应用

桌面工具和编辑器通常将字段标记为以下三种名称之一:"Base URL"、"API Base" 或 "OpenAI-compatible endpoint"。它们都需要相同的字符串。以下注意事项可节省时间:

  • 选择 OpenAI 或“自定义 OpenAI 兼容”提供商类型,而不是特定供应商的类型。
  • 如果应用有自由文本框,请手动输入模型名称。uncensored 是确切的 ID。
  • 如果应用有“测试连接”按钮,它通常会调用模型列表接口,该 API 支持此接口。
  • 某些应用会缓存来自先前提供商的模型列表。如果下拉列表看起来不正确,请删除旧条目并添加新条目。

如需特定编辑器的具体示例,请参阅连接 Cursor 指南,或查看 coding API 页面 了解整体情况。完整参数参考见 API 文档。

连接成功后,将确切值保存在你以后能找到的地方:URL、模型名称和创建密钥的日期。团队后来常因配置副本中仍保留旧值而浪费一小时。在仓库中创建一个包含占位符(而非真实密钥)的共享示例文件,即可避免这种情况。

常见错误及修复方法

URL 变成了 /v1/v1

某些客户端会自动附加 /v1。如果你的请求失败且客户端日志显示路径为 /v1/v1/chat/completions,请从输入的基础 URL 中删除 /v1。反之亦然:不添加它的客户端需要在你的设置中包含它。请求路径的日志可以很快解决这个问题。

你将完整的接口路径放入了基础 URL

基础 URL 以 /v1 结尾。不要在那里输入 /chat/completions。SDK 会为每次调用添加路径。

尾部斜杠或主机名拼写错误

大多数 SDK 容忍尾部斜杠,但一些较旧的工具通过纯拼接构建路径,导致出现双斜杠。如果你看到奇怪的 404 响应,请删除它。

密钥错误,或使用了其他服务的密钥

OpenAI 的密钥在这里无法使用,我们的密钥在其他地方也无法使用。API 密钥错误几乎总是意味着复制粘贴问题,例如缺少字符或末尾有空格。

curl 有效,但你的应用无效

如果 curl 成功而应用在使用相同 URL 和密钥时失败,差异在于环境。检查应用是否在代理后面运行,或在没有出站访问权限的容器中运行,是否读取了来自其他项目的旧环境变量(如残留的 OPENAI_BASE_URL),以及配置文件是否覆盖了你在代码中设置的值。在请求之前打印客户端将要调用的最终 URL,可以在一分钟内解决大多数此类情况。

HTTP 429

这意味着达到了限制。错误代码 rate_limited 表示每分钟请求数,concurrency 表示同时请求过多。完整密钥允许 8 个并发请求和每分钟 300 个请求;试用密钥允许 2 个并发请求和每分钟 60 个请求。在临时过载时,你还会收到带有 Retry-After: 5 头的 429 响应,因此等待五秒后重试。

LangChain 并将 URL 集中管理

基于 OpenAI 客户端构建的框架采用相同的值。在 LangChain 的 OpenAI 集成中,参数命名如下:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)
print(llm.invoke("Name three uses of a base URL.").content)

无论使用什么框架,都不要将 URL 分散在你的代码中。将其放在一个环境变量或一个设置文件中,并从中读取。这样,在测试密钥和生产密钥之间切换,或在不同机器之间切换时,只需更改一行。它还能将密钥保留在你的仓库之外:将密钥存储在一个环境变量或密钥管理器中,不要存储在已提交的文件中。

如果你正在寻找 OpenAI 自己的 Codex 产品的接口,这不是。它们的基础 URL 和API 密钥由 OpenAI 记录,因此请遵循它们当前的文档。此页面上的地址属于一个独立的服务,仅接受在此处颁发的密钥。

连接后可发送的内容

该接口支持流式输出、tool calling(tools、tool_choice,结果以 role: "tool" 消息返回)以及通过 response_format: {"type": "json_object"} 实现的 JSON 模式。参数 temperature、top_p、stop、seed 以及惩罚项会透传。上下文窗口为 100,000 token(包含提示词和补全),最大请求体为 8 MB。

它仅支持文本。没有图像或音频生成、没有嵌入(embeddings)也没有微调,因此依赖这些功能的客户端功能在此 Base URL 下无法使用。按 token 计费,输入为每 1M token $0.15,输出为每 1M token $0.50;定价页面 提供了具体示例。

问答

Base URL 是什么?

它是 https://api.getcodexapi.com/v1。在任何 OpenAI 兼容的 SDK 或应用中使用它作为 Base URL,并将模型设置为uncensored。

这是官方的 OpenAI Codex 接口吗?

不是。这是一个独立的、OpenAI 兼容的 API,运行一个开放权重模型。它不由 OpenAI 或其他任何模型供应商运营。

为什么更改 Base URL 后会出现 404 错误?

通常是路径错误,例如重复的 /v1 或将接口路径包含在 Base URL 中。请检查客户端的请求日志并进行调整。

我需要特殊的 SDK 吗?

不需要。标准的 OpenAI Python 和 Node.js SDK 均可使用,使用 curl 进行普通 HTTP 请求也可以。你只需更改 Base URL、密钥和模型名称。

只差一张表单,即可获得密钥

创建账户,复制密钥,更改基础 URL。这就是全部设置。

获取 API 密钥