OpenAI APIの使いすぎを防ぐ|月の上限と通知、止まった時の見分け方
OpenAI APIの使いすぎを防ぐには、通知(Spend alert)と上限(hard spend limit)を分けて設定します。通知は金額に達してもAPIは止まらず、上限を「Enforce a hard limit」で有効にした時だけ、達した後のリクエストが429エラーで止まります。この記事では、公式ドキュメントで設定の場所と止まり方を確認し、30日分の実測トークン数から上限の金額を計算します。
(確認:OpenAI「Spend limits」「Rate limits」「Pricing」のドキュメント。確認日:2026年10月29日。画面の表記は公式ドキュメントの英語の表記のまま書いています)
通知と上限の違い
| 設定 | 金額に達した時 | 向く使い方 |
|---|---|---|
| Spend alert(通知) | 通知が届く。APIは止まらない | 止めずに気づきたい |
| Hard spend limit(上限) | 対象のリクエストが429エラーになる |
月の支出に上限をかけたい |
公式ドキュメントでは、通知は上限を設定しても有効なままで、上限で止まる前に知らせる使い方ができるとされています。また、止まるのは即時ではなく、記録上の支出が設定額を少し超えることがあると書かれています。
上限を設定する場所
組織(Organization)全体にも、プロジェクト(Project)ごとにも設定できます。公式ドキュメントの手順は次のとおりです。
- 組織:「Organization limits」の画面 → 「Spend」で「Edit spend limit」 → 「Monthly spend limit」に金額を入れる → 止めたい場合は「Enforce a hard limit」をオン → 「Save」
- プロジェクト:「Project settings」 → 「Limits」 → 同じく「Edit spend limit」から設定
設定には、その組織やプロジェクトの設定を変える権限が必要です。記事の自動生成だけを1つのプロジェクトに分けておくと、そのプロジェクトだけに上限をかけられます。
通知の画面での設定手順は、確認した公式ドキュメント(Spend limits)には書かれていませんでした。Terraform で設定する公式の手順には、月の金額をセント単位で指定し、メールで通知する例(20000=200ドル)が載っています。
止まった時のエラーの見分け方
| error.code | 原因 | 戻し方(公式ドキュメント) |
|---|---|---|
project_spend_limit_exceeded |
プロジェクトの上限に達した | 上限を上げるか外す。そのままなら翌月の区切りで戻る |
organization_spend_limit_exceeded |
組織の上限に達した | 同上 |
organization_usage_limit_exceeded |
OpenAIが決めた月の利用上限に達した(HTTPのステータスは資料に記載なし) | 上限の引き上げを申請する |
credit_balance_exhausted |
前払いのクレジットが無くなった(HTTPのステータスは資料に記載なし) | クレジットを追加する |
公式ドキュメントで429と書かれているのは、上の2つ(project_spend_limit_exceeded・organization_spend_limit_exceeded)です。レート制限でも429が返るため、ステータスだけでは区別できません。自動生成のログにはerror.codeまで残しておくと、「使いすぎで止まった」のか「回数の制限(レート制限)」なのかが分かります。
なお、自分で決める上限とは別に、OpenAIは組織ごとに利用段階(usage tier)に応じた月の利用上限を決めています。公式の表では、クレジットの購入額の合計が5ドルで「Build」(月500ドル)、100ドルで「Launch」(月5,000ドル)などとされています。
コード:実測のトークン数から上限の金額を決める
当サイト運営者の環境の30日分の実測(4,634回、1回あたり入力1,937・出力1,195トークン。AI記事の生成コストは何で決まるか)に、公式の料金表(Standard・キャッシュなし)の単価を掛けて月の費用を見積もり、上限と通知の金額の案を出します。モデルは例として2つを選んでいます。実測の環境で使ったモデルとは限りません。
# 30日間の実測トークン数から、モデルごとの月の費用を見積もり、通知と上限の金額を決める
# 使用量:当サイト運営者の環境の30日分の実測(記事「AI記事の生成コストは何で決まるか」)
# 単価:OpenAI 公式の Pricing(Standard・100万トークンあたり・キャッシュなし。2026年10月29日に確認)
CALLS = 4634
IN_AVG, OUT_AVG = 1937, 1195 # 1回あたりの入力・出力トークン(平均)
PRICES = {'gpt-5-mini': (0.25, 2.00), 'gpt-5-nano': (0.05, 0.40)} # (入力, 出力) ドル / 100万トークン
tin, tout = CALLS * IN_AVG, CALLS * OUT_AVG
print(f'入力 {tin:,} トークン / 出力 {tout:,} トークン / 合計 {tin + tout:,}')
print()
for model, (pin, pout) in PRICES.items():
cost = tin / 1e6 * pin + tout / 1e6 * pout
limit = cost * 1.5 # 上限は見積もりの1.5倍(余裕の幅は自分で決める)
print(f'{model:<11} 見積もり ${cost:6.2f}/月 上限の案 ${limit:6.2f} 通知 50%=${limit * 0.5:5.2f} 80%=${limit * 0.8:5.2f}')
計算の結果(Python 3)
入力 8,976,058 トークン / 出力 5,537,630 トークン / 合計 14,513,688
gpt-5-mini 見積もり $ 13.32/月 上限の案 $ 19.98 通知 50%=$ 9.99 80%=$15.98
gpt-5-nano 見積もり $ 2.66/月 上限の案 $ 4.00 通知 50%=$ 2.00 80%=$ 3.20
- 同じ使用量でも、モデルの単価で月の費用は約5倍違う(13.32ドルと2.66ドル)
- 費用の8割以上は出力のトークンから来ている。出力の単価が入力より高いため、記事の文字数の設定がそのまま費用に効く(AI記事が指定文字数の4倍になった原因)
- 上限を見積もりちょうどにすると、月の途中で止まりやすい。余裕の幅(ここでは1.5倍)は、記事の本数の増減に合わせて自分で決める
自動生成で上限を使う時の考え方(筆者の考え)
- 記事の自動生成のように止まっても困らない処理は、プロジェクトの上限で止める。止まって困る処理とはプロジェクトを分ける
- 通知は上限の50%と80%に置くと、月の途中で使い方を見直す時間が取れる
- 止まった時に、処理が途中の記事をどう扱うか(下書きのまま残すか)を決めておく
当サイトが開発・販売しているAmazon Auto Posts(¥9,800・買い切り)は、OpenAIで記事を生成し、管理画面の「トークン使用量」で呼び出し回数・入力と出力のトークン数を確認できます。上の実測もその画面から集計したものです。自社製品なので割り引いて読んでいただいて構いません。OpenAIの利用料は購入代金に含まれず、使うには Creators API の利用資格(過去30日間に10件以上の適格売上)も要ります。
この記事で確かめていないこと
- 上限に達してから実際に止まるまでに、どれだけ超えるか(公式は「少し超えることがある」とだけ記載)
- 日本語の画面での表記(本記事は公式ドキュメントの英語の表記で書いている)
- 通知のメールが届くまでの時間
まとめ
- 通知(Spend alert)は止めない。止めたいなら上限で「Enforce a hard limit」をオンにする
- 自分で決めた上限で止まると
429。error.codeで、上限・利用段階の上限・クレジット切れを見分ける - 上限の金額は、実測のトークン数×単価に余裕の幅を足して決める
本記事は2026年10月29日時点のOpenAI公式ドキュメントにもとづく整理です。料金と画面は変わる可能性があるため、設定の前に公式の記載を確認してください。

