Skip to main content

Rate Limits

API requests are rate-limited per tenant based on your plan tier. Rate limits protect the platform and ensure fair usage across all tenants.

Per-tier limits

TierRequests/minRequests/hourMonthly verifications
Basic103001,000
Professional501,50010,000
Enterprise2006,000Unlimited

Rate limit headers

Every API response includes rate limit headers:

HeaderDescriptionExample
X-RateLimit-LimitMaximum requests per minute for your tier50
X-RateLimit-RemainingRequests remaining in the current window47
X-RateLimit-ResetUnix timestamp when the current window resets1705312800

Example response headers:

HTTP/1.1 200 OK
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1705312800

Handling 429 responses

When you exceed your rate limit, the API returns a 429 Too Many Requests response:

{
"code": "RATE_LIMIT_EXCEEDED",
"error": "Rate limit exceeded. Please retry after the reset time.",
"details": {
"retryAfter": 30
}
}

The response includes a Retry-After header with the number of seconds to wait.

Exponential backoff

Implement exponential backoff for rate-limited requests:

async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);

if (response.status === 429) {
const retryAfter = parseInt(response.headers.get("Retry-After") || "1");
const delay = retryAfter * 1000 * Math.pow(2, attempt);
await new Promise((resolve) => setTimeout(resolve, delay));
continue;
}

return response;
}

throw new Error("Max retries exceeded");
}

Best practices

  • Monitor remaining requests — Check X-RateLimit-Remaining to proactively slow down before hitting the limit
  • Batch where possible — Create verifications in batches rather than rapid-fire individual requests
  • Cache responses — Cache GET responses (verification status, document types) to avoid unnecessary API calls
  • Use webhooks — Instead of polling GET /verifications/{id} for status updates, use webhooks to receive results asynchronously
  • Contact us for higher limits — If you need higher rate limits, contact your account manager or reach out to support@korastratum.com