Rate Limits
Rate limits protect the API and ensure fair usage across all accounts.
Limits by Plan
| Plan | Requests/minute | Concurrent Jobs |
|---|---|---|
| Free Trial | 5 | 1 |
| Starter | 20 | 3 |
| Growth | 60 | 10 |
| Scale | 200 | 50 |
Rate Limit Headers
Every response includes rate limit information:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Request limit per minute for your plan |
X-RateLimit-Remaining |
Remaining requests in current window |
X-RateLimit-Reset |
Unix timestamp when the rate limit resets |
When Rate Limited
If you exceed your rate limit, the API returns 429 Too Many Requests:
json
{
"error": "rate_limit_exceeded",
"message": "Too many requests",
"retry_after_seconds": 12
}
Wait for retry_after_seconds before retrying. The Retry-After HTTP header is also set.
Best Practices
- Poll wisely — When checking article status, poll every 5 seconds instead of continuously
- Use webhooks — Configure webhooks to avoid polling entirely
- Batch configuration — Set up all products/personas in a single request
- Cache responses — Cache usage and analytics responses client-side