Securbase Logo

Rate Limiting

Our API implements rate limiting to ensure fair usage and protect service stability. Understanding these limits helps you build reliable applications.

Rate limits

Transaction limits vary by plan:

PlanIncluded TransactionsAdditional
Starter1,000Up to 5,000
Compliance1,000Up to 5,000
Starter Plus1,000Up to 5,000
Compliance Plus1,000Up to 5,000
EnterpriseCustomUnlimited
Rate limits apply per API key. Using multiple keys does not bypass account-level limits.

Rate Limit Headers

Every response includes headers to help you track your usage:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets
HTTP/1.1 200 OK
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 595
X-RateLimit-Reset: 1706198400

Handling Rate Limits

When you exceed the rate limit, you'll receive a 429 Too Many Requests response. Implement retry logic with exponential backoff:

retry-logic.ts
1async function fetchWithRetry(url: string, options: RequestInit, maxRetries = 3) {
2 for (let attempt = 0; attempt < maxRetries; attempt++) {
3 const response = await fetch(url, options);
4
5 if (response.status === 429) {
6 // Get retry delay from header or use exponential backoff
7 const retryAfter = response.headers.get('Retry-After');
8 const delay = retryAfter
9 ? parseInt(retryAfter) * 1000
10 : Math.pow(2, attempt) * 1000;
11
12 console.log(`Rate limited. Retrying in ${delay}ms...`);
13 await new Promise(resolve => setTimeout(resolve, delay));
14 continue;
15 }
16
17 return response;
18 }
19
20 throw new Error('Max retries exceeded');
21}

Pro tip

Monitor the X-RateLimit-Remaining header and slow down requests before hitting the limit. This provides a better user experience than waiting for errors.