OpenRouter free tier limits and how to fix 429 errors

Updated 2026-07-15

OpenRouter free model variants are capped at roughly 20 requests per minute, plus 50 requests per day if your account has bought less than $10 in lifetime credits, or 1,000 per day once you pass that threshold. A 429 means you hit one of those caps or the shared free pool is saturated at that moment.

Quick answer: the exact free tier limits

OpenRouter caps free usage on two axes: a per-minute ceiling and a daily request budget. The per-minute limit for free model variants (model IDs ending in :free) is 20 requests per minute. The daily budget depends on whether your account has ever purchased at least $10 in credits: below that lifetime threshold you get 50 free-model requests per day, at or above it you get 1,000 per day. These are the figures OpenRouter documents as of early 2026. They have changed before (the daily cap used to be higher), so treat the table as the current baseline rather than a permanent guarantee, and verify against your own key with the check in the next section. A 429 response means you exceeded one of these caps, or the upstream provider serving that free model ran out of capacity even though your personal quota was fine. The rest of this guide covers how to tell which one you hit and what to do about it.

OpenRouter free tier limits as documented in early 2026. Subject to change.
LimitValueApplies when
Requests per minute20 rpmAll :free model variants, per account
Requests per day50Less than $10 in lifetime credit purchases
Requests per day1,000$10 or more in lifetime credit purchases
Paid modelsSeparate, much higher limitsAny non-free model, billed per token

How the free tier actually works

Free models on OpenRouter are separate catalog entries with a :free suffix. They are served by providers that donate or subsidize capacity, which is why their availability swings far more than paid variants of the same weights. Three details trip people up. First, the daily cap is account wide: 50 requests spread across any mix of free models, not 50 per model. Second, the $10 threshold counts lifetime credit purchases, not current balance. Buying $10 once keeps you in the 1,000 requests per day bracket even after you spend it. Third, limits are enforced per account, so creating extra API keys under the same account adds nothing. You can check exactly where your key stands. The response includes is_free_tier, your usage so far, and the rate limit object currently applied to your key:

curl https://openrouter.ai/api/v1/auth/key \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"

# Response fields worth reading:
# "is_free_tier": true    -> under the $10 lifetime threshold
# "usage": 1.42           -> credits consumed
# "rate_limit": {...}     -> the per-interval limit on this key

Why 429s spike at peak hours

Your personal caps are only half the story. Free capacity is a shared pool, and OpenRouter can only route a free request to a provider with spare subsidized capacity at that moment. When a popular free model saturates, you get 429 or upstream errors even if you have made only a handful of requests that day. Community reports consistently describe evenings in US time zones and weekends as the worst windows, with the same request succeeding immediately at off-peak hours. Those are approximate observations, not published numbers, but they recur often enough to plan around. Chat frontends amplify the problem. SillyTavern and JanitorAI style interfaces send a fresh completion request for every swipe, regenerate, and group chat turn, and some proxy setups retry failures automatically. A user who feels like they sent 15 messages may have generated 40 to 50 requests, which is the entire daily budget of an account below the $10 threshold. Aggressive automatic retries also deepen peak congestion for everyone, which is why disciplined backoff matters. The practical diagnostic: if 429s stop when you wait until the daily reset, you hit your quota. If they come and go within the same hour while your request count is low, you are seeing pool congestion.

Fixes, in order of effort

If you keep traffic on the free tier, the minimum viable client handles 429 explicitly instead of failing or blind-retrying:

  • Read the error body first. OpenRouter 429s distinguish between your per-minute limit, your exhausted daily quota, and upstream congestion. Fix the one you actually hit.
  • Respect Retry-After and back off exponentially with jitter. Hammering the endpoint keeps you rate limited longer and worsens congestion.
  • Cross the $10 lifetime credit threshold once. It lifts the daily cap from 50 to 1,000 requests and is the single highest-leverage fix for daily-quota 429s.
  • Move the traffic that matters to a paid variant of the same model. DeepSeek-class models cost well under a dollar per million tokens, so a heavy evening of chat usually costs cents.
  • Cut request volume at the client: disable auto-regeneration, avoid unnecessary swipes, and trim context so each retry is cheaper when it does happen.
import random
import time

import requests

