What you’ll build
A Bun HTTP server with rate limiting. Users who exceed the limit get a 429 response. Time to complete: ~3 minutesPrerequisites
- Unkey account (free)
- Root key with
ratelimit.*.limitpermission - Bun installed
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 |
Multiple rate limiters
Create different limiters for different use cases:index.ts
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 in your.envfile - Use
Bun.env.UNKEY_ROOT_KEY(notprocess.env) - Check your root key has
ratelimit.*.limitpermission
Environment not loading?
Environment not loading?
Bun loads
.env automatically. Make sure the file is in your project root and restart the server.
