Inference APIs
Reference/Errors/OpenAI API

OpenAI API 429 "You exceeded your current quota" (insufficient_quota): it is billing, not a rate limit, and what to do

This is the most misread error in the OpenAI API. The status is 429, which every SDK and every tutorial associates with "slow down", so the retry-with-backoff code kicks in and fails again, and again. It has nothing to do with speed. The organization that owns the key has run out of prepaid API credit, or reached a monthly spend limit that someone set. The second common misreading is thinking a ChatGPT Plus or Pro subscription covers the API: it does not. API usage is a separate prepaid balance on the OpenAI Platform, and a new key on an account that has never bought API credit produces exactly this message on its first request.

Last verified September 21, 2026 against OpenAI docs: error codes, OpenAI docs: rate limits and usage tiers, GitHub: issues quoting the exact message · 5 min read

ProviderOpenAI API (api.openai.com)
HTTP status429 Too Many Requests, the same status as a rate limit, which is the source of the confusion
Error typeinsufficient_quota; error.code says which kind: credit_balance_exhausted or organization_spend_limit_exceeded
MessageYou exceeded your current quota, please check your plan and billing details.
How common2,933 GitHub issues quote the exact message; 1,707 mention insufficient_quota (GitHub search, September 21, 2026)
Can you wait it out?No. It clears when credits are added or a spend limit is raised. OpenAI's docs: "Retrying billing, spend, or quota errors won't restore API access."
Short answer
  • Read error.code. credit_balance_exhausted or organization_spend_limit_exceeded is billing; anything under rate_limit_error is speed. Only the second is helped by waiting.
  • Billing fix: add credits, or raise the spend limit, in the OpenAI Platform for the organization and project the key belongs to. A ChatGPT subscription does not count.
  • If GPT is not required: run the same code on an open model behind a different base URL, on a balance that is prepaid and uncapped. Fix 3 below.

What the error looks like, and the four 429s

HTTP 429 · OpenAI API (api.openai.com)
{
  "error": {
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.",
    "type": "insufficient_quota",
    "param": null,
    "code": "insufficient_quota"
  }
}

OpenAI uses one status for four situations and tells them apart in the body. error.type is insufficient_quota for both billing cases; error.code narrows it:

HTTPerror.type / error.codeWhat it meansFixed by
429insufficient_quota · credit_balance_exhaustedThe organization has no prepaid credits leftAdding credits. Not by waiting
429insufficient_quota · organization_spend_limit_exceededA monthly spend limit you or an admin set was reachedRaising the limit, or waiting for the month to reset
429rate_limit_error · rate limit reachedToo many requests or tokens per minute for your tierWaiting for Retry-After; the SDKs do this
429rate_limit_error · slow_downYour request rate rose too fastRamping up gradually

The OpenAI SDKs retry every 429 by default, twice, with backoff. For the two billing codes that only delays the message. If you handle 429 in your own code, branch on error.type first.

Shell · see which 429 you have
curl -s https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Say ok"}],"max_tokens":5}' | python3 -c "import sys,json; e=json.load(sys.stdin).get('error',{}); print(e.get('type'), e.get('code'), '|', e.get('message','')[:90])"
# insufficient_quota  -> billing; add credits or raise the spend limit.   rate_limit_error -> wait for Retry-After.

Why you got it

  • No API credit has ever been bought. The API is prepaid for new accounts. A key created on a fresh account, or on an account that only has a ChatGPT subscription, has no balance to draw on and fails on the first call.
  • The balance ran out. Usage drew it down to zero. Auto-recharge, if you set it up, has a monthly ceiling of its own.
  • A spend limit was reached. Organizations can set a monthly limit; when it is hit, the error is the same until the month resets or an admin raises it.
  • The key is in the wrong project or organization. Credits belong to an organization and limits can be set per project. A key from a project with a $0 budget fails even if another project has funds.

Fix 1: add credit or raise the limit

