Rate Limits
Klervex enforces rate limits to ensure fair usage.
Limits by Tier
| Tier | Requests/min | Extractions/day | Validations/day | Documents/day |
|---|---|---|---|---|
| Free | 60 | 10 | 100 | 20 |
| Starter | 300 | 100 | 5,000 | 500 |
| Growth | 600 | 500 | 50,000 | 2,000 |
| Scale | 1,200 | 2,000 | 200,000 | 10,000 |
Rate Limit Headers
Every API response includes rate limit headers:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Reset: 1711872060
Handling Rate Limits
When you exceed the rate limit, you receive a 429 Too Many Requests response:
{
"error": {
"code": "KLV_RATE_001",
"message": "Rate limit exceeded. Try again in 45 seconds.",
"retry_after": 45
}
}
Implement exponential backoff:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const res = await fetch(url, options);
if (res.status !== 429) return res;
const retryAfter = parseInt(res.headers.get('Retry-After') || '5');
await new Promise(r => setTimeout(r, retryAfter * 1000));
}
throw new Error('Rate limit exceeded after retries');
}