Rate Limits

API requests are rate-limited based on your subscription plan. Limits are enforced per API key, per toolkit.

How Limits Work

Rate limits are applied using a sliding window. When you exceed your limit, the API returns a 429 Too Many Requests response:

{
  "detail": "Rate limit exceeded. Please try again later."
}

Rate Limit Headers

Every response includes headers to help you track your usage:

Header Description
X-RateLimit-Limit Maximum requests allowed in the current window
X-RateLimit-Remaining Requests remaining in the current window
X-RateLimit-Reset Unix timestamp when the window resets

Typical Limits by Plan

Note

Exact limits vary by toolkit. Check each toolkit's pricing page for specific numbers.

Plan Requests Window
Free 100 – 500 Per day
Basic / Pro 10,000 – 50,000 Per month
Ultra 100,000+ Per month

Handling Rate Limits

Best practices for dealing with rate limits in production:

import httpx
import time

def call_api(url, payload, api_key, max_retries=3):
    """Call an API endpoint with exponential backoff on rate limits."""
    for attempt in range(max_retries):
        r = httpx.post(
            url,
            headers={"X-API-Key": api_key},
            json=payload,
        )
        if r.status_code == 429:
            wait = 2 ** attempt
            time.sleep(wait)
            continue
        r.raise_for_status()
        return r.json()
    raise Exception("Rate limit exceeded after retries")

Tip

If you consistently hit rate limits, consider upgrading your plan or implementing request queuing.