メインコンテンツへ移動

GPT Image 2 のレート制限と 429 の見分け方

gpt-image-2 の上限は Tier 1 で毎分5枚から(2026年10月1日時点)。429 は error.code で、待てば通るか、入金や上限変更が要るかが分かれます。

Yingtu AI Editorial
Yingtu AI Editorial
更新 13 min
GPT Image 2 のレート制限と 429:error.code を読み、待てば通る原因と待っても通らない原因を分ける
yingtu.ai

GPT Image 2 のレート制限は、OpenAI API の組織とプロジェクトに対して、1分あたりのトークン数(TPM)と1分あたりの画像枚数(IPM)で決められている上限です。2026年10月1日時点の gpt-image-2 では、Tier 1 が 100,000 TPM・5 IPM、Tier 5 が 8,000,000 TPM・250 IPM で、無料ティアでは使えません。

ただし HTTP 429 が返ったからといって、原因がこの上限とは限りません。同じ 429 でも、残高切れ(credit_balance_exhausted)、自分で設定した支出上限、OpenAI が承認した月間利用上限、送信量の急増(slow_down)があり、待てば通るのはそのうち一部だけです。レスポンスの error.code を読めば、どれに当たったかが分かります。

ChatGPT のアプリ内で画像が作れなくなった場合は、API とは別の仕組みの話です。「No image generation quota is currently available.」のような表示やプランごとの枚数は、ChatGPT の画像生成は無料で何枚まで?上限と対処法にまとめてあります。ChatGPT の有料プランと API の利用枠は別々に課金・管理されているので、片方を増やしてももう片方は変わりません。

gpt-image-2 のティア別上限(TPM と IPM)

gpt-image-2 の上限は利用ティアで決まり、ティアが1段上がるごとに毎分の画像枚数は 5、20、50、150、250 と増えます。OpenAI のモデルページに載っている数値は次のとおりです。

利用ティアTPM(1分あたりのトークン数)IPM(1分あたりの画像枚数)
Free対象外対象外
Tier 1100,0005
Tier 2250,00020
Tier 3800,00050
Tier 43,000,000150
Tier 58,000,000250

対象は OpenAI API の gpt-image-2(スナップショット gpt-image-2-2026-04-21)、2026年10月1日時点の数値です。

読み方で間違えやすい点が3つあります。

  1. TPM と IPM は両方が同時にかかり、先に届いたほうで止まります。OpenAI のレート制限ガイドは、上限には RPM(1分あたりのリクエスト数)、RPD(1日あたりのリクエスト数)、TPM、TPD、IPM などの指標があり、どれか1つに先に達した時点で制限がかかると説明しています。
  2. 上限はユーザー単位ではなく、組織とプロジェクトの単位で数えます。同じプロジェクトのキーで動いているスクリプトやサーバーは、すべて同じ枠を分け合います。キーを増やしても枠は増えません。
  3. 表は公開されている標準値です。自分の組織に実際に適用されている数値は、OpenAI の管理画面の Limits ページに表示され、標準値と異なることがあります。

Tier 1 の 5 IPM は、切れ目なく送り続けても計算上 5枚 × 60分 = 1時間に300枚が上限、という意味です。夜間にまとめて数百枚を作るような処理は、Tier 1 のままでは毎分5枚のペースに合わせて並べ直す必要があります。

レート制限はモデルごとに決められています。gpt-image-2 が使えるのは画像生成(v1/images/generations)、画像編集(v1/images/edits)、Responses API、Batch API で、入口を変えてもモデルの上限が別に用意されるわけではありません。GPT Image 2.5 については、gpt-image-2.5-flare のモデルページに gpt-image-2 と同じティア表が載っています(2026年9月30日時点)。

1枚あたりのトークン数と金額の関係は、GPT Image 2 の料金:1枚いくらかと請求額の計算で計算できます。

利用ティアが上がる条件と月間利用上限

利用ティアは、API への累計支払額が基準に届くと自動で上がります。申請は不要で、レート制限ガイドには「API の利用額が増えると、自動的に次の利用ティアに移行する」とあります。

利用ティア条件(累計支払額)承認済みの月間利用上限
Free対応地域にいること$100
Tier 1$5 の支払い$100
Tier 2$50 の支払い$500
Tier 3$100 の支払い$1,000
Tier 4$250 の支払い$5,000
Tier 5$1,000 の支払い$200,000

