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

PlanRequests/MinuteRequests/DayBurst Limit
Free601,00010
Pro30010,00050
Business1,000100,000100
EnterpriseCustomCustomCustom

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
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets
X-RateLimit-PolicyRate 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

  1. Implement exponential backoff - When you receive a 429, wait before retrying with increasing delays.
  2. Cache responses - Store data locally to reduce API calls for frequently accessed information.
  3. Use bulk endpoints - Batch multiple operations into single requests when possible.
  4. 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:

EndpointAdditional LimitNotes
POST /v1/links100/hourLink creation is limited separately
POST /v1/analytics/bulk10/minuteBulk operations are resource-intensive
GET /v1/analytics/*120/minuteAnalytics queries have separate limits
POST /v1/domains10/hourDomain 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.