Skip to main content

Rate Limits

Klervex enforces rate limits to ensure fair usage.

Limits by Tier

TierRequests/minExtractions/dayValidations/dayDocuments/day
Free601010020
Starter3001005,000500
Growth60050050,0002,000
Scale1,2002,000200,00010,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');
}