Rate Limits
Understand API rate limits, headers, and strategies to stay within quotas.
Overview
Rate limits protect the API from excessive usage and ensure fair access for all users. Limits are applied per API key and vary by plan.
Limits by Plan
| Plan | Requests / minute | PDF generations / hour | Burst limit |
|---|---|---|---|
| Free | 30 | 100 | 10 |
| Pro | 120 | 1,000 | 30 |
| Business | 600 | 10,000 | 100 |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers
Every API response includes headers that tell you your current rate-limit status:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed per window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Retry-After | Seconds to wait (only on 429 responses) |
Example Response Headers
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1706900400Handling 429 Responses
When you exceed the rate limit, the API responds with HTTP 429 Too Many Requests:
429 Response
{
"success": false,
"error": "Rate limit exceeded. Retry after 12 seconds."
}Read the Retry-After header and wait before making another request.
Best Practices
- Monitor headers — Check
X-RateLimit-Remainingand slow down before hitting zero - Exponential backoff — On 429 errors, wait 1s, 2s, 4s, 8s before retrying
- Queue requests — For batch generation, use a job queue to throttle requests
- Cache results — Don't re-generate the same document repeatedly; cache the PDF URL
- Use webhooks — For async generation, receive completion events instead of polling
Need Higher Limits?
If your workload exceeds the built-in limits, contact us about Enterprise plans with custom rate limits tailored to your usage.Next Steps
- Error Handling — Handle all API errors
- Pagination — Efficiently fetch large result sets
- Usage & Quotas — Monitor your usage