API Reference
Rate Limits
API usage limits and best practices
Rate limits protect the API from abuse and ensure fair usage for all users. Limits vary by plan and endpoint.
Rate Limits by Plan
| Plan | Requests/Minute | Requests/Day | Burst Limit |
|---|---|---|---|
| Free | 60 | 1,000 | 10 |
| Pro | 300 | 10,000 | 50 |
| Business | 1,000 | 100,000 | 100 |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers
Every API response includes headers to help you track your usage:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 245
X-RateLimit-Reset: 1705312800
X-RateLimit-Policy: 300;w=60| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the window |
X-RateLimit-Remaining | Requests remaining in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
X-RateLimit-Policy | Rate limit policy (requests;w=window in seconds) |
Handling Rate Limits
When you exceed the rate limit, you'll receive a 429 response:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 32
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Please retry after 32 seconds.",
"retry_after": 32
}
}Best Practices
- Implement exponential backoff - When you receive a 429, wait before retrying with increasing delays.
- Cache responses - Store data locally to reduce API calls for frequently accessed information.
- Use bulk endpoints - Batch multiple operations into single requests when possible.
- Monitor headers - Track remaining requests and adjust your request rate accordingly.
Example: Exponential Backoff (JavaScript)
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status !== 429) {
return response;
}
const retryAfter = response.headers.get('Retry-After') || Math.pow(2, i);
await new Promise(resolve =>
setTimeout(resolve, retryAfter * 1000)
);
}
throw new Error('Max retries exceeded');
}Endpoint-Specific Limits
Some endpoints have additional restrictions:
| Endpoint | Additional Limit | Notes |
|---|---|---|
POST /v1/links | 100/hour | Link creation is limited separately |
POST /v1/analytics/bulk | 10/minute | Bulk operations are resource-intensive |
GET /v1/analytics/* | 120/minute | Analytics queries have separate limits |
POST /v1/domains | 10/hour | Domain verification is rate-limited |
Increasing Your Limits
If you need higher rate limits for your application:
- Upgrade your plan - Pro and Business plans include significantly higher limits.
- Contact us - Enterprise customers can request custom rate limits tailored to their needs.
- Optimize your integration - Our team can help you reduce API calls through better architecture.
Warning: Consistently exceeding rate limits may result in temporary API access suspension. Please implement proper rate limiting in your applications.