如果调用 gpt-image-2 时收到 Your organization must be verified,这次请求触发了组织验证要求。先确认程序连接的是 OpenAI 直接 API,再到该请求所属账户和组织处理验证;已经通过的,则核对项目、密钥来源与运行环境。修改提示词、充值或换一个模型名称,都不能代替这一步。
截至 2026 年 9 月 8 日,OpenAI 图像生成指南 的说法是 GPT Image 模型可能要求组织验证,不是每个账户都必须验证。你已经收到明确提示时,应以这次请求的要求为准。旧日志中出现 gpt-image-1 的情况也适用下面的诊断方法,但要检查实际发送的 model,不能只改页面上的模型显示名称。
先判断:这次失败究竟要求你做什么
保留原始响应里的 HTTP 状态、error.code、error.message、请求时间和 x-request-id。如果界面只显示“生成失败”,到应用服务端日志或你使用的 API 服务商后台查看具体错误。不要把 API 密钥和完整请求头贴到公开讨论中。
| 实际错误或现象 | 下一步 |
|---|---|
| 明确写着组织必须 verified 才能使用模型 | 核对请求所属组织,再按下文的验证状态处理 |
401 或提示密钥无效 | 检查密钥是否属于这个服务、是否正确加载,是否已失效 |
403 且内容是国家或地区不受支持 | 核对直接 API 的地区资格;完成验证不会改变地区支持范围 |
429,消息提到余额、额度或消费限制 | 检查账单与额度;反复重试不会补足余额 |
429,消息提到速率限制 | 降低并发和请求频率,按实际限额安排重试 |
500、503 或服务不可用 | 查 OpenAI 状态页,结合错误决定是否稍后重试 |
同一个状态码可能有不同原因,判断应结合完整错误文字。以上分类依据 OpenAI 错误代码说明,不代表其他服务商一定采用相同格式。
还要看实际请求地址。请求发往 https://api.openai.com/v1/ 才是在测试 OpenAI 直接 API。如果 SDK 的 base_url、环境变量或代理配置将它送往另一家公司,就应同时核对那家服务的密钥、模型权限和错误说明;你个人 OpenAI 组织的状态未必决定这条请求能否执行。
还没验证:从当前账户的提示进入
登录 OpenAI API 平台,确认当前选择的组织和项目是应用要使用的那一组,再从原始验证通知或产品内提示进入流程。验证页面路径会变化,因此收到的通知比旧教程里的固定菜单路径更可靠。
当前 官方验证说明 区分企业验证和身份核验,某些场景会要求其中之一或两者。不要仅因错误里有 organization,就认定个人开发者必须先注册公司;也不要提前假定所有人都走同一种证件流程。
身份核验要求符合条件的、受支持国家或地区签发的有效政府身份证件原件,按提示拍摄,要求自拍时再完成自拍。官方接受的类型不只护照,也包括符合条件的身份证、驾照、居留许可等;电子副本和截图不能代替原件。个人身份核验限一个账户或组织,具体以收到的流程为准。
对中国大陆读者,地区资格应先于证件尝试。中国大陆目前不在 OpenAI 直接 API 支持地区列表 中;有护照、账户充值成功,或使用中文以外的界面,都不能据此认定有直接 API 访问资格。人在受支持地区也需要结合实际账户和证件条件判断,能否通过取决于你的材料,无法事先预判。
充值解决的是使用资金问题。GPT Image 2 模型页 标明 Free API 层级不受支持,但处于受支持的付费层级,同样不等于已满足验证及其他访问条件。
页面已显示 verified:把后台与程序逐项对上
此时最值得做的是建立一份简单对照,避免在不同账户之间反复测试。这是根据官方账户核对和 API 认证说明整理的排查方法,并非对你账户故障原因的预判。
| 对照项 | 在哪里查看 | 比较什么、结果意味着什么 |
|---|---|---|
| 组织 | 平台的组织选择器及组织设置 | 已通过验证的组织名称和 ID,是否就是项目所属组织 |
| 项目 | 平台项目选择器、该项目的设置及 API Keys 页面 | 应用所用密钥是在哪个项目创建的;不要仅凭密钥的显示名称判断 |
| 密钥来源 | 本地配置或部署平台的密钥管理页面 | 程序实际读取哪个变量、哪条凭据;无需打印密钥内容 |
| 服务地址 | SDK 初始化、配置文件和部署环境变量 | 请求是否确实发送到准备核对的服务 |
| 模型 | 发出请求前的参数或脱敏日志 | 实际 model 是否是预期模型;封装库可能有自己的默认值 |
| 组织与项目请求头 | HTTP 客户端或 SDK 的相关配置 | 是否显式指定了另一个组织或项目,或遗留了旧配置 |

