Rate Limiting
Last updated @ June 21st, 2026
api.lanzoor.dev is protected by a multi-layer rate limiting system powered by @upstash/ratelimit. This helps prevent abuse and ensures service stability. Please respect the rate limits below to avoid getting blocked.
About Multi-Layered Rate Limits
In most cases, a rate limit preset comes with two rate limit layers.
- per second - Prevents rapid burst attacks and aggressive scripting.
- per minute - Prevents sustained spam and overuse.
Rate Limit Presets
| Preset | Limit | Time Window |
|---|---|---|
lenient | 5 requests | per second |
| 60 requests | per minute | |
normal | 5 requests | per second |
| 20 requests | per minute | |
strict | 2 requests | per second |
| 10 requests | per minute | |
paranoid | 1 request | per minute |
Custom Rate Limits
Some routes may use a custom rate limit preset.If so, it will be clearly listed in the route's documentation, and the preset identifier custom will be used.
Headers
For now, rate limit headers are only included when a request is rejected with HTTP 429.
X-RateLimit-Preset: The rate limit preset that applied to your request. (e.g:normal,paranoid,custom)X-RateLimit-Limit: Represents the maximum number of requests allowed within the window.X-RateLimit-Reset: Represents the Unix timestamp in milliseconds when the limits are reset.Retry-After: Represents how many seconds remain until the rate limit resets.
Example
Here's a simple example of how a rate limit and its headers would look like:
HTTP/1.1 429 Too Many Requests
X-RateLimit-Preset: normal
X-RateLimit-Limit: 20
X-RateLimit-Reset: 1782012345678
Retry-After: 34
X-RateLimit-Preset: normal
X-RateLimit-Limit: 20
X-RateLimit-Reset: 1782012345678
Retry-After: 34
Reference
Please refer to the rate-limit.ts helper script.
Tips
- Implement exponential backoff if you're making multiple requests.
- Cache responses whenever possible.
- Respect the headers.