OpenRouter Rate Limits Explained (and How to Avoid Them)
Your script runs beautifully for 50 requests, then dies with a wall of red at request 51. If you have ever built anything on OpenRouter's free tier, you know this moment. OpenRouter rate limits are not complicated, but they are strict, they are layered, and the error message rarely tells you which layer you just hit. This guide breaks down the actual numbers, the difference between free and paid limits, and the retry strategies that keep a project alive — plus the honest shortcut for people who would rather never think about any of this.
- Free models are capped at 20 requests per minute, and 50 requests per day until you have purchased $10 in credits — then the daily cap rises to 1,000.
- A 429 response means "slow down", and failed attempts still count against your daily quota, so blind retries make things worse.
- The fix is exponential backoff with jitter, honoring the Retry-After header, and spacing requests at least 3 seconds apart.
- Upstream providers have their own limits, so you can see 429s even when your own OpenRouter account is under its caps.
- If you just want to chat with the models rather than build on them, a consumer app like CoreAI handles routing and retries invisibly.
What Are OpenRouter Rate Limits, Exactly?
OpenRouter sits in front of dozens of AI providers and sells access through one API. To keep that gateway healthy, it caps how fast and how often each account can call it. There are two layers you care about. The first is the per-minute cap: free model variants (the ones with the :free suffix) allow 20 requests per minute, full stop. The second is the daily cap, and this is the one that bites: accounts that have never bought credits get 50 free-model requests per day. Buy at least $10 of credits — once, ever — and that daily allowance jumps to 1,000 requests.
That $10 threshold is a lifetime unlock, not a balance requirement. Spend the credits down to zero and you keep the 1,000-per-day tier. It is easily the best $10 an OpenRouter tinkerer can spend, and the official API limits documentation confirms the mechanics. Paid (non-free) models work differently: there is no fixed request ceiling, and your effective limit is your credit balance plus whatever the upstream provider will tolerate.
Free Tier vs Paid: The Actual Numbers
Here is the whole picture in one table, because forum threads on this topic contradict each other constantly.
| Tier | Per-minute limit | Daily limit | What triggers a 429 |
|---|---|---|---|
| Free models, no credits purchased | 20 requests/min | 50 requests/day | Either cap, plus provider congestion |
| Free models, $10+ lifetime credits | 20 requests/min | 1,000 requests/day | Either cap, plus provider congestion |
| Paid models | No fixed cap | Limited by credit balance | Provider-side limits, negative balance |
Two details trip people up. First, the per-minute cap does not reset the daily cap — you can burn all 50 daily requests in three minutes and be done until tomorrow. Second, requests that fail with a 429 still count toward the daily quota. A naive retry loop that hammers the endpoint five times per failure can torch a day's allowance in under a minute. Ask me how I know.
Why Do 429 Errors Happen Even Under the Limit?
This is the part the documentation only hints at. OpenRouter is a router, not a datacenter. When you call a free model, your request lands on an upstream provider that donated or discounted that capacity — and that provider has its own rate limits, shared across every OpenRouter user hitting the same model. When a popular free model gets slammed (which happens every time a new release trends), the provider throttles, and OpenRouter passes the 429 back to you. Your account did nothing wrong; the pipe is just full.
You will see this most on brand-new budget models. The pattern is predictable: launch day traffic spikes, free-variant 429s spike with it, and things settle within a week. If you are getting 429s at 9 a.m. on a Tuesday with 3 requests used, congestion is almost certainly the culprit — switch models or wait it out. Our guide to budget AI models under a dollar covers several low-cost paid options that dodge the congestion problem entirely, since paid capacity is provisioned far more generously.
How to Avoid OpenRouter Rate Limits: The Retry Playbook
You cannot raise the caps by being clever, but you can stop wasting quota. Four rules cover 95% of cases:
1. Honor the Retry-After header
When OpenRouter returns a 429, it usually includes a Retry-After header telling you exactly how long to wait. Treat it as law. Retrying earlier burns quota and accomplishes nothing.
2. Use exponential backoff with jitter
No header? Start at 1 second, double each attempt (1s, 2s, 4s, 8s), and add a random 0–500ms of jitter so parallel workers do not retry in lockstep. Cap retries at 4 or 5 attempts, then surface the error.
3. Queue requests 3+ seconds apart
20 requests per minute is one request every 3 seconds. A simple client-side queue spaced at 3 seconds keeps you permanently under the per-minute cap, which means every 429 you do see is a daily-cap or congestion signal — much easier to debug.
4. Spend the $10
Going from 50 to 1,000 daily requests for a one-time $10 purchase is a 20x unlock. If your project has outgrown 50 calls a day, this is not a decision, it is a formality.
The No-Code Escape Hatch
Here is the thing nobody says out loud: most people fighting rate limits are not building products. They are individuals who wanted to try Kimi K3 or GPT-5.6, found an API playground, and are now debugging HTTP headers to have a conversation. If that is you, stop. Consumer apps exist precisely so you never think about request quotas, retries, or backoff curves.
CoreAI is built for exactly this: 300+ AI models — including the same headline releases people queue up for — in one app on iOS, Android, and the web, with no API keys and no per-token billing. Routing, failover, and retries happen behind the scenes; if a model hiccups, the app deals with it while you keep typing. You can browse the full model catalog, run the same prompt through multiple models side by side in Compare, and if you hit a wall, it is a plain-English usage limit on your plan, not an opaque 429. There are also 74 free AI tools that require no signup at all. Developers need the API; everyone else needs an app.
Frequently Asked Questions
How many free requests does OpenRouter allow per day?
Accounts that have never purchased credits get 50 free-model requests per day, at up to 20 requests per minute. A one-time purchase of $10 or more in credits permanently raises the daily cap to 1,000 requests. The per-minute cap stays at 20 either way.
Do failed requests count against OpenRouter rate limits?
Yes. Requests rejected with a 429 still count toward your daily quota, which is why aggressive retry loops are self-defeating. Space retries out using the Retry-After header or exponential backoff so failures do not compound.
Why am I getting 429 errors when I have barely used my quota?
Free-model capacity is shared across all users, and upstream providers throttle when a model is congested. This is common in the days after a popular model launches. Switching to a different model, a paid variant, or simply retrying later usually resolves it.
Can I use OpenRouter models without managing rate limits at all?
If you need programmatic access, no — limits are part of the deal, and your code should handle them. If you just want to chat with the models, a consumer app like CoreAI gives you the same frontier models with no API keys or retry logic, under one subscription with clear usage limits.
Does buying more credits increase the per-minute limit?
No. The $10 lifetime purchase raises the free-model daily cap from 50 to 1,000, but the 20-requests-per-minute ceiling on free models does not change. Paid models have no fixed request cap and scale with your balance and the upstream provider's capacity.
Every AI model. One app.
Chat with 300+ AI models, compare them side by side, and use 74 free AI tools — on iOS, Android, and the web. No API keys, no 429s.
Try CoreAI on the Web

