OpenAI Rate Limits by Tier

What are OpenAI's API rate limits?

OpenAI's entry tier (Free) allows 3 requests/min and 40,000 tokens/min for documented default/model family. Limits scale up through Tier 3 as cumulative spend and account age increase — see the full table below, verified 2026-08-14.

Verified 2026-08-14 source

Limits by tier

TierQualificationModel classRPMTPMRPDConcurrent
FreeNo payment method on filedocumented default/model family340,000200
Tier 1$5 cumulative spend and account-age requirementdocumented default/model family500200,00010000
Tier 3$100 cumulative spend and account-age requirementdocumented default/model family50002,000,000

— means not documented by OpenAI, never a guess.

What this means for your workload

Classification at volume: 116 calls/min and 60,320 tokens/min at the production profile.

At the production volume in classification-at-volume (116 calls/min; 60,320 tokens/min), the documented cap is sufficient for RPM 500 and TPM 200,000.

Response headers

retry-afterSeconds to wait before retrying, when supplied with a 429
rate-limit response headersProvider-specific remaining and reset counters when documented

When you exceed the limit

OpenAI returns HTTP 429.

Use jittered exponential backoff and inspect the rate-limit headers.

FAQ

What happens when I exceed OpenAI's rate limit?

OpenAI returns HTTP 429 with a retry-after header telling you how long to wait. Use jittered exponential backoff and inspect the rate-limit headers.

How do I request a rate limit increase on OpenAI?

Request one from the account dashboard: https://platform.openai.com/settings/organization/limits

OpenAI provider hubGet an OpenAI API key

Batch 48 · openai rate-limit decision and evidence modules. Surface verification: 2026-08-14. These are dated, route-local fixtures, not live quota claims.

OpenAI limit-scope resolver

Frozen openai evidence board: two organizations · three projects · Responses · Realtime · Batch · image · fine-tuning jobs. Formula / decision rule: binding ceiling = min(all documented buckets sharing the request scope)

Frozen fixtureInputs and observationFormula / boundaryState
batch48-openai-m1-r1
two organizations · three projects
principal/account=joined; endpoint=joined; model/pool=joined; bucket/window=joined; observed=2026-08-14
The primary identity and product joins are present for this frozen fixture.
binding ceiling = min(all documented buckets sharing the request scope)
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH SCOPE — frozen observation only.
batch48-openai-m1-r2
Responses · Realtime · Batch
request/response/error=joined; limit/remaining/reset=observed; retry identity=joined; region=joined
The response evidence is usable only for the named bucket and time window; no neighboring provider is borrowed.
binding ceiling = min(all documented buckets sharing the request scope)
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH LIMIT — dated evidence only.
batch48-openai-m1-r3
image · fine-tuning jobs
workload=joined; prompt/output reserve=explicit; shared pool=declared; unknown=Unavailable; owner=platform
Admission or recovery is withheld where the account-specific value or side-effect identity is absent.
binding ceiling = min(all documented buckets sharing the request scope)
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
UNAVAILABLE — live owner evidence required.

Provenance: Frozen Batch 48 openai fixture: module 1 observation and calculation. First-party evidence checked 2026-08-14; unresolved joins fail closed. Surface verification date: 2026-08-14. OpenAI API rate-limit docs (first-party source)

429 cause-and-retry classifier

Frozen openai evidence board: requests-per-minute · tokens-per-minute · project/organization spend · exhausted credit · capacity overload · invalid organization · partial stream. Formula / decision rule: retry = transient throttle ∧ retry authority ∧ idempotent replay; billing failures are terminal

Frozen fixtureInputs and observationFormula / boundaryState
batch48-openai-m2-r1
requests-per-minute · tokens-per-minute
principal/account=joined; endpoint=joined; model/pool=joined; bucket/window=joined; observed=2026-08-14
The primary identity and product joins are present for this frozen fixture.
retry = transient throttle ∧ retry authority ∧ idempotent replay; billing failures are terminal
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH SCOPE — frozen observation only.
batch48-openai-m2-r2
project/organization spend · exhausted credit
request/response/error=joined; limit/remaining/reset=observed; retry identity=joined; region=joined
The response evidence is usable only for the named bucket and time window; no neighboring provider is borrowed.
retry = transient throttle ∧ retry authority ∧ idempotent replay; billing failures are terminal
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH LIMIT — dated evidence only.
batch48-openai-m2-r3
capacity overload · invalid organization · partial stream
workload=joined; prompt/output reserve=explicit; shared pool=declared; unknown=Unavailable; owner=platform
Admission or recovery is withheld where the account-specific value or side-effect identity is absent.
retry = transient throttle ∧ retry authority ∧ idempotent replay; billing failures are terminal
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
UNAVAILABLE — live owner evidence required.

Provenance: Frozen Batch 48 openai fixture: module 2 observation and calculation. First-party evidence checked 2026-08-14; unresolved joins fail closed. Surface verification date: 2026-08-14. OpenAI API rate-limit docs (first-party source)

Reservation-aware admission scheduler

Frozen openai evidence board: short chat · 120K prompt · long output · five-tool loop · Realtime · batch · mixed-project burst. Formula / decision rule: admit only if every documented bucket has headroom

Frozen fixtureInputs and observationFormula / boundaryState
batch48-openai-m3-r1
short chat · 120K prompt
principal/account=joined; endpoint=joined; model/pool=joined; bucket/window=joined; observed=2026-08-14
The primary identity and product joins are present for this frozen fixture.
admit only if every documented bucket has headroom
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH SCOPE — frozen observation only.
batch48-openai-m3-r2
long output · five-tool loop
request/response/error=joined; limit/remaining/reset=observed; retry identity=joined; region=joined
The response evidence is usable only for the named bucket and time window; no neighboring provider is borrowed.
admit only if every documented bucket has headroom
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
PASS WITH LIMIT — dated evidence only.
batch48-openai-m3-r3
Realtime · batch · mixed-project burst
workload=joined; prompt/output reserve=explicit; shared pool=declared; unknown=Unavailable; owner=platform
Admission or recovery is withheld where the account-specific value or side-effect identity is absent.
admit only if every documented bucket has headroom
A missing provider, product, account, endpoint, model, bucket, or time-window join fails closed; no value is copied across routes.
UNAVAILABLE — live owner evidence required.

Provenance: Frozen Batch 48 openai fixture: module 3 observation and calculation. First-party evidence checked 2026-08-14; unresolved joins fail closed. Surface verification date: 2026-08-14. OpenAI API rate-limit docs (first-party source)

Run the openai Batch 48 evidence scenario →