跳到主要内容
ChatGPT API
文档

文档

身份验证

最后更新:

完成一次请求验证所需的全部内容:密钥从哪里来、如何发送、如何安全保存,以及每种验证错误的含义。

ChatGPT API 的验证方式与官方 OpenAI API 完全一致:每个请求都通过 HTTPS,在 Authorization 请求头中以 Bearer 令牌形式携带 API 密钥。

Authorization: Bearer YOUR_API_KEY

三个步骤

  1. 1

    创建密钥

    注册并在仪表盘中生成密钥。新账户会获得 $0.25 测试余额。

  2. 2

    以 Bearer 令牌发送

    为每个请求加上 Authorization 请求头,或把密钥交给 OpenAI SDK,由它自动构造请求头。

  3. 3

    指向我们的 base URL

    把 api.openai.com 换成我们的网关。路径、请求体、流式传输与错误结构完全一致。

创建 API 密钥

带验证的请求

同一个请求在三种客户端中的写法。与官方 OpenAI 配置相比只有 base URL 不同,Authorization 请求头由 SDK 根据传入的密钥自动生成。

带验证的请求
1curl https://api.llm-gate.tech/v1/responses \2  -H "Content-Type: application/json" \3  -H "Authorization: Bearer $CHATGPT_API_KEY" \4  -d '{5    "model": "gpt-5.4-mini",6    "input": "ping"7  }'
带验证的请求
1import os2from openai import OpenAI3 4client = OpenAI(5    api_key=os.environ["CHATGPT_API_KEY"],6    base_url="https://api.llm-gate.tech/v1",7)8 9response = client.responses.create(model="gpt-5.4-mini", input="ping")10print(response.output_text)
带验证的请求
1import OpenAI from "openai";2 3const client = new OpenAI({4  apiKey: process.env.CHATGPT_API_KEY,5  baseURL: "https://api.llm-gate.tech/v1",6});7 8const response = await client.responses.create({9  model: "gpt-5.4-mini",10  input: "ping",11});12console.log(response.output_text);

验证密钥

最省钱的检查方式是发一个很小的请求。返回 200 就说明密钥有效、base URL 正确且余额未用尽。

发送一个请求
curl https://api.llm-gate.tech/v1/responses \
  -H "Authorization: Bearer $CHATGPT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.4-mini", "input": "ping"}'
200 OK - 密钥可用
{
  "id": "resp_9f2c41a8",
  "object": "response",
  "model": "gpt-5.4-mini",
  "output_text": "pong",
  "usage": {
    "input_tokens": 8,
    "output_tokens": 2,
    "total_tokens": 10
  }
}

如果返回 401,说明密钥错误、已被吊销,或请求头格式不对。下表逐一列出了这些情况。

把密钥保存在环境变量中

切勿把密钥硬编码进源码,也绝不要发送到浏览器:进入客户端 JavaScript 的一切都是公开的。请把密钥放在环境变量或平台的密钥管理服务中,在运行时读取。

macOS / Linux
export CHATGPT_API_KEY="your_api_key_here"
Windows (PowerShell)
setx CHATGPT_API_KEY "your_api_key_here"

验证错误

失败时会连同状态码返回 JSON 错误体。实践中最常遇到以下四种。

状态码含义如何解决
401密钥缺失、格式错误或已吊销检查请求头是否为 Authorization: Bearer、一个空格再加密钥,并确认密钥未在仪表盘中轮换。
403密钥有效,但请求不被允许通常是账户尚无权访问的模型。请对照模型页面核对模型 ID。
404base URL 或路径错误网关在 /v1 下镜像官方路由。出现 404 通常说明客户端仍指向其他主机。
429触发限流或余额已用尽退避后按指数抖动重试。若重试持续失败,请充值:余额为零同样返回该状态码。

安全

泄露的密钥在被吊销之前一直按你的账户计费,请像对待密码一样对待它。

建议

  • 把密钥保留在服务端,浏览器与移动端流量经由自己的后端转发。
  • 为每个环境使用独立密钥,吊销其中一把不会造成停机。
  • 把密钥存放在密钥管理服务或 CI 的加密密钥中。
  • 密钥一旦出现在仓库、日志或截图中,立即轮换。

避免

  • 把密钥提交到 git,包括 .env 文件和 notebook。
  • 把密钥粘贴到问题追踪系统、聊天或缺陷报告中。
  • 把密钥打包进前端产物、移动应用或浏览器扩展。
  • 在请求追踪中记录 Authorization 请求头。

常见问题

需要与 OpenAI 不同的密钥吗?

需要。ChatGPT API 签发自己的密钥。官方 OpenAI 密钥无法通过本网关的验证,本网关的密钥也无法用于 api.openai.com。注册后在仪表盘中生成密钥即可。

API 密钥会过期吗?

不会。密钥在你于仪表盘中吊销或轮换之前一直有效,吊销对新请求立即生效。

可以使用官方 OpenAI SDK 吗?

可以。在 Python 中设置 base_url、在 Node 中设置 baseURL 指向我们的网关,并把密钥作为 api key 传入。SDK 会自行构造 Bearer 请求头,其余调用代码保持不变。

每个请求都要带密钥吗?

是的。该 API 无状态,因此每个请求都携带自己的 Authorization 请求头,没有登录调用、会话 cookie 或刷新令牌。

密钥泄露了怎么办?

立刻在仪表盘中轮换。旧密钥会立即失效,由它产生的计费也随之停止。

下一步

身份验证已完成。现在发出真实请求,或挑选合适的模型。