进入 platform.openai.com 的正确 organization 和 project,打开 API Keys,选择 Create new secret key。完整密钥只在创建时显示:立即放入服务端环境变量或密钥管理器,不要放浏览器、移动端、公开 Git 仓库、截图、日志或聊天记录。
官方参考(2026-10-28 核对):OpenAI API Key 安全最佳实践 · API Platform 项目与密钥 · OpenAI:创建 API Key
OpenAI API Key、ChatGPT 订阅和 API Credits 不是一回事
| 名称 | 解决什么问题 | 是否共用 |
|---|---|---|
| API Key | 让你的服务通过 API 鉴权调用模型 | 绑定 API organization/project,不等于 ChatGPT 登录 |
| ChatGPT Plus/Pro | 在 ChatGPT 产品内使用订阅权益 | 不自动提供 API Key 或 API Credits |
| API Credits | 支付 API 用量或预付余额 | 与 ChatGPT 订阅账单独立 |
| Codex 登录 | 登录 Codex 产品或 CLI | 不应把网页登录会话当作 API Key |
如果你要充值 API 余额,请先看OpenAI API Credits 充值与余额指南;如果是 API 付款失败,进入API 付款失败排查。不要为了修复登录问题,把 API Key 粘贴到支持对话中。
创建项目级 OpenAI API Key 的步骤
- 登录 platform.openai.com,确认当前 organization 正确。
- 打开目标 project;没有项目时先创建一个与应用、环境或团队对应的 project。
- 进入项目的 API Keys 页面,选择 Create new secret key。
- 给密钥写清楚用途和环境标签,例如
web-prod、staging或local-dev,不要把真实密钥写进标签。 - 按最小权限原则选择权限,创建后立即复制并保存到密钥管理器。
- 在服务端配置环境变量,使用一次真实请求验证 organization、project、模型权限和账单状态。
项目级密钥便于按应用隔离访问和审计。团队协作时优先每人或每个服务使用独立密钥,不要多人共用一串长期 secret。
All、Restricted、Read Only 权限怎么选
- All:需要完整项目 API 管理能力时使用;适合受控的后台管理场景,暴露面最大。
- Restricted:按资源和动作限制访问,适合生产服务和第三方集成的最小权限配置。
- Read Only:只读检查或审计场景使用;不能完成需要写入或调用的操作。
实际可见权限项会随 API Platform 的项目和产品设置变化。先从 Restricted 或 Read Only 开始,只有明确需要时才扩大权限,并记录变更原因。
正确保存:服务端环境变量优先
应用代码只读取变量名,不把真实 secret 写进源代码。常见做法是:
export OPENAI_API_KEY="在密钥管理器中注入,不要把真实值提交到 Git"- 本地开发:使用未提交的
.env.local或系统环境变量,并加入.gitignore。 - Vercel、云主机和容器:使用平台的 Environment Variables/Secrets,分别配置 Development、Preview、Production。
- CI/CD:使用 GitHub Actions Secrets 等受控存储,在构建或部署时注入。
- 后端调用:让浏览器调用你的后端接口,由后端携带 API Key 访问 OpenAI;不要把 Key 返回给客户端。
本文只展示变量名。任何以 sk- 开头的真实字符串都不应出现在文章、Issue、截图、日志或前端打包产物里。
轮换、过期和删除的正确顺序
- 先创建新的替代密钥,并在非生产环境测试。
- 把服务端环境变量切换到新密钥,重新部署并观察请求与用量。
- 确认旧密钥不再被调用后,再删除或撤销旧密钥。
- 记录轮换日期、用途、负责人和下次复查日期;定期清理不用的 Key。
不要直接删除唯一生产密钥后再寻找替代方案;先建立可回滚的替换路径。
API Key 泄露后的应急处理
- 立即在 API Platform 删除或撤销泄露的 Key。
- 创建新 Key,更新服务端、云平台和 CI/CD 的 Secret。
- 检查 Usage、Billing 和项目日志,标记异常时间、模型、IP 或费用。
- 在代码仓库搜索泄露痕迹并清理历史提交;仅删除当前文件不代表历史已安全。
- 必要时联系 OpenAI 支持,提供时间、项目和异常用量证据,但遮挡完整密钥、卡号、CVC 和验证码。
如果只是把变量名改成另一个名字却继续使用旧 secret,风险仍然存在。真正的处置是撤销旧 Key 并验证新 Key 的最小权限。
401、403 或额度错误,先别急着重建密钥
- 401:检查 Key 是否完整、是否已删除、是否读到了正确的环境变量。
- 403:检查 project、organization、模型权限和 Restricted 规则。
- 429/insufficient_quota:检查 API Credits、项目支出上限、组织用量限制和速率限制;充值入口见API Credits 页面。
不要把 ChatGPT Plus 重新订阅、Codex 重新登录或复制另一串 Key 当作通用修复。先看响应中的 error.code、当前 project 和 Billing 状态。
上传 Batch 文件和查询结果都应由服务端执行。完整流程见OpenAI Batch API 使用指南,并继续遵循最小权限与密钥轮换规则。
Key 只解决身份认证,不会自动阻止有害输入。需要在服务端审核文本或图片时,继续看 OpenAI Moderation API 指南。
API Key 不能出现在浏览器;文件创建、purpose、到期和删除流程见 OpenAI Files API 指南。
Vector Store 创建、查询和删除必须由服务端执行;完整知识库流程见 OpenAI File Search 指南。
常见问题
OpenAI API Key 在哪里创建?
登录 API Platform,进入正确的 organization 与 project,在 API Keys 页面选择 Create new secret key。项目级密钥应绑定到实际调用的项目,并在创建后立即保存到受控的密钥管理位置。
OpenAI API Key 为什么只显示一次?
出于安全原因,完整 secret key 只在创建时显示;之后无法再次查看。遗失时应创建新密钥并删除旧密钥,不要向任何人索要或发送完整密钥。
API Key 可以放在前端网页或浏览器里吗?
不可以。浏览器、移动端、公开仓库、截图、日志和聊天记录都可能暴露密钥。应只在服务端、Vercel/云平台环境变量或 CI/CD Secret 中读取。
OpenAI API Key 的权限怎么选?
All 适合需要完整 API 管理能力的受控服务;Restricted 可以按资源和动作缩小范围;Read Only 只读。先使用能完成任务的最小权限,并定期复核。
OpenAI API Key 泄露后怎么办?
立即在 API Platform 撤销或删除泄露密钥,创建替代密钥并更新服务端环境变量;随后检查 Usage、Billing 和项目日志,确认没有异常调用。不要只改变量名而继续使用旧密钥。
ChatGPT Plus 或 Pro 包含 OpenAI API Key 吗?
不包含。ChatGPT 订阅与 API Platform 的组织、项目、API Key 和 API 账单是不同体系;需要 API 调用时,应单独在 API Platform 创建密钥并按 API 账单使用。
服务端调用、模型选择和向量索引安全见 OpenAI Embeddings API 教程。
把密钥问题与账单问题分开处理
创建 Key 解决的是 API 鉴权;Credits、支付、组织权限和速率限制属于不同层。先确定错误层级,再选择对应页面。
前端语音应使用服务端创建的短期 client secret 或统一 WebRTC 接口;完整架构见 OpenAI Realtime API 教程。
文件转录和语音生成应由受信任后端代理,浏览器实时音频使用短期凭证;完整边界见 OpenAI Audio API 指南。