Your organization must be verified と gpt-image-2 が含まれるエラーが出たら、まず エラーを返したサービスと、リクエストに使った組織・プロジェクトを確認してください。未認証なら画面に出ている認証手続きを進めます。すでに Verified なら、待機やキーの作り直しを繰り返す前に、認証した組織とアプリの設定を照合します。
OpenAI の画像生成ガイドでは、GPT Image モデルの利用に組織認証が必要になる場合があると説明されています。一方、認証済みという表示だけでは、そのアプリによる画像生成の成功まで保証されません。この記事は 2026年9月8日に確認した公式情報をもとに、直接 OpenAI API を呼ぶ開発者向けに切り分けの順序を示します。公式の画像生成ガイド
最初に、エラーの原文と接続先を残す
エラーはモデル名を含めて保存します。代表的な識別文字列は次の部分です。前後の説明や HTTP ステータスは実際の応答を優先してください。
Your organization must be verified
model: gpt-image-2記録するのは、発生日時とタイムゾーン、HTTP ステータス、error.code、error.message、指定モデル、送信先のホスト名です。応答に x-request-id があれば一緒に残します。API キーや Authorization ヘッダーの値は記録しません。
OpenAI へ直接送る Images API なら、接続先は https://api.openai.com/v1/images/generations です。SDK の base_url、環境変数、社内の API ゲートウェイなどで別のサービスを指定していないか確認しましょう。互換 API の応答に同じ文言が含まれていても、それだけで自分の OpenAI 組織が未認証だとは判断できません。
また、ログが gpt-image-1 を示している場合は、その呼び出しで実際に指定されたモデルを調べます。設定ファイルだけでなく、実行中のアプリに渡った値を見てください。古い画像 API の認証トラブルにも以下の確認方法は使えますが、モデル名を gpt-image-2 に変更すること自体は認証の修正になりません。
認証画面の状態に応じて進める
認証は、認証を求められたアカウントで、その通知や画面の案内から開始します。「組織認証」という名称でも、必要な手続きは企業確認、本人確認、またはその両方です。全員が法人を持つ必要がある、パスポートしか使えない、と一律には判断できません。
本人確認を求められた場合は、対応国・地域の政府が発行した有効な身分証の現物を用意し、自撮りは要求された場合に行います。利用できる書類はその手続きの案内で確認してください。日本語の体験記事で特定のカードが使えた例があっても、あなたの書類の受理を保証するものではありません。組織認証の公式ヘルプ
| 現在の状態 | 次に確認・操作すること |
|---|---|
| 認証をまだ始めていない | 対象のアカウントと組織を選び、表示された認証通知から開始する |
| 審査中と表示される | 通知や審査画面で追加提出の有無を確認する。API キーを作り直して審査をやり直そうとしない |
| 完了したが未認証扱いになる | 同じアカウント・組織か確認し、画面を再読み込みする。必要ならサインインし直す |
| Verified だが画像 API が失敗する | 次節の手順で、実際の接続先・組織・プロジェクト・キーを比較する |
| 認証を開始できない、項目がない | 認証を要求した製品に戻って案内を確認する。利用できない場合は後で確認する |
| 手続きが読み込まれない | 最新のブラウザ・端末で元の通知を開き直す。再読み込みや再サインインも試す |
| 失敗・否認になった | 受け取った通知に従う。再試行や異議申し立ては、その手続きで案内されている場合に行う |
否認の結果を手動で覆せるとは案内されていません。本人確認書類を一般の問い合わせや検索欄に貼り付けるのではなく、指定された提出先を使ってください。
「15分待つ」「30分待つ」は復旧期限ではない
完了状態の反映に時間がかかることはありますが、現在の組織認証ヘルプには 15分または30分以内の成功保証はありません。表示や通知に待機時間の案内があれば、それに従います。
別の話として、認証リファレンスには、API キーの認証に影響する変更の多くは15分以内に反映されるものの、さらに時間がかかる場合もあると記載されています。この説明を本人確認の審査時間や組織認証の承認期限に読み替えないでください。API の認証リファレンス
Verified なのにアプリだけ失敗する場合

