Free Models on OpenRouter: What's Available and Their Limits
OpenRouter's free model variants (slugs ending in :free) let you exercise the unified API at $0 inference cost, under strict platform rate limits and variable provider capacity.
Search across all documentation pages
OpenRouter's free model variants (slugs ending in :free) let you exercise the unified API at $0 inference cost, under strict platform rate limits and variable provider capacity.
Use them for learning, wiring, and light evals - not as a silent production backend for multi-turn agents.
All numeric limits below are verify at build against OpenRouter limits docs.
:free variant in the live catalog before coding against it.Limits apply to free model variants (IDs ending in :free), governed by lifetime credits purchased on the account:
| Credits purchased (all time) | Requests per minute | Requests per day |
|---|---|---|
| Less than 10 | 20 | 50 |
| At least 10 | 20 | 1000 |
Notes:
| Topic | Expectation |
|---|---|
| Inference price | $0 on the free variant |
| Quality | Often related to a paid sibling, not guaranteed identical hosting |
| Capacity | Best-effort; congestion and provider policy apply |
| Data policy | Frequently more permissive logging/training - read model cards |
| Production SLA | Not a substitute for paid endpoints |
| Catalog churn | Free hosts appear and disappear; pin and re-verify |
| Method | Use |
|---|---|
| Site filter | Models browser with max price = 0 |
| Slug suffix | Look for :free on the model id |
| Models API | GET /api/v1/models then filter id or pricing fields |
| Free models router | openrouter/free (and related cookbook routers) auto-picks a free model when available - verify at build |
# Conceptual filter - field names can evolve; verify at build
free_ids = [m["id"] for m in models if m["id"].endswith(":free")]| Workload | Free tier OK? | Why |
|---|---|---|
| SDK smoke test | Yes | Few requests |
| Prompt sketching | Yes | Interactive, low QPS |
| Offline eval of 20 cases | Maybe | Watch the 50/day ceiling |
| Multi-turn tool agent demo | Risky | Each turn burns a request |
| CI on every PR | Risky | Shared daily budget |
| Production user traffic | No | Caps + capacity + data policy |
| Load / soak tests | No | Use paid variants |
A ReAct-style agent with 1 model call per turn and max_turns=8 can burn 8 free requests for one task.
At 50 requests/day, that is roughly 6 full agent runs/day before hard failure - before retries and eval sweeps.
Budget free tier for integration proof, then switch slugs.
free-dev so Activity filters stay clean.:free availability in CI weekly; skip tests if the variant vanishes.| Dimension | :free | Paid slug |
|---|---|---|
| Cost | $0 inference | Per-token credits |
| Rate limits | Platform free caps | No free-tier RPD/RPM caps (upstream still applies) |
| Routing | Free endpoints only | Broader provider pool |
| Privacy | Often weaker | Better chance of ZDR/paid policies |
| Stability | Volatile | Better for SLOs |
No. Daily and per-minute caps still apply. Going slowly only avoids RPM bursts.
No. It typically raises daily free requests (e.g. to 1000) while RPM stays constrained - verify at build. Paid variants remove the free-variant platform request caps.
Often insufficient or negative balance state, or key credit limits. Inspect GET /api/v1/key and account credits.
BYOK is about your provider keys on supported providers. Free variants are a separate OpenRouter endpoint class. Do not assume they combine.
It is a router-style slug that selects free models for you when configured that way. Confirm behavior and limitations in current docs before relying on it.
Some do, some do not. Filter the catalog for tools capability and run a one-call probe before building an agent loop.
Many free hosts disclose logging/training. Read the model page and privacy tags. Do not send secrets.
Change the slug (drop :free or pick a paid model), ensure credits, re-run evals, then raise traffic.
OpenRouter documents global governance for free usage; extra keys are not a bypass. Design as account-level caps.
HTTP 429 with a rate limit exceeded style payload. Back off, alert, and stop the loop cleanly.
:free suffixStack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.
Reviewed by Chris St. John·Last updated Jul 16, 2026