接入教程

OpenAI API Key 怎么获取:官方渠道与兼容网关的取舍

搜「OpenAI API Key 购买」的人通常卡在两个地方之一:分不清会员和 API 是两套计费,或者具备条件但支付过不去。这两件事的解法完全不同,先分清楚再往下看。

OpenAI API Key 两条获取路径对比:官方渠道与兼容网关各自的控制权与代价,附四项必验事项
两条路的差别在于你还控制多少,以及相应要自己做多少验证

先确认你要的是不是 API

这是最常见的误解,也是退款纠纷的高发点。两者的账户体系相通,额度完全独立

ChatGPT 会员OpenAI API
用在哪网页和 App 的对话界面你自己的代码里
怎么计费按月订阅按调用量,预充值
买了会员有 API 额度吗没有
买了 API 额度能用网页版吗不能
ChatGPT 会员与 OpenAI API 两条独立计费链路对比图,标注账户相通但额度不通
两条链路各自独立:买错了不是「额度没到账」,是买了另一样东西

如果你要的是在网页里对话,买 API Key 没有用;要在代码里调用,买会员也没有用。下单前先回答这一个问题,后面的内容才有意义。

中转、网关、代充这些概念的区别,以及各自解决什么问题,见API 中转站是什么

官方渠道需要什么

官方 API 的账单由 Stripe 处理,可用的支付方式与账单地址、发卡行所在地绑定。条件具备的话,官方是最直接的选择:账单清晰、模型确定、没有中间环节

流程是在 OpenAI 平台创建账户、绑定支付方式、预充值,然后在控制台创建 API Key。

拿到 Key 之后有几点值得立刻处理:

  • Key 只在创建时显示一次,之后无法再查看,只能重新生成——当场存进密码管理器
  • 按项目分 Key,出问题时可以单独吊销,不影响其他服务
  • 设置用量上限,避免代码缺陷导致的意外消耗,比如一个写错的循环
  • 不要把 Key 写进前端代码或提交到仓库,一旦泄露应立即吊销,而不是先查有没有被用过

密钥的存放、轮换与泄露处置,见API 密钥安全

支付过不去时的选择

支付校验通不过时,市面上有几类替代方案,各有代价。代价的核心差别在于「你还控制多少」

方案你控制什么主要代价
虚拟信用卡自己开卡、自己绑、自己充值,账户还是你的开卡费和充值手续费,卡段可能被拒
OpenAI 兼容网关下单和验收,账户在服务方服务费,以及多一层信任边界
购买他人账户几乎不控制账户随时可能被找回,不建议

第三类本文不展开,理由和购买成品会员账号一样:你拿到的是一个自己不拥有的账户。原始持有者随时可以通过找回流程把它要回去,而你没有任何凭据。

前两类是真实可选项。选第一类,你的验证工作是零——账户是官方的;选第二类,验证工作全在你自己身上,下一节讲要验什么。

用兼容网关时,必须核对的四件事

如果选择兼容网关,下面四项在下单前就要问清楚,不要等出账单才发现。

第一,计价口径

至少要能查到三样东西:单次请求的 token 用量(分输入、输出、缓存读、缓存写)、该次的计费金额、可导出的历史明细。三者缺一就无法核对账单——你只能接受它报给你的数字。

特别注意缓存读的计价。长上下文场景里缓存读的 token 量可能是输入的数倍,口径不清楚会让账单显著超出预期。同一份账单,按输入价算和按缓存读价算能差出好几倍。

倍率、缓存计价与结算口径的完整说明,见中转站倍率与计费口径

第二,模型真实性

模型 ID 是网关自己填的字符串,写什么都行。确认背后是不是你以为的模型,有两个可操作的办法:

看返回的 usage 结构是否匹配该代次模型,比如是否有 reasoning tokens 字段;以及故意发送一个不支持的参数值,看上游报错里会不会暴露真实模型名——转发层通常原样透传上游的错误文本。

更多验证手法见怎么验证中转站的模型是不是真的