対象は OpenAI API の組織、2026年10月1日時点の数値です。

右の列の「月間利用上限」は、OpenAI が組織ごとに承認している1か月の利用額の天井です。分単位のレート制限とは別に数えられ、届くと organization_usage_limit_exceeded の 429 が返ります。

これと混同しやすいのが、自分で設定する支出上限です。OpenAI は、承認済みの月間利用上限と、組織やプロジェクトに自分で設定する支出上限は別物だと明記しています。設定には2種類あります。

  • 支出アラート:通知が届くだけで、API のリクエストは通り続けます。
  • ハード支出上限:届いた時点で、対象の API リクエストが 429 を返します。

つまり、月の利用額に関係する天井は「OpenAI が決めたもの」と「自分やチームの管理者が決めたもの」の2つがあり、返ってくるコードも直す場所も違います。

429 の error.code 別:再試行で直るかどうか

429 が返ったら、まず error.code を見ます。待てば通るのは、送信ペースが原因の2種類だけです。残高・支出上限・利用上限が原因の 429 は、何度送り直しても通りません。OpenAI のエラーコードのページも、課金・支出・利用枠のエラーは再試行しても API を使える状態に戻らないと書いています。

ステータス / error.code(公式の項目名)何の制限か再試行で直るか直す場所
429 / 「Rate limit reached for requests」送信が速すぎて分単位の上限に届いた直る。Retry-After の秒数以上待つ送信ペースを落とす。恒常的に足りなければティアを上げる
429 / slow_down送信量を急に増やしすぎた直る。量を減らし、段階的に戻す送信量の増やし方
429 / credit_balance_exhausted前払いの残高がなくなった直らない課金画面で残高を追加する
429 / organization_spend_limit_exceeded組織に設定したハード支出上限直らない組織の支出上限を上げる(権限のある管理者)
429 / project_spend_limit_exceededプロジェクトに設定したハード支出上限直らないプロジェクトの支出上限を上げる
429 / organization_usage_limit_exceededOpenAI が承認した月間利用上限直らない上限の引き上げを申請するか、サポートに連絡する
503 / server_is_overloaded制限ではなく、モデル側の一時的な混雑直る。Retry-After があれば従う待つ以外にない
403 / 「Country, region, or territory not supported」制限ではなく、地域が対象外直らない対応地域からの利用が前提

対象は OpenAI API、2026年10月1日時点のエラーコード一覧です。

この表を使うときの注意が2つあります。

1つめは error.type だけで判断しないことです。課金関係のエラーでは、error.type が大きなくくりの insufficient_quota のままになる場合があり、OpenAI は具体的な原因を error.code で確認するよう案内しています。

2つめは、古い SDK や中継サービスを通したレスポンスです。上の細かいコードが出ず、insufficient_quota か rate_limit_exceeded だけが返ることがあります。前者なら残高と上限の設定を、後者なら送信ペースを確認します。

再試行で直る 429 の待ち方

再試行で直る 429 は、Retry-After ヘッダーの秒数を最低限の待ち時間として守り、そこに少しランダムな遅延を足して送り直します。Retry-After がないときは、待ち時間を倍々に延ばしながらランダムな幅を持たせる方法(指数バックオフ)を使い、回数と合計時間の両方に上限を決めておきます。

すぐに連打しても通らない理由ははっきりしています。レート制限ガイドによると、失敗したリクエストも分単位の上限に数えられるため、同じリクエストを送り続けるだけでは枠が空きません。

残りの枠は、レスポンスヘッダーで確認できます。

ヘッダー内容
Retry-After再試行までに最低限待つ秒数(付いている場合)
x-ratelimit-limit-requests / x-ratelimit-limit-tokensリクエスト数とトークン数の上限
x-ratelimit-remaining-requests / x-ratelimit-remaining-tokens現在の残り
x-ratelimit-reset-requests / x-ratelimit-reset-tokens上限が元に戻るまでの時間
x-ratelimit-limit-project-tokens などプロジェクト単位のトークン上限・残り・リセット

公式のヘッダー一覧に、画像枚数(IPM)の残りを返すヘッダーはありません(2026年10月1日時点)。IPM に届いたかどうかは、429 の内容と自分の送信記録から判断することになります。

