Rate limits and quotas
The per-key, per-app, and daily limits, and how to handle a 429.
The API is rate limited to keep the platform fast and fair. Limits apply at several levels so that creating extra keys cannot multiply your budget, the app is the real ceiling.
Default limits
| Limit | Default | Scope |
|---|---|---|
| Per key | 120 requests / minute | one key |
| Per key (writes) | 40 requests / minute | one key, POST/PATCH/DELETE |
| Per app | 600 requests / minute | all of an app’s keys combined |
| Daily quota | 10,000 requests / day | per app |
| Uploads | 20 / minute | per app |
| Uploads | 100 / day | per app |
Uploads have their own tighter limits because each one costs storage. Each file must be an image (jpeg, png, webp, or gif) and at most 10 MB.
Need more? Contact support and we can raise any of these for your app or organization.
Handling a 429
When you exceed a limit the API returns 429 with headers that tell you how long to wait:
HTTP/1.1 429 Too Many Requests
Retry-After: 24
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1744540892
-
Retry-After: seconds to wait before retrying. -
X-RateLimit-Reset: Unix epoch second when the window resets.
Build your client to respect Retry-After and back off rather than retrying immediately. Spreading requests out and caching responses where you can will keep you well under the limits.
Was this article helpful?
Thanks for your feedback!