API Rate Limits

Understanding and managing request limits to ensure reliable, high-performance access to the #about API platform.

Overview

The #about API enforces rate limits to maintain system stability, ensure fair usage across all clients, and protect against abuse. Limits are applied per API key and vary by your subscription tier.

When a limit is exceeded, the API returns a 429 Too Many Requests status code along with standard rate limit headers.

💡 Pro Tip: Always respect the Retry-After header when receiving a 429 response. Implementing exponential backoff will prevent repeated failures and restore access faster.

Tier Limits

Plan Requests / Minute Requests / Hour Daily Cap Burst Limit Concurrency
Free 60 1,000 5,000 10 req/s 2 simultaneous
Professional 600 10,000 100,000 50 req/s 10 simultaneous
Enterprise Custom Custom Unlimited 100+ req/s Unlimited

* Limits are calculated using a sliding window algorithm. Burst limits apply to sudden spikes in traffic and reset every 15 seconds.

Response Headers

Every API response includes headers that help you track your usage in real-time:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 582
X-RateLimit-Reset: 1698765432
Retry-After: 42 // Only present on 429 responses
  • Limit: Maximum requests allowed in the current window
  • Remaining: How many requests are left before hitting the limit
  • Reset: Unix timestamp when the window resets
  • Retry-After: Seconds to wait before making another request

Handling 429 Errors

When rate limited, implement graceful degradation using exponential backoff:

async function fetchWithRetry(url, options) {
  const MAX_RETRIES = 3;
  for (let i = 0; i < MAX_RETRIES; i++) {
    try {
      const res = await fetch(url, options);
      if (res.status === 429) {
        const retryAfter = res.headers.get('Retry-After') || Math.pow(2, i);
        await new Promise(r => setTimeout(r, retryAfter * 1000));
        continue;
      }
      return res;
    } catch (err) { /* log & retry */ }
  }
}
⚠️ Important: Do not aggressively retry during a 429 response. This will prolong the lockout period. Wait for the Retry-After duration.

Best Practices

  • Cache Responses: Cache GET requests aggressively to reduce API calls
  • Use Webhooks: Subscribe to events instead of polling for real-time updates
  • Batch Requests: Combine multiple operations into single batch calls when possible
  • 🚫 Avoid Synchronous Polling: Tight polling loops will trigger limits quickly
  • 🚫 Don't Ignore Headers: Always monitor X-RateLimit-Remaining before scaling requests
  • 🚫 No Parallel Spikes: Ramp up traffic gradually using token bucket algorithms

Frequently Asked Questions

Can I increase my rate limits?

Yes! Free and Professional users can upgrade their plan to instantly access higher limits. Enterprise customers receive custom limits tailored to their traffic patterns. Contact our sales team for volume pricing.

Are limits shared across endpoints?

Rate limits are applied globally per API key, not per endpoint. This means all calls made with the same key contribute to the same quota.

What happens if I consistently hit limits?

Persistent rate limiting may trigger temporary key suspension. If this occurs, our system will send an email notification with troubleshooting steps. You can also request a limit review via your dashboard.

Upgrade Your Plan