Reference

Rate Limits

The Extralt API uses a token bucket algorithm to rate limit requests per organization.

Limits

MetricValue
Sustained rate~120 requests per minute
Burst capacity30 requests
ScopePer organization

The token bucket refills continuously. You can send bursts of up to 30 requests, but sustained throughput should stay below 120 requests per minute.

Rate limit response

When you exceed the limit, the API returns a 429 Too Many Requests response:

{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please wait before retrying."
}

The simplest strategy: when you receive a 429, wait 15 seconds to refill burst capacity, then retry.

For more sophisticated handling, use exponential backoff:

import time

def request_with_backoff(method, url, max_retries=3, **kwargs):
    for attempt in range(max_retries):
        response = requests.request(method, url, headers=HEADERS, **kwargs)
        if response.status_code != 429:
            return response
        wait = 15 * (2 ** attempt)  # 15s, 30s, 60s
        print(f"Rate limited. Waiting {wait}s...")
        time.sleep(wait)
    return response

Tips

  • Polling runs: A 10-second interval between status checks is well within limits
  • Listing captures: Paginate with reasonable page sizes rather than rapid-fire requests
  • Bulk operations: Space out robot build and run creation requests
  • Multiple robots: If creating many robots, add a short delay between build requests

What's next