背景
AWS Lambda から OpenAI API を叩こうとしたら、こんなエラーが返ってきました。
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}
クレジット残高もある
それでも Dashboard や curl から直接叩いても NG
という状況に数日ハマりました。
余談
ちなみにクレジットカードの登録でもハマりました
BillingのPreferencesの住所とCredit Cardの住所が一致する必要がありました。
やったこと(失敗編)
Usage limits を増額
→ $30 や $100 にしてもダメ
環境変数に新しい API Key を設定
→ Lambda の Key 更新忘れも疑ったが、curl でも同じエラー
プロジェクトの Billing 紐づけ を探す
→ UI 上では「Linked Billing Account」が出てこない
→ 結果、プロジェクトと Billing がつながっていないように見えるが、設定画面自体が存在しない
解決方法(成功編)
Billing を一度キャンセルして、再度 Credit を追加し直したら解決しました。
手順
OpenAI Dashboard → Billing
→ 「Cancel plan」を実行
ここで一度Creditの表示が消えます(お金なくなった!?と思うけど復活したので大丈夫)
再度 Add to credit balance からクレジットを追加
すると…
「既存の残高」も含めて復元される
Lambda での動作確認コード
import os, json, urllib.request
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
MODEL = os.environ.get("OPENAI_MODEL", "gpt-5-nano")
def lambda_handler(event, context):
text = event.get("text") if isinstance(event, dict) else ""
if not text:
return _resp(400, {"error": "text が空です"})
try:
reply = call_openai(text)
return _resp(200, {"reply": reply})
except Exception as e:
return _resp(502, {"error": str(e)})
def call_openai(user_text: str) -> str:
url = "https://api.openai.com/v1/chat/completions"
body = {
"model": MODEL,
"messages": [
{"role": "system", "content": "日本語で簡潔に答えて"},
{"role": "user", "content": user_text},
],
}
data = json.dumps(body).encode()
req = urllib.request.Request(
url, data=data,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {OPENAI_API_KEY}",
},
method="POST"
)
with urllib.request.urlopen(req, timeout=20) as res:
resp = json.loads(res.read().decode())
return resp["choices"][0]["message"]["content"]
def _resp(status, body):
return {"statusCode": status, "headers": {"Content-Type":"application/json"}, "body": json.dumps(body, ensure_ascii=False)}
学び
「Quota exceeded / insufficient_quota」エラーは、レート制限だけじゃなくBilling異常でも発生する
クレジットが残ってても、Billing が壊れていると使えないことがある
キャンセル→再契約 で残高ごと復元される場合がある
まとめ
OpenAI API で insufficient_quota が直らないときは、
→ Billing のキャンセル→再契約 を試してみる価値あり
特に プロジェクトに Billing を紐づけられない UI のときに有効
👉 この現象、自分以外にもハマる人絶対いると思うので、Qiita に残します