In the OpenAI Platform, open Billing for the organization that owns the key, add credits, and check the project's spend limit. Then re-run the request; there is no cache to clear and no reset to wait for. If you are not sure which organization the key belongs to, the Platform shows it next to the key. This is the only fix for GPT models: nobody else serves them.

Fix 2: stop retrying it

Whatever you do about the balance, make the code stop treating this as transient. Check error.type == "insufficient_quota" before the retry loop and raise, alert or fail over instead. Every minute of exponential backoff against a billing error is a minute of downtime with nothing happening. The same applies to the 402 that other providers use for this: DeepSeek, OpenRouter.

Fix 3: if the task does not need GPT, run it on an open model

A lot of code that calls gpt-4o-mini is doing summarisation, extraction, classification or a chat assistant, and current open models do that work. The OpenAI SDKs take a base_url, so the change is one line and a model name:

Python (openai SDK) · the same code against an open model on a prepaid balance
import os
from openai import OpenAI

# was: client = OpenAI()   # api.openai.com, gpt-4o-mini
client = OpenAI(base_url="https://api.inferenceapis.com/v1", api_key=os.environ["INFERENCEAPIS_API_KEY"])

resp = client.chat.completions.create(
    model="openai/gpt-oss-120b",        # OpenAI's open-weight model; or deepseek-ai/DeepSeek-V4-Flash, zai-org/GLM-5.3
    messages=[{"role": "user", "content": "Summarise this in one line: ..."}],
)
print(resp.choices[0].message.content)

Two honest limits. We do not serve GPT models; a request for one returns 404 model_not_found with a link to this catalogue. And openai/gpt-oss-120b, OpenAI's open-weight release, is a reasoning model: it thinks before it answers, which is slower on short prompts unless you send reasoning_effort: "low".

If you were usingOpen model to try herePer 1M tokens in / outNotes
gpt-4o-mini, gpt-4.1-mini, gpt-5-minideepseek-ai/DeepSeek-V4-Flash$0.19 / $0.381M context; tools, JSON mode, vision not included
gpt-4o, gpt-4.1zai-org/GLM-5.3 or deepseek-ai/DeepSeek-V4-Pro$1.82 / $5.72 · $1.72 / $5.15The strongest agent and coding models here
Anything, when you want an OpenAI modelopenai/gpt-oss-120b$0.20 / $0.80OpenAI's own open-weight release; reasoning model
VisionQwen/Qwen3-VL-235B-A22B-Instruct$0.26 / $1.15Image plus text in

What is different on this side of the switch: the balance is prepaid and yours, there are no usage tiers to unlock and no monthly cap, and there is no per-minute meter, so a 429 here only ever means a GPU backend is momentarily busy and carries a Retry-After. Models run in the United States with zero retention (/trust).

Frequently asked questions

I pay for ChatGPT Plus. Why does my API key say I have no quota?

ChatGPT subscriptions and API credit are separate products billed separately. The API needs prepaid credit on the OpenAI Platform regardless of any ChatGPT plan.

The dashboard shows I have credit. Why the error?

Check that the key belongs to the same organization and project as the credit, and that the project's spend limit has not been reached. Keys are scoped; balances are per organization; limits can be per project.

Is this the same as "Rate limit reached for requests"?

No. Both are 429s, but that one has type: rate_limit_error, clears in seconds, and comes with a Retry-After header. insufficient_quota does neither.

Can Inference APIs serve gpt-4o or GPT-5?

No. Those are closed models available only from OpenAI and its cloud partners. We serve open-weight models, including OpenAI's GPT-OSS 120B, through the same API format.

Where Inference APIs fits

Fix 3 is honest about what it is: we do not serve GPT models, and a request for gpt-4o-mini here returns model_not_found. What we serve is open models, including OpenAI's own GPT-OSS 120B, on the same wire format, from a prepaid balance with no tiers to unlock and no monthly cap. If your workload does not need GPT specifically, that is a base URL change. A new account starts with $1 of credit.

Something changed or wrong? Tell us and we will re-verify the entry.