Back to Guides
8 min read

Rate Limits

Understand API rate limits and how to handle them gracefully.

Rate Limit Tiers

Rate limits are applied per API key and vary by plan:

Starter

Free tier
100
requests/minute
10,000
requests/day

Growth

Most popular
1,000
requests/minute
100,000
requests/day

Enterprise

Custom limits
10,000+
requests/minute
Unlimited
daily requests

Rate Limit Headers

Every API response includes rate limit information in headers:

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 950
X-RateLimit-Reset: 1703088000
Retry-After: 60  // Only present when rate limited

X-RateLimit-Limit

Maximum requests allowed per window

X-RateLimit-Remaining

Requests remaining in current window

X-RateLimit-Reset

Unix timestamp when the limit resets

Handling Rate Limits

When rate limited, you will receive a 429 status code:

{
  "error": {
    "type": "rate_limit_error",
    "code": "too_many_requests",
    "message": "Rate limit exceeded. Retry after 60 seconds.",
    "retryAfter": 60
  }
}

Best Practices

Implement Exponential Backoff

When rate limited, wait progressively longer between retries: 1s, 2s, 4s, 8s...

Monitor Rate Limit Headers

Track remaining requests and slow down before hitting limits

Use Batch Endpoints

Batch multiple quotes in a single request to reduce API calls

Cache Responses

Cache quote results for identical requests within their validity period

SDK Automatic Handling

Our SDKs automatically handle rate limits with exponential backoff:

const coverkit = new CoverKit({
  apiKey: process.env.COVERKIT_API_KEY,
  // Rate limit handling is automatic, but you can configure it
  maxRetries: 3,
  retryDelay: 1000,  // Initial delay in ms
});

// SDK automatically retries on 429 with exponential backoff
const quote = await coverkit.quotes.create({...});

Need Higher Limits?

Contact our sales team to discuss custom rate limits for your use case. Enterprise plans include dedicated rate limit pools and priority support.

Next Steps