Gemini APIの402エラー「prepayment credits are depleted」。前払い残高が0で、待っても戻らなかった
10月16日の朝、動画の声を作っていた2つの作業が、同じ時刻に止まりました。
片方は動画1本の組み立てで、もう片方は長い朗読の声づくりです。
どちらのログにも、Gemini APIから返ってきた同じ文が残っていました。
HTTP 402
{
"error": {
"code": 402,
"message": "Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. ",
"status": "RESOURCE_EXHAUSTED"
}
}
前払いしておいたお金(クレジット)を使い切った、という意味です。
この402は、時間をおいても直りません。
残高を足すと、同じコマンドで続きから動きました。
僕は英語圏向けの日本語学習チャンネル「Honto Japanese」で、会話の声をGeminiのTTSで作っています。
TTSは、文字を読み上げ音声にする機能のことです。
この402には、9月25日と10月16日の2回当たりました。
1回目と2回目で、残高が0になった理由が違います。
429と同じRESOURCE_EXHAUSTEDが付いてくる
402は、HTTPの決まりで「支払いが必要」を表す番号です。
Googleのエラー一覧でも、402は前払いの残高切れとされています。
対処は「クレジットを足すか、自動チャージを入れる」で、再試行はするなと書かれています。
紛らわしいのは、エラー文の status です。
RESOURCE_EXHAUSTED は、回数の上限に当たった429でも出る言葉です。
status の文字で分けていると、上限と残高切れを取り違えます。
見るべきは、先頭の番号のほうです。
Googleの開発者フォーラムには、9月18日付の告知がありました。
前払い切れは、それまでの429から402に変える、という内容です。
同じ文言で429が返ってきたと書いた古いスレッドは、変更前のものです。
僕の道具は、429なら待って取り直し、402なら再試行せずに止まる作りでした。
もし402も待つ作りだったら、残高が入るまで空回りしていたはずです。
1回目は、Cloudの無料クレジットでは払えなかった
9月25日、声の聞き比べでGeminiを初めて呼んだときに402が出ました。
3時間ほどあとにモデルを替えて試しても、TTSの4つのモデルがすべて402です。
このときは、まだ1円も前払いしていませんでした。
請求先のアカウントは、Google Cloudの無料トライアルのものでした。
無料トライアルには、300ドル分のクレジットが付いてきます。
これで払えると思っていましたが、AI Studio の画面には「前払いが必要」と出ていました。
公式の課金ページのよくある質問に、答えが書いてあります。
Cloudの無料トライアルのクレジットは、Gemini APIとAI Studioには使えません。
2026年3月からは、Gemini APIの費用がこの300ドルの対象から外れた、ともあります。
同じ日に5ドルを前払いし、有料のキーで声が出ることを確かめました。
5ドルは、前払いできる最低額です。
2回目は、入れていた残高が尽きた
10月16日に止まったのは、その残高を使い切ったからです。
9月25日のあとに足した記録は、残っていません。
自動チャージも入れていませんでした。
AI Studio の課金の画面を開くと、クレジット残高はマイナス23円でした。
マイナスなのは、止めるのが使った量に少し遅れるためです。
公式には、このマイナス分は次に買うクレジットから引かれるとあります。
画面には、次の文も出ていました。
サービスを再開するには、クレジット残高が 0 ドル以上必要です。
2つの作業が同時に止まったのも、仕様どおりです。
公式には、残高が0になると、その請求先につながるすべてのキーが一斉に止まるとあります。
キーを作り直しても、別のプロジェクトに逃がしても、請求先が同じなら通りません。
残高を足すまでの手順
AI Studio で、次の順に確かめます。
支払いの入力は、僕が自分でしています。
部下役のAIは、課金の画面を開いて残高を読むところまでです。
- AI Studio の Projects の画面を開く
- 止まったプロジェクトの Billing Tier の欄を見る
- Set up billing、Set up Prepay、No credits のどれが出ているかを見る
- Billing の画面で、クレジット残高の枠にある Buy credits(クレジットを購入)を押す
- 金額を入れて支払う
3で出る言葉は、公式ではこう分けられています。
Set up billing は、請求先のアカウントがまだ付いていない状態です。
Set up Prepay は、請求先はあるが前払いの設定が済んでいない状態です。
No credits は、前払いの残高が尽きているか、前払いの口がまだない状態を指します。
買える額は、1回5ドルから5,000ドルまでです。
買ったクレジットは、12か月で失効します。
銀行振込などは確認に日数がかかり、確認が済むまで再開しない、ともあります。
10月16日は、補充を始めて約2分後に作業を再開でき、402は出ませんでした。
止まるのを防ぐなら、同じ画面の自動チャージ(auto-reload)が使えます。
残高が決めた額を下回ると、自動で買い足す設定です。
月ごとの上限も付けられます。
僕は使う量が少ないので、今のところ手で足しています。
足したあとは同じコマンドで続きから
僕の道具は、できた音声を1場面ずつファイルに残しています。
朗読のほうは、場面21まで保存され、場面22で止まっていました。
再開は、止まる前と同じスクリプトを起動し直すだけです。
作り直しはなく、場面22から続きました。
自分でAPIを呼ぶコードを書いているなら、402は再試行の対象から外すのが安全です。
僕の道具の分け方を、短くするとこうなります。
import urllib.error
try:
resp = call_gemini(body) # urllib.request で POST する自作の関数
except urllib.error.HTTPError as e:
if e.code == 402:
# 残高切れ。待っても戻らないので、ここで止めて人に知らせる
raise SystemExit("Gemini API 402: 前払い残高を AI Studio で確認")
if e.code == 429 or e.code >= 500:
pass # 待ってから取り直す(1日の上限なら止める)
raise
公式の説明でも、400・402・403は再試行しない誤りとして挙がっています。
Python の公式の部品(SDK)も、自動で取り直すのは429や5xx系だと書かれています。
残高はあるのに402が出るとき
フォーラムには、残高があるのに402が出るという報告がいくつも立っています。
僕はこの形には当たっていないので、原因は確かめられていません。
自分で確かめるなら、次の3点を見ます。
- Projects の画面で、止まったプロジェクトに No credits が出ていないか
- そのプロジェクトの請求先が、お金を入れた請求先と同じか
- 支払いの確認が済んでいるか(振込などは日数がかかる)
1つ目と2つ目は、公式の課金ページの説明から僕が立てた見方です。
これで分からなければ、フォーラムの同じ報告を追うのが早いと思います。
参考
- 運営記録:2026年9月25日(声の聞き比べで402・前払いの調査メモ・5ドルの前払い)、10月16日(2つの作業が402で停止・課金画面の確認・再開)
- 自作の組み立てツールの402と429の扱い(tools/yt_convo_maker.py)
- Billing | Gemini API(2026年11月13日確認):https://aistudio.google.com/docs/billing
- API errors | Gemini API(2026年11月13日確認):https://aistudio.google.com/docs/api-errors
- Troubleshooting | Gemini API(2026年11月13日確認):https://aistudio.google.com/docs/troubleshooting
- Googleの開発者フォーラムの告知(2026年9月18日・前払い切れを429から402へ):https://discuss.ai.google.dev/t/api-update-depleted-prepay-credits-now-return-http-402-instead-of-429/183654
同じGeminiのTTSで、回数の上限に当たった429の話はこちらです。
Gemini TTSが429エラーで止まった。1日100回の上限に、朝のテストも入っていた
8日後には、別の形の400でも止まりました。
Gemini TTSが400「Unknown parameter ‘mode’」で止まった。speech_configからmodeを外したら通った