例如,浏览器中 A 组织已经通过验证,但部署环境仍加载 B 组织项目的密钥,那么 A 的状态无法说明这次线上请求有权限。修正的是部署环境的凭据选择,而不是再给 A 提交一次证件。更新部署变量后,还要按部署平台机制让新的配置进入实际运行进程;只修改电脑上的 .env 文件不会自动修改线上实例。
OpenAI 认证参考 说明,多组织用户或旧式用户密钥可以通过 OpenAI-Organization、OpenAI-Project 请求头指定使用上下文。只有明确知道正确 ID 且适用时才设置它们;请求头不能给密钥授予原本没有的权限,也不应照抄别人的 ID。
响应如果包含 openai-organization,可将它与后台的组织 ID 比较;没有该响应头并不能反向证明组织配置错误。记录 x-request-id 有利于后续定位,具体见 请求调试说明。
确认一致后,刷新或重新登录相关页面,再检查批准的产品、项目、模型是否对应当前调用。若有 Playground,可在同一账户与组织下用它作辅助判断:那里能出图而应用失败,就继续比较两边的请求配置;那里也受限,则继续检查账户访问条件。Playground 结果只能说明它自身的调用结果。
要等 15 分钟还是 30 分钟?需要换密钥吗?
当前官方组织验证帮助页没有承诺固定的 15 或 30 分钟完成时限。 API 认证参考提到,多数影响 API 密钥认证的变更会在 15 分钟内传播,但可能更久。这不是身份核验审核或组织状态同步的时间保证,不能用倒计时判断验证一定成功或失败。
同样,不应把“验证后必须生成新密钥”当成通用步骤。先查清现有密钥的项目归属和运行配置;确实拿错凭据时替换成正确项目的凭据,密钥泄露或失效时另按密钥管理处理。无依据地连续换密钥会增加部署配置需要同步的地方。
验证页面打不开、失败或没有入口,分别怎么处理
这些情况不能都归为“再等一会儿”。按当前状态选择动作:
- 流程打不开或加载失败:回到原始验证提示,刷新或退出后重新登录,并使用更新的浏览器和设备重试。
- 提交失败或被拒绝:查看收到的通知,只在流程提供重试或申诉入口时按指示继续。官方说明决定不能被人工覆盖,不能承诺联系客服就会获批。
- 没有验证入口:先核对账户,再返回最初要求验证的产品查看说明,之后再检查是否可用。不要把“入口不存在”自动解释成已经验证。
- 已经通过但仍无权限:核对上述配置之外,还要检查产品审批、用户分配、组织设置及可用额度;通过某项验证不等于其他条件自动满足。
这些处理依据 官方验证故障说明。如果仍无法定位,可用完整错误文字、产品名和出错步骤在帮助中心检索;向支持渠道提交问题时,附上组织与项目标识、脱敏错误、请求 ID 和时间,说明是“材料提交失败”还是“通过后接口仍报错”。不要发送密钥或在公开搜索中输入完整身份证件。
修正后只发一次请求,并打开返回图片
账户或配置发生实质修正后,在实际运行环境发出一条简单请求:单张图片、普通提示词,不带编辑图、不加入批量任务。下面的 Python 示例根据官方 Images API 文档编写,使用标准库,尚未经过付费接口实测。运行会发起一次真实图像请求,可能产生费用;应先确认账户条件和 API 余额。

将正确项目的密钥通过服务端环境变量 OPENAI_API_KEY 提供。如果你的情况需要显式指定组织或项目,再设置经过核对的 OPENAI_ORG_ID 和 OPENAI_PROJECT_ID,否则保持未设置。示例固定访问 OpenAI 官方地址,不读取第三方 base_url。
import base64
import json
import os
import urllib.error
import urllib.request
from pathlib import Path
headers = {
"Authorization": "Bearer " + os.environ["OPENAI_API_KEY"],
"Content-Type": "application/json",
}
for env_name, header_name in [
("OPENAI_ORG_ID", "OpenAI-Organization"),
("OPENAI_PROJECT_ID", "OpenAI-Project"),
]:
if os.environ.get(env_name):
headers[header_name] = os.environ[env_name]
payload = {
"model": "gpt-image-2",
"prompt": "A blue ceramic cup on a plain white table",
"n": 1,
"size": "1024x1024",
"quality": "low",
"output_format": "png",
}
request = urllib.request.Request(
"https://api.openai.com/v1/images/generations",
data=json.dumps(payload).encode("utf-8"),
headers=headers,
method="POST",
)
try:
with urllib.request.urlopen(request, timeout=180) as response:
print("HTTP:", response.status)
print("Request ID:", response.headers.get("x-request-id"))
print("Organization:", response.headers.get("openai-organization"))
result = json.load(response)
except urllib.error.HTTPError as error:
print("HTTP:", error.code)
print("Request ID:", error.headers.get("x-request-id"))
print(error.read().decode("utf-8", errors="replace"))
raise SystemExit(1)
except (urllib.error.URLError, TimeoutError) as error:
print("Network or timeout error:", error)
raise SystemExit(1)
items = result.get("data") or []
if not items or not items[0].get("b64_json"):
raise SystemExit("No image data returned; inspect the response structure.")
image_bytes = base64.b64decode(items[0]["b64_json"], validate=True)
if not image_bytes.startswith(b"\x89PNG\r\n\x1a\n"):
raise SystemExit("The returned bytes do not have a PNG signature.")
output = Path("verification-check.png")
output.write_bytes(image_bytes)
print("Saved:", output.resolve(), "Bytes:", len(image_bytes))请求失败时先读输出的错误,再回到对应分支。网络超时不能证明服务端未执行,所以不要立即套上循环重试。成功时,脚本会检查 data[0].b64_json、解码并保存 PNG;你还需要打开 verification-check.png,确认它确实是可查看的生成图片。PNG 文件头检查本身不等于完整图片解码成功。
HTTP 200、模型列表中出现名称、后台显示 verified,分别证明不同的事。 收到并打开图片,只能说明这次特定配置的请求完成了图片交付;它不是组织验证状态证明,也不保证批量任务或其他模型都可用。基础调用跑通后,再按 OpenAI 图像 API 接入教程 恢复编辑、多图或生产流程,成本另见 图像生成 API 定价说明。
如果目标是不用自己的 OpenAI 组织接入
这属于服务选择,而不是修复自己的组织状态。可以阅读 无需自有组织验证的 GPT Image 2 接入方式,比较第三方服务提供的账户、密钥和调用条件。
切换服务地址并使用另一家服务的密钥,测试的是那家服务。即使顺利出图,也不表示你的 OpenAI 组织已经通过验证;两种结果应分别记录。



