Free Token Limits

Can someone make a dedicated guide for making combos for 9router, omnirouter, freellmapi etc that switch when a free llm hit limit? I tried watch a free youtube videos. They tell how to setup 9router, omniroute but not the combos.
Request someone from community to help out if possible.

A โ€œcomboโ€ is just a list of providers in order.
The router tries #1. If it is full, it tries #2. Then #3.

You are ordering that list by best model. That is why it stalls.
Order it by refill speed instead.

:1st_place_medal: Do this first, before any list

โ€œRate limits are applied per project, not per API key.โ€ โ€” Google docs

10 keys in 1 project = 1 allowance.
10 projects = 10 allowances. Same account, one click each. Make them here

Do this before you touch any router. It is free size.

:stopwatch: Then order the list by the clock

   REFILLS         WHO                       PUT IT
   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1  every minute    Groq ยท NVIDIA NIM         TOP    โ–ฒ
2  every day       Cerebras ยท Gemini keys    MIDDLE โ”‚
3  every month     Kiro ยท OpenRouter free    BOTTOM โ–ผ
4  never runs out  OpenCode Free (no key)    LAST   โ—†

A monthly allowance on top is gone by day 3.
A monthly allowance at the bottom is still full when you reach it.
Rung 4 needs no key at all, so you are never fully stopped.

Inside one rung, add every account you own. The router rotates them.

:computer_mouse: Where you click

Start with OmniRoute. Build no list. Set your model to auto/offline.
It checks who has the most left and picks that, on every single request. how

9router โ€” Dashboard โ†’ Combos โ†’ Create New โ†’ drag rows into the order above โ†’ Strategy: Fallback. Then type your combo name where you used to type a model name. how

freellmapi โ€” Keys page โ†’ drag the Fallback Chain into that order. how

:eye: How to see it working

freellmapi puts an X-Fallback-Trail header on every reply.
It lists the providers it actually walked through, in order.
That is your proof the ladder is live, not a guess.

:high_voltage: Never hit the wall at all

Right now your router waits for the โ€œslow downโ€ error, then moves on.
Every wall costs you one wasted request, forever.

  • keymux โ€” checks who has room before sending. The error never happens.
  • llm-keypool โ€” reads each providerโ€™s real reset time instead of guessing a wait.
๐Ÿงฐ Ready-made lists, if you want to skip building one
๐Ÿšฉ Old advice that is now wrong

โ€œPollinations needs no keyโ€ โ€” not true any more. Their docs now require a key for everything. Some lists still show it as keyless.

Tools change every month. The clock order does not.

Thanks for response. I understand the math now of โ€œ10 keys in one project = still one limit.โ€ But the question remains: how to make the combos for 9router of omnirouter or freelmmapi? I have free api keys from a few, now will make more per project. But combos - I canโ€™t figure out. Which models/providers first.
All YT videos claim teach. They the npm command, show add one provider, say add more like this and END. Combos? None.

I was not able to understand what SRZโ€™s English. I need a translator..

:chart_increasing: The answer above is now AI-improved by the Core-Community.

The combo order isnโ€™t โ€œbest model first.โ€ Itโ€™s refill speed first.

(9router ยท OmniRoute ยท freellmapi)

Combo: "my-stack"
  1. groq/llama-3.3     โ† resets in minutes
  2. glm/glm-5.1         โ† resets daily
  3. kiro/claude-sonnet  โ† resets monthly, use it last

Top model runs out fastest and comes back fastest. Bottom model is precious, so it sits behind everything else.

If you donโ€™t want to order it by hand, OmniRoute (9routerโ€™s bigger fork) has a reset-window / headroom strategy that sorts providers by โ€œwho resets soonestโ€ automatically. 9router and freellmapi donโ€™t have that yet โ€” still manual there.

(โ˜ž๏พŸใƒฎ๏พŸ)โ˜ž Three combos to paste, one order to copy โ€” fastest refill on top, no-key at the bottom, the switch happens by itself

A combo is a list. Provider 1 full โ†’ provider 2. Provider 2 full โ†’ provider 3. Fastest refill on top, the no-key one at the bottom.

 #     provider          free quota (their page, 12 Sep 2026)                refills
 โšก 1   Groq              30/min ยท 1,000/day ยท 200K tokens/day per model    every minute
 ๐ŸŒ… 2   SambaNova         20/min ยท 20/day ยท 200K tokens/day per model       every day
 ๐ŸŒ… 3   Gemini            per project, numbers inside AI Studio             midnight Pacific
 ๐ŸŒ… 4   Cloudflare AI     10,000 neurons/day                                00:00 UTC
 โ™พ๏ธ 5   Z.ai GLM-Flash    GLM-4.7-Flash ยท 4.5-Flash ยท 4.6V-Flash, priced Free
 ๐ŸŒ… 6   OpenRouter :free  50/day (1,000/day once you ever bought $10)       every day
 ๐Ÿ—“๏ธ 7   Kiro              50 credits, Sonnet 4.5 + open models              every month
 ๐Ÿ”“ 8   LLM7.io           key = the word  unused  ยท 10/min                  no key, always last

 โšก minute  ๐ŸŒ… daily  ๐Ÿ—“๏ธ monthly  โ™พ๏ธ always free  ๐Ÿ”“ no key

