What you’ll build
A Hono app with rate-limited endpoints. Users who exceed the limit get a 429 response. Time to complete: ~5 minutesPrerequisites
- Unkey account (free)
- Root key with
ratelimit.*.limitpermission - Node.js 18+ or Bun
What’s in the response?
limiter.limit() returns:
| Field | Type | Description |
|---|---|---|
success | boolean | true if allowed, false if rate limited |
remaining | number | Requests left in current window |
reset | number | Unix timestamp (ms) when window resets |
limit | number | The configured limit |
Using as middleware
Create reusable middleware for cleaner code:src/middleware/ratelimit.ts
src/index.ts
Different limits per route group
Deploying to Cloudflare Workers
For Cloudflare Workers, access env through the context:Next steps
How it works
Understand the architecture
Per-user overrides
Give specific users higher limits
SDK Reference
All configuration options
Add API key auth
Combine with API key authentication
Troubleshooting
Rate limit not applying?
Rate limit not applying?
- Verify
UNKEY_ROOT_KEYis set correctly - For Workers: use
c.env.UNKEY_ROOT_KEY, notprocess.env - Check your root key has
ratelimit.*.limitpermission
Environment not loading locally?
Environment not loading locally?
- For Node.js: Install
dotenvand addimport 'dotenv/config' - For Bun:
.envloads automatically - Restart the dev server after changes