def chat(payload: dict, key: str, retries: int = 5) -> dict:
    for attempt in range(retries):
        r = requests.post(
            "https://openrouter.ai/api/v1/chat/completions",
            headers={"Authorization": f"Bearer {key}"},
            json=payload,
            timeout=120,
        )
        if r.status_code != 429:
            r.raise_for_status()
            return r.json()
        wait = float(r.headers.get("Retry-After", 2 ** attempt + random.random()))
        time.sleep(wait)
    raise RuntimeError("Still rate limited after all retries")

Alternatives when 50 requests per day is not enough

If your usage pattern is consistently above the free budget, there are four realistic paths. The right one depends on whether your bottleneck is the daily quota, peak-hour congestion, or both. Note that the paid options differ mainly in overhead, not in request shape: all of them speak the same OpenAI-compatible chat completions format, so switching is a base URL and key change rather than a rewrite.

OptionCost modelRate limit behaviorTradeoff
OpenRouter :free variants$020 rpm; 50 or 1,000 requests/dayShared pool, peak congestion
OpenRouter paid modelsPer token, credits up frontMuch higher, scales with accountPlatform fee on credit purchases
Direct provider APIsPer token at official list priceProvider-specific tiersSeparate key and billing per provider
Direct pay-as-you-go gatewaysPer token, no subscriptionPaid capacity, no free-pool contentionYou pay from the first request
Self-hosted open weightsHardware and powerLimited only by your GPUSetup effort, model size ceiling

Running a chat frontend on a direct gateway

A direct gateway keeps the OpenAI-compatible request shape but removes the free-pool queue, because every request is paid capacity. APIsRouter is one example: pay as you go with no subscription, and a no-signup checkout at /topup where you pay first and the API key arrives by email. Global models run 20% below official list pricing, Chinese models sit below their official rates, and a first top-up doubles your starting balance. Frontend setup mirrors what you already do with OpenRouter. In SillyTavern, paste the base URL ending at /v1 (https://api.apisrouter.com/v1) and the model list auto-populates from /v1/models with your key. JanitorAI proxy configuration needs the full endpoint instead: https://api.apisrouter.com/v1/chat/completions, plus the model name and the API key. For character chat and roleplay traffic, the DeepSeek V4 family is the community favorite for value, with MiMo, GLM-5, and Kimi K2.6 as further value picks. Claude Sonnet 4.6 writes the strongest prose for safe-for-work creative writing under Anthropic's content policy.

ModelModel IDInput / output per 1M tokens
DeepSeek V4 Flashdeepseek-v4-flash$0.126 / $0.252
DeepSeek V4 Prodeepseek-v4-pro$0.3915 / $0.783
GLM-5glm-5$0.514 / $2.314
Gemini 3.5 Flashgemini-3.5-flash$1.20 / $7.20
Claude Sonnet 4.6claude-sonnet-4-6$2.40 / $12.00
curl https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

FAQ

Is OpenRouter free to use?

Partly. OpenRouter lists free variants of some models (IDs ending in :free) that cost nothing but are capped at roughly 20 requests per minute and 50 or 1,000 requests per day, depending on whether you have ever bought $10 in credits. All other model listings are paid per token.

Why do I keep getting 429 errors on OpenRouter?

A 429 means you exceeded the per-minute limit, exhausted your daily free-request budget, or the shared upstream capacity for that free model is saturated. The error body says which. Quota 429s persist until the daily reset; congestion 429s usually clear at off-peak hours.

How do I increase my OpenRouter rate limit?

Buy $10 in credits once. That lifetime threshold lifts the free-model daily cap from 50 to 1,000 requests. Beyond that, the options are moving traffic to paid model variants, spreading requests with backoff, or routing overflow through a different provider or gateway.

Do OpenRouter free models have a daily limit?

Yes. The daily budget is shared across all free models on your account: 50 requests per day below $10 in lifetime credit purchases, 1,000 per day at or above it. It is enforced at the account level, so extra API keys on the same account do not add quota.

Is the free tier enough for JanitorAI or SillyTavern?

For light testing, yes. In practice every swipe, regenerate, and group turn is a separate request, so an active session can burn 50 requests quickly, and peak-hour congestion adds failures on top. Heavy users typically move to cheap paid models. Whichever you use, follow the frontend platform ToS, including its age requirements, and the model provider content policy.