Retry-After が付いていても、すべてが待てば解決するわけではありません。このヘッダーが付くのは、一時的なレート制限による 429 と、一時的な混雑による 503 です。OpenAI は、残高や課金のように利用者の操作が必要なエラーが再試行で解決するという意味ではない、と注記しています。

slow_down は上限内でも起きる

slow_down は、RPM や TPM の範囲内に収まっていても返ることがあります。見ているのは量そのものではなく、量が増えた速さです。OpenAI の目安は、入力が毎分100万トークンを超える規模では、15分ごとに50%以内の増加にとどめる、というものです。バッチ処理を一斉に開始するような使い方では、同時実行数を少しずつ増やしていくと避けられます。

Python での分岐の例

公式 SDK は、対象になる 429 と 503 を自動で再試行します。自分でも再試行を書くと二重のループになるので、SDK 側を止めるか、回数に織り込みます。次の例は SDK の自動再試行を止め、コードごとに分岐する考え方を示したものです。待ち時間と回数は自分の処理に合わせて調整してください。

hljs python
import random
import time

from openai import OpenAI, RateLimitError, InternalServerError

# 再試行しても直らないコード(残高・支出上限・利用上限)
NEEDS_ACTION = {
    "credit_balance_exhausted",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
    "organization_usage_limit_exceeded",
    "insufficient_quota",
}

client = OpenAI(max_retries=0)  # SDK の自動再試行を止める


def wait_seconds(error, attempt):
    retry_after = error.response.headers.get("retry-after")
    if retry_after:
        base = float(retry_after)          # 最低限の待ち時間として守る
    else:
        base = min(2 ** attempt, 60)       # ヘッダーがなければ指数バックオフ
    return base + random.uniform(0, 1)     # ランダムな遅延を足す


def generate(prompt, max_attempts=5):
    for attempt in range(max_attempts):
        try:
            return client.images.generate(model="gpt-image-2", prompt=prompt)
        except RateLimitError as e:
            code = getattr(e, "code", None)
            kind = getattr(e, "type", None)
            if code in NEEDS_ACTION or kind == "insufficient_quota":
                # 待っても直らない。処理を止めて残高や上限の設定を確認する
                raise
            time.sleep(wait_seconds(e, attempt))
        except InternalServerError as e:
            # 503 server_is_overloaded など、一時的な混雑
            time.sleep(wait_seconds(e, attempt))
    raise RuntimeError("再試行の上限に達しました")

Python の SDK では 429 が RateLimitError、503 が InternalServerError として届きます。

再試行では直らない 429 と、制限ではない拒否

残高・支出上限・利用上限の 429 は、原因ごとに直す画面が違います。

  • credit_balance_exhausted:前払いの残高がゼロです。残高を追加すれば使えるようになります。分単位の枠がどれだけ残っていても関係ありません。
  • organization_spend_limit_exceeded / project_spend_limit_exceeded:組織またはプロジェクトにハード支出上限が設定されていて、そこに届いています。「予算はまだあるはずなのに 429 が出る」ときは、自分のプロジェクトだけ低い上限が設定されていないかを管理者に確認します。
  • organization_usage_limit_exceeded:OpenAI が承認した月間利用上限に届いています。自分の設定画面では変えられず、上限の引き上げ申請かサポートへの連絡が必要です。前の節の表のとおり、Tier 1 は月 $100、Tier 2 は月 $500 が天井です(2026年10月1日時点)。

もう1つ、レート制限と取り違えやすいのがアクセス資格による拒否です。OpenAI は一部の製品・機能・モデルの利用前に組織の本人確認を求めることがあり、確認は利用資格の一部だと説明しています。モデルへのアクセスや本人確認を理由に断られている場合、それはレート制限ではなく、時間を置いても解消しません。エラー本文が上限ではなく権限や確認に触れているなら、組織の設定画面で状態を確認します。

Batch API は分単位の上限を消費しない

Batch API に投入したリクエストは、同期リクエストのレート制限を消費しません。Batch 側には別の上限として、モデルごとにキューに入れられる入力トークン数の制限があります。

急ぎではない大量生成を Batch に回すと、通常の API 呼び出し用の IPM と TPM を、すぐ結果が必要な処理のために空けておけます。ただし、月間利用上限や支出上限は金額で数えるので、Batch で使った分も同じように積み上がります。

Azure OpenAI の gpt-image-2 はリクエスト数で数える