第三,端点与协议覆盖

确认它支持你实际要用的端点,而不是只支持最常见的那一个。常见的差异:

端点用途是否常见缺失
/v1/chat/completions对话补全基本都有
/v1/responses新版响应接口部分缺失
/v1/embeddings向量嵌入经常没有
/v1/messagesAnthropic 协议按模型和分组不同
图片输入(URL 形式)多模态上游拉取常失败,base64 更可靠

最后两行值得留意。/v1/messages 的可用性常常是按分组开的,同一家的两个套餐结果可能不一样;而图片传 URL 需要上游主动去拉那个地址,失败率明显高于直接传 base64。

下单前用最小请求逐个试一遍,比看宣传页可靠。

第四,数据边界

网关在技术上能看到你发送的全部内容——包括你贴进去的代码和文档。确认四件事:是否记录请求正文、记录多久、是否用于训练、上游是官方还是另一层中转。

多层中转意味着更多不受控环节,排障也更难:出问题时你不知道是哪一层的问题,而你只能联系到最外面那一层。数据边界的完整核对方法见中转站的数据安全与隐私边界

一个下单前的最小验证流程

不要相信宣传页,用五条命令自己验。全部能跑通再付钱。

BASE="https://你的网关/v1"; KEY="你的密钥"

# 1. 模型列表是否可查
curl -s "$BASE/models" -H "Authorization: Bearer $KEY" | head -c 400

# 2. 最小对话
curl -s "$BASE/chat/completions" -H "Authorization: Bearer $KEY" \
  -H "content-type: application/json" \
  -d '{"model":"你的模型ID","messages":[{"role":"user","content":"hi"}],"max_tokens":16}'

# 3. 流式
curl -sN "$BASE/chat/completions" -H "Authorization: Bearer $KEY" \
  -H "content-type: application/json" \
  -d '{"model":"你的模型ID","messages":[{"role":"user","content":"数到三"}],"max_tokens":32,"stream":true}' | tail -3

# 4. 工具调用
curl -s "$BASE/chat/completions" -H "Authorization: Bearer $KEY" \
  -H "content-type: application/json" \
  -d '{"model":"你的模型ID","messages":[{"role":"user","content":"北京天气"}],
       "tools":[{"type":"function","function":{"name":"get_weather","parameters":{"type":"object","properties":{"city":{"type":"string"}}}}}],"max_tokens":64}'

# 5. 错误行为
curl -s "$BASE/chat/completions" -H "Authorization: Bearer 错误的密钥" \
  -H "content-type: application/json" -d '{"model":"x","messages":[]}'
步骤通过标准
1返回模型数组,且包含你要用的 ID
2200,返回结构与 OpenAI 一致
3SSE 分块正常,以 [DONE] 结束
4finish_reasontool_calls
5返回 401,错误结构为标准的 {"error":{"message","type"}}

第五步常被忽略,但它反映的是这个网关对错误的处理是否规范。 把 401 转成 500、或者返回非标准结构的,接入后排障会很痛苦——你的客户端库按 OpenAI 的规范解析错误,遇到自定义结构就只能给你一个「未知错误」。

更完整的验证脚本和判断标准,见中转站实测方法

常见问题

官方 Key 和网关 Key 能混用吗?

不能。两者是不同账户体系下的凭据。切换时需要同时改 Base URL 和 Key,只改一个会报 401 或 404。

怎么判断一家网关是不是多层中转?

看固定延迟和错误格式。多一层通常多 200 毫秒以上的固定开销;错误信息被包了两层、格式不是上游原生的,也是信号。

额度会过期吗?

官方和各网关的规则不同,有的按自然月清零,有的长期有效。下单前直接问,并留存书面答复——这一项事后很难说清。

为什么 /v1/embeddings 经常没有?

嵌入模型和对话模型是分开计费和分开采购的,很多网关只接了对话模型。如果你要做知识库或检索,这一项必须在下单前确认,事后加不了。