ダッシュボードと実行環境を、次の項目ごとに並べて確認すると、何を直すべきかが分かります。キーの全文を画面やログに出す必要はありません。管理画面のキー名、所属プロジェクト、保存先のシークレット名や更新日時など、管理情報で照合します。
| 比較する項目 | ダッシュボード・管理設定 | 失敗したアプリの実行環境 |
|---|---|---|
| サービス | キーを発行したサービス | 実際の API 接続先ホスト |
| 組織 | Verified になった組織の ID | キーの所属組織、明示している組織ヘッダー |
| プロジェクト | 利用する予定のプロジェクト ID | キーの所属プロジェクト、明示しているプロジェクトヘッダー |
| キー | 使用するキーの管理情報 | 実際に読み込まれた環境変数・シークレットの保存先 |
| モデル | そのプロジェクトで利用するモデル | リクエストで送ったモデル ID |
例えば、ローカルのターミナルでは新しい設定を読んでいても、デプロイ済みアプリには以前のシークレットが残っていることがあります。該当する場合は、その環境の設定を修正し、アプリが新しい値を読み込むために必要な再起動や再デプロイを行います。これは設定差を調べるための例であり、認証エラーの最多原因だと断定するものではありません。
複数組織に所属している場合や旧形式のユーザーキーを使う場合は、OpenAI-Organization と OpenAI-Project ヘッダーの指定も確認対象です。ヘッダーは呼び出しの所属先を選ぶためのもので、権限を追加する機能ではありません。ID を推測して追加せず、キーの種類と現在の構成に合う値だけを指定します。認証と組織の指定
応答の openai-organization ヘッダーが存在すれば、対象組織を確かめる材料になります。ただし、すべての応答に存在するとは限らず、中継サービスが変更・省略することもあります。x-request-id と合わせて扱ってください。リクエストのデバッグ
新しい API キーは毎回必要ではありません。 別のプロジェクトのキーを使っていた、キーが失効していた、キーの管理上交換が必要だった、といった理由がある場合に発行・更新します。同じ設定のままキーだけ増やしても、どの条件で改善したのか分からなくなります。
認証以外のエラーに変わったら、対処も変える
HTTP ステータスだけで原因を決めず、error.code とメッセージを読みます。例えば、同じ 403 でも対応地域に関するエラーなら、組織認証のやり直しでは解決しません。
| エラーの手がかり | 確認する項目 |
|---|---|
| organization must be verified | 対象組織の認証状態と、呼び出しの組織・プロジェクト |
| 401、invalid API key など | キーの読み込み、発行元、失効の有無 |
| 403 と unsupported country など | 実際の利用場所とサービスの対応国・地域 |
| 429 と quota・billing・spend limit など | API の課金状態、残高・予算・利用上限 |
| 429 と rate limit など | 呼び出し頻度や同時実行数、応答の待機案内 |
| 500・503 など | サービス側の状況と一時的な障害。連続送信を止めて状況を確認する |
日本は OpenAI API の対応国に含まれていますが、それだけで個別アカウントに全モデルの利用資格があるとはいえません。GPT Image 2 のモデルページでは Free API tier は非対応です。課金・利用枠を満たすことと組織認証も、それぞれ確認が必要です。API エラーコード、対応国・地域、GPT Image 2 のモデル情報
利用枠や予算を超えたエラーは、単純な再試行では直りません。サービス状況は発生時点の OpenAI Status で確認してください。
設定を直した後、1回の呼び出しで画像まで確認する

原因に関係する設定を修正したら、短いプロンプトで画像1枚を生成します。Playground がすでに成功しているなら、その結果も比較材料になります。ただし、Playground の成功だけでは本番アプリのキーや設定が正しいことまでは分かりません。
以下は OpenAI へ直接送信する Python 3 の例です。標準ライブラリだけを使い、自動再試行は行いません。公式の Images API 形式に基づく例であり、本記事の執筆時に有料リクエストを実行したものではありません。実行すると API 料金が発生する場合があります。
アプリと同じプロジェクトのキーを、サーバー側の環境変数 OPENAI_API_KEY に安全に設定してから実行してください。組織・プロジェクトヘッダーを使う構成では、確認済みの ID をそれぞれ OPENAI_ORGANIZATION、OPENAI_PROJECT に設定します。使わない構成では未設定にします。
import base64
import json
import os
from pathlib import Path
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
headers = {
"Authorization": "Bearer " + os.environ["OPENAI_API_KEY"],
"Content-Type": "application/json",
}
for name, variable in (
("OpenAI-Organization", "OPENAI_ORGANIZATION"),
("OpenAI-Project", "OPENAI_PROJECT"),
):
if os.environ.get(variable):
headers[name] = os.environ[variable]
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 = Request(
"https://api.openai.com/v1/images/generations",
data=json.dumps(payload).encode("utf-8"),
headers=headers,
method="POST",
)
try:
with 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 HTTPError as error:
print("HTTP:", error.code)
print("request_id:", error.headers.get("x-request-id"))
raw = error.read()
try:
detail = json.loads(raw).get("error", {})
print("code:", detail.get("code"))
print("message:", detail.get("message"))
except (ValueError, AttributeError):
print("JSON形式のエラー応答ではありません。")
raise SystemExit(1)
except (URLError, TimeoutError) as error:
print("通信が完了しませんでした:", type(error).__name__)
raise SystemExit(1)
items = result.get("data") or []
if not items or not items[0].get("b64_json"):
raise SystemExit("画像データがありません。応答形式を確認してください。")
image = base64.b64decode(items[0]["b64_json"], validate=True)
if not image.startswith(b"\x89PNG\r\n\x1a\n"):
raise SystemExit("PNGのヘッダーを確認できませんでした。")
output = Path("image-verification-check.png")
output.write_bytes(image)
print("保存先:", output.resolve(), "bytes:", len(image))実行後は image-verification-check.png を画像ビューアで開きます。HTTP 200 → b64_json の取得 → デコード・保存 → 実際に開ける画像まで確認できれば、そのリクエストで画像を取得できたと判断できます。モデル一覧に名前があるだけ、あるいは HTTP 200 が返っただけでは、同じ確認にはなりません。Images API の出力例
タイムアウトでは、サーバー側で処理が完了したか分からない場合があります。確認できないまま連続実行せず、利用履歴やアプリ側の記録と照合してください。単体の呼び出しが成功したら、アプリの実行環境で同じ接続先・設定を使い、保存後の画像が利用者に表示されるところまで確かめます。実装全体を見直す場合は OpenAI 画像 API の使い方 を参照できます。
まだ解決しないときに伝える情報
問い合わせや社内調査では、認証済みと表示された組織 ID、実際のプロジェクト ID、モデル、接続先ホスト、発生日時、エラーの全文、x-request-id を整理します。加えて「ローカルでは成功するがデプロイ先で失敗する」「認証画面も未完了のまま」など、すでに確認できた差を添えると調査範囲が明確になります。公開の投稿には組織・プロジェクト ID を含む不要な識別情報を載せず、キーや身分証は送らないでください。
別サービスの API を使う選択もありますが、接続先とそのサービスのキーを変更して成功した場合、それは別サービスでの利用確認です。自分の OpenAI 組織の認証が完了した証明にはなりません。この選択を検討する場合は 組織認証をせずに GPT Image 2 を利用する方法 で条件を確認してください。



