文档
身份验证
最后更新:
完成一次请求验证所需的全部内容:密钥从哪里来、如何发送、如何安全保存,以及每种验证错误的含义。
ChatGPT API 的验证方式与官方 OpenAI API 完全一致:每个请求都通过 HTTPS,在 Authorization 请求头中以 Bearer 令牌形式携带 API 密钥。
Authorization: Bearer YOUR_API_KEY三个步骤
- 1
创建密钥
注册并在仪表盘中生成密钥。新账户会获得 $0.25 测试余额。
- 2
以 Bearer 令牌发送
为每个请求加上 Authorization 请求头,或把密钥交给 OpenAI SDK,由它自动构造请求头。
- 3
指向我们的 base URL
把 api.openai.com 换成我们的网关。路径、请求体、流式传输与错误结构完全一致。
带验证的请求
同一个请求在三种客户端中的写法。与官方 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"}'{
"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 的一切都是公开的。请把密钥放在环境变量或平台的密钥管理服务中,在运行时读取。
export CHATGPT_API_KEY="your_api_key_here"setx CHATGPT_API_KEY "your_api_key_here"验证错误
失败时会连同状态码返回 JSON 错误体。实践中最常遇到以下四种。
| 状态码 | 含义 | 如何解决 |
|---|---|---|
| 401 | 密钥缺失、格式错误或已吊销 | 检查请求头是否为 Authorization: Bearer、一个空格再加密钥,并确认密钥未在仪表盘中轮换。 |
| 403 | 密钥有效,但请求不被允许 | 通常是账户尚无权访问的模型。请对照模型页面核对模型 ID。 |
| 404 | base 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 或刷新令牌。
密钥泄露了怎么办?
立刻在仪表盘中轮换。旧密钥会立即失效,由它产生的计费也随之停止。
下一步
身份验证已完成。现在发出真实请求,或挑选合适的模型。