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:

# Exponential backoff: retry up to 3 times with increasing waits
MAX_RETRIES=3
WAIT=15

for i in $(seq 1 $MAX_RETRIES); do
  HTTP_STATUS=$(curl -s -o response.json -w "%{http_code}" \
    "$BASE_URL/runs/$RUN_ID" \
    -H "Authorization: Bearer $EXTRALT_API_KEY")

  if [ "$HTTP_STATUS" -ne 429 ]; then
    jq '.' response.json
    break
  fi

  echo "Rate limited. Waiting ${WAIT}s..."
  sleep $WAIT
  WAIT=$((WAIT * 2))
done

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