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

Rate-limit reference. Verified 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
two organizations · three projectsprincipal/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.
Responses · Realtime · Batchrequest/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.
image · fine-tuning jobsworkload=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 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
requests-per-minute · tokens-per-minuteprincipal/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.
project/organization spend · exhausted creditrequest/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.
capacity overload · invalid organization · partial streamworkload=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 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
short chat · 120K promptprincipal/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.
long output · five-tool looprequest/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.
Realtime · batch · mixed-project burstworkload=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 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 this scenario →