ModelHubby

← All guides · provider record →

OpenRouter (free models) — free tier setup

What you get free

Permanent free access to ~20-22 models carrying the :free suffix, through one OpenAI-compatible aggregator endpoint. Per the catalog: "20 requests/minute; 50 requests/day; up to 1000 requests/day with $10 lifetime topup. Models share a common quota. 'Making additional accounts or API keys will not affect your rate limits, as we govern capacity globally.'" The gotcha: 50 RPD across all free models combined is tiny — the single best upgrade is a one-time $10 credit purchase, which lifts you to 1,000 RPD forever without spending the credits.

Friction check

Credit card no (optional $10 topup for 1,000 RPD)
Phone verification no
Org/membership none
Est. time to first key ~5m (3 steps)
Trains on your prompts yes — "Free providers may log prompts for training"; varies by upstream provider; control routing via account data-policy settings

Get a key

  1. Sign up at openrouter.ai (email or OAuth).
  2. Go to openrouter.ai/keys and create a key (exact button label unconfirmed — verify on first signup). Copy it immediately.
  3. Optional but recommended: in account settings, review your data policy settings — they control which upstream providers your requests may route to (free upstreams may log/train on prompts).
  4. Optional: buy $10 of credits once to raise free-model RPD from 50 to 1,000 (FREE_MODEL_HAS_CREDITS_RPD=1000, per official limits docs).

First request

curl against the catalog base URL. Expected success shape: a JSON chat.completion object with choices[0].message.content.

export OPENROUTER_API_KEY="YOUR_KEY"
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/llama-3.3-70b-instruct:free",
    "messages": [{"role": "user", "content": "ping"}],
    "max_tokens": 16
  }'

(Optional headers HTTP-Referer and X-OpenRouter-Title are only for app rankings on openrouter.ai.)

Limits that will bite you

  • Shared pool: 20 RPM / 50 RPD across all :free models combined — not per model (catalog: shared_pool: true).
  • $10 lifetime topup → 1,000 RPD; without it you will hit the daily wall almost immediately in any automated loop.
  • Rate limits are governed globally: "Making additional accounts or API keys will not affect your rate limits."
  • Negative credit balance breaks free models too: "If your account has a negative credit balance, you may see 402 errors, including for free models."
  • Tool calling is model-dependent on free models. Free-model capacity is upstream-donated and can vanish or degrade without notice.
  • Useful extras: Free Models Router (model id openrouter/free) and model fallbacks for chaining.

Key rotation runbook

  • Second key: create another key at openrouter.ai/keys — but it buys you nothing for rate limits (global governance, see above). Rotation here is for credential hygiene, not quota.
  • Revoke: delete the key at openrouter.ai/keys.
  • ModelHubby integration: export OPENROUTER_API_KEY_2="..." — the key pool picks it up automatically; state machine cools down rate-limited keys per-key.

ModelHubby usage

pnpm mh show openrouter
pnpm mh probe --live --provider openrouter --apply