**TL;DR:** Your code is fine and backoff is correct, but the caps are just low. Usage tiers (Free, Tier 1 to 5) are qualified by total paid spend, and per-model limits live on the model pages. OpenAI limits lower than you expected: read the Limits page and your usage tier The symptom 429s at traffic levels that "should" be fine, or headers showing caps far below what you assumed. Confirm the cause 1.

## The symptom

429s at traffic levels that "should" be fine, or headers showing caps far below what you assumed. No code change will fix this; the account's tier is the ceiling.

## Confirm the cause

1. **Check the Limits page in the dashboard.** It shows your organization's actual rate limits per model. This is the source of truth, not blog posts or memory.
2. **Check your usage tier.** Tiers are Free, Tier 1, Tier 2, Tier 3, Tier 4, Tier 5, qualified by total paid spend (Tier 1 at $5 paid, Tier 2 at $50, Tier 3 at $100, Tier 4 at $250, Tier 5 at $1,000). Higher tiers raise both monthly usage limits and per-model rate limits.
3. **Check per-model limits.** Different models have different RPM and TPM caps at the same tier, and the model pages carry the numbers. A limit that binds on GPT-5 may not bind on a mini model.
4. **Check project token headers.** `x-ratelimit-limit-project-tokens` appears when a project-scoped token limit applies on top of the org limits.

## The fix

- If the tier is the ceiling and the workload is legitimate, the fix is spend: tiers rise automatically as total paid spend grows.
- If one model binds, route bulk or latency-tolerant work to a model with headroom.
- Set the org's monthly usage limit deliberately so a runaway job trips a limit instead of the credit card.

## Verify the fix

After the tier rises, confirm the new caps on the Limits page and in the response headers before raising job concurrency. Do not assume the upgrade; verify it.

## When to use this

- This covers exactly what the title says: OpenAI limits lower than you expected.
- You are setting this up for the first time, or auditing an existing setup.
- You want the key gotchas in one place before you start.

## When not to use this

- You are doing a different workflow with OpenAI; these steps are specific to the title above.
- You need the full reference docs; this is the short path, not the manual.

## Compatibility

- Not pinned to a specific version; follows current OpenAI behavior.