Azure OpenAI(Microsoft Foundry)の gpt-image-2 は、画像枚数ではなく1分あたりのリクエスト数(RPM)で上限が決まり、数値も OpenAI API とは別です。Microsoft のクォータと制限のページ(2026年8月20日付)の値は次のとおりです。

Azure のティアgpt-image-2 Global Standardgpt-image-2 Data Zone Standardgpt-image-2.5-flare / gpt-image-2.5-sunburst Global Standard
Tier 16 RPM2 RPM5 RPM
Tier 212 RPM4 RPM5 RPM
Tier 318 RPM6 RPM5 RPM
Tier 424 RPM8 RPM5 RPM
Tier 530 RPM10 RPM5 RPM

対象は Azure OpenAI のサブスクリプション、2026年10月1日時点で公開されている数値です。

Azure のティアは Free と Tier 1〜6 の7段階で、利用量に応じて自動で上がります。それ以上の枠が必要な場合は、クォータの申請フォームから依頼します。

リージョンを増やして枠を広げる、という考え方は通用しなくなりつつあります。Microsoft は2026年5月7日以降、クォータをリソースやリージョンごとではなくサブスクリプション単位で管理する方式に順次切り替えており、いずれ全モデルが対象になると案内しています。この方式の Global Standard では、同じモデル・同じバージョンのデプロイが、サブスクリプション内の全リージョンで1つのクォータを共有します。Data Zone Standard では、データゾーン(米国や EU など)ごとに1つの枠です。

OpenAI API のティアを上げても Azure の枠は変わらず、その逆も同じです。Azure 経由で 429 が出たら、Azure 側のクォータ画面で自分のサブスクリプションの割り当てを確認します。

中継サービス経由の 429 は、そのサービスの枠

OpenAI と直接契約せず、第三者の API 中継サービスを通して gpt-image-2 を呼んでいる場合、返ってくる 429 はそのサービス自身の枠によるものです。中継サービスが複数の利用者で1つの枠を共有している場合、自分の送信量が少なくても、混雑時には 429 やタイムアウトが返ることがあります。自分の OpenAI のティアはここでは関係がなく、確認先はそのサービスの管理画面と告知です。

開発ではなく、GPT Image 2 で画像を数枚作りたいだけなら、枚数単位で払う方法もあります。YingTu では、自分の LaoZhang API キーを貼り付けて使う形で、GPT Image 2 が1枚 $0.03 です(2026年10月1日時点)。価格と対応サイズは YingTu の GPT Image 2 モデルページにあります。これは OpenAI の組織とは別の利用枠なので、OpenAI 側のティアが上がることはなく、OpenAI のティアに左右されることもありません。

なお、OpenAI の利用規約はレート制限や制約を回避する行為を禁じています。ChatGPT の上限に届いたから別のアカウントを作る、といった使い方は対処法になりません。

よくある質問

月の予算が残っているのに 429 が出るのはなぜですか?

分単位の上限と月額の上限が別々に数えられているからです。予算が残っていても、1分間に送った画像枚数が IPM を超えれば 429 になります。逆に、送信ペースが遅くても、プロジェクトのハード支出上限に届いていれば project_spend_limit_exceeded が返ります。error.code で区別できます。

GPT Image 2 の API 上限は毎日リセットされますか?

gpt-image-2 のモデルページに載っているのは1分あたりの TPM と IPM だけで、1日あたりの枚数は載っていません(2026年10月1日時点)。分単位の枠は時間がたてば戻り、戻るまでの時間は x-ratelimit-reset-requests と x-ratelimit-reset-tokens で確認できます。月間利用上限は月単位の金額です。

ティアを上げるには何が必要ですか?

API への累計支払額が基準に届くことが条件で、届けば自動で上がります。Tier 2 は $50、Tier 3 は $100、Tier 4 は $250、Tier 5 は $1,000 の支払いが条件です(2026年10月1日時点)。OpenAI のページには、現在これ以外の条件は記載されていません。

Azure の上限は OpenAI API と同じですか?

違います。OpenAI API は TPM と IPM、Azure OpenAI は RPM で数え、Tier 1 の gpt-image-2 は OpenAI API が毎分5枚、Azure の Global Standard が毎分6リクエストです(2026年10月1日時点)。管理する会社も確認する画面も別です。

タグ

#GPT Image 2#OpenAI API#レート制限#429 エラー#Azure OpenAI

この記事を共有

XTelegram