:key: Keys and live quota pages: Groq ยท SambaNova ยท Gemini ยท Cloudflare ยท Z.ai ยท OpenRouter ยท Kiro ยท LLM7

:backhand_index_pointing_down: Your routerโ€™s drawer = one block to paste.

๐ŸŽ›๏ธ OmniRoute โ€” one curl, strategy fill-first, type free-list as the model

Keys: Dashboard โ†’ Providers โ†’ Add Provider. Strategy fill-first = use the first target until itโ€™s full, then the next.

curl -X POST http://localhost:20128/api/combos \
  -H "Authorization: Bearer $OMNIROUTE_KEY" -H "Content-Type: application/json" \
  -d '{
    "name": "free-list",
    "strategy": "fill-first",
    "targets": [
      { "provider": "groq",       "model": "openai/gpt-oss-120b" },
      { "provider": "google",     "model": "gemini-2.5-flash" },
      { "provider": "openrouter", "model": "nvidia/nemotron-3-ultra-550b-a55b:free" },
      { "provider": "kiro",       "model": "claude-sonnet-4.5" }
    ]
  }'

Model name in Cline / Cursor / any client: free-list.

๐Ÿงพ freellmapi โ€” one JSON file, called as auto:free-list

Save as freellmapi.config.json โ†’ FREEAPI_CONFIG_PATH=/path/to/it โ†’ restart (doc). fallback = the order.

{
  "keys": [
    { "platform": "groq",   "key": "gsk_...", "label": "main" },
    { "platform": "google", "key": "AIza..." },
    { "platform": "openrouter", "key": "sk-or-..." }
  ],
  "fallback": [
    { "platform": "groq",       "modelId": "openai/gpt-oss-120b", "priority": 1 },
    { "platform": "google",     "modelId": "gemini-2.5-flash",    "priority": 2 },
    { "platform": "openrouter", "modelId": "nvidia/nemotron-3-ultra-550b-a55b:free", "priority": 3 },
    { "platform": "llm7",       "modelId": "default",             "priority": 4 }
  ],
  "routing": { "strategy": "priority" }
}

Model name: auto:free-list. Each reply shows X-Routed-Via: groq/...; after a switch, X-Fallback-Trail: groq/... key1=rate_limited; google/... key2=timeout (headers). Switch rules: daily 429 โ†’ that model + key rests until UTC midnight ยท minute 429 โ†’ 90 s ยท 402 โ†’ key rests 24 h.

๐Ÿ”ข 9router โ€” Combos โ†’ Create New, or one POST

9router uses its own provider codes (kr/ = Kiro, if/ = iFlow, qw/ = Qwen). Its free chain (combo docs):

Dashboard โ†’ Combos โ†’ Create New
Name: free-list
Models:
  1. kr/claude-sonnet-4.5   (Kiro, 50 credits/month)
  2. kr/glm-5               (Kiro)
  3. if/kimi-k2-thinking    (iFlow, the last one)
Strategy: Fallback โ€” try in order

Without the UI: POST http://localhost:20128/api/combos with {"name":"free-list","models":["kr/claude-sonnet-4.5","kr/glm-5","if/kimi-k2-thinking"]}. Entries = plain provider/model strings; no / in the combo name. Client: base URL http://localhost:20128/v1, model free-list.

๐Ÿงฏ Why it does not switch, and the fix
  • OmniRoute ignores HTTP 402 (OpenRouter โ€œcredits goneโ€), so OpenRouter stays in the pool. Put OpenRouter in freellmapi, or below the daily providers in OmniRoute.
  • OmniRoute reads Groqโ€™s reset header 7.66s as 7; freellmapi reads it right. Groq stays first either way, it refills in a minute.
  • 9router switches on every error: a wrong provider costs one request, never a stop.
๐Ÿงช See who has room before you send
  • Groq: curl -sI https://api.groq.com/openai/v1/models -H "Authorization: Bearer $GROQ_API_KEY" โ†’ remaining-quota headers, zero tokens spent.
  • OpenRouter: GET https://openrouter.ai/api/v1/key returns limit_remaining.
  • All keys at once: npx llm-limits-tracker โ†’ paste keys โ†’ remaining per minute and per day.

Groq on top, LLM7 with the word unused last. Paste your routerโ€™s block, type free-list, done.

This is THE SHIT SRZ. TY Very Much!!!

Hehe, I sometime ask dumb questions but it help everybody :slight_smile: