Rate Limits

Rate limits protect the API from abuse and ensure fair usage.

Default Limits

PlanRequests/minute
Free100
Starter100
Growth100

Response Headers

Every response includes rate limit information:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1711274400

Handling 429 Responses

When rate limited, the response includes a Retry-After header with the number of seconds to wait:

javascript
async function verifyWithRetry(document, apiKey, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const res = await fetch('https://veriscor.io/api/v1/verify', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ document }),
    });

    if (res.status !== 429) return res.json();

    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');
}