One HTTP call
answers:allowed or not?
Distributed token buckets for your API, with tier mapping that doubles as your usage meter. No Redis, no Lua, no middleware.
Create your APIFree: 10k allow-calls/mo, 1 API, 3 plans.
GET /v1/allow?key=USER_KEY responds:
{ "allowed": true, "remaining": 7, "reset": 12 } live demo - raise the load until requests bounce
GET http://localhost:8114/v1/allow?key=USER_KEY&cost=1
{
"allowed": true,
"remaining": 999,
"reset": 37
} The decision, not a library.
Your service asks one question per request and gets a definitive answer: allowed now, how many remain, when the window resets. Any language, any runtime, nothing to install.
- distributed buckets, consistent across instances
- per-user-key limits, cost-aware (`cost=N`)
- sub-millisecond answers from your region
Your pricing tiers, enforced at the door.
plans you define
free 100 req/day pro 10k req/day enterprise custom Metering included
Every allow-call is usage data. Bill your own tiers from the same numbers RateForge enforces.
Keys in one curl
Issue user keys per plan. Shown once, stored hashed.
Per-key usage rollups
Analytics endpoint returns what every key consumed this window.
Stop maintaining a Redis cluster for a boolean.
| RateForge | Upstash @RateLimit | Cloudflare WAF | |
|---|---|---|---|
| You write the logic | no | yes (DIY) | limited |
| Custom tier logic | native | manual | no |
| Works off-edge | any runtime | any runtime | edge only |
| Usage analytics built in | yes | no | no |
| Entry price | $0 | usage-based | $5/mo |
competitor positioning per public docs and pricing pages, 2026
“Deleted two hundred lines of Lua and an entire Redis instance. My paid tier meters itself now.”
Ines Caetano
Indie API developer
sample feedback
free tier
Ten thousand decisions, free.
Enough to rate-limit your side project for months.
Create your API