Docs/API Reference/Rate Limits
API Reference

Rate Limits

Understanding API rate limits, how to monitor usage, and best practices for staying within limits.

Overview

Rate limits protect the API from abuse and ensure fair usage across all customers. Limits are applied per API key or user token.

Rate Limit Tiers

PlanRequests/minRequests/dayBurst
Free
601,00010
Starter
30010,00050
Professional
1,000100,000100
Enterprise
CustomCustomCustom

Rate Limit Headers

Every API response includes headers showing your rate limit status:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 245
X-RateLimit-Reset: 1705312800
HeaderDescription
X-RateLimit-LimitMaximum requests per minute for your plan
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets

Rate Limit Exceeded

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

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 32

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Please retry after 32 seconds.",
    "retry_after": 32
  }
}

Handling Rate Limits

Exponential Backoff

Implement exponential backoff when you receive a 429 response:

import time
import random

def api_request_with_retry(endpoint, max_retries=5):
    for attempt in range(max_retries):
        response = make_request(endpoint)
        
        if response.status_code == 429:
            # Get retry delay from header or calculate
            retry_after = int(response.headers.get('Retry-After', 0))
            if retry_after == 0:
                # Exponential backoff with jitter
                retry_after = (2 ** attempt) + random.uniform(0, 1)
            
            print(f"Rate limited. Waiting {retry_after}s...")
            time.sleep(retry_after)
            continue
            
        return response
    
    raise Exception("Max retries exceeded")

Request Batching

Use batch endpoints to reduce request count:

# Instead of 100 individual requests:
for sku in skus:
    get_product(sku)  # 100 requests

# Use batch endpoint:
get_products_batch(skus)  # 1 request

Endpoint-Specific Limits

Some endpoints have specific rate limits:

EndpointLimitNotes
/auth/login5/min per IPPrevents brute force
/agents/run10/minComputationally expensive
/import5/hourLarge file processing
/export20/hourReport generation

Best Practices

Monitor headers

Check remaining quota before making requests

Use webhooks

Subscribe to events instead of polling

Cache responses

Cache data that doesn't change frequently

Batch requests

Combine multiple operations when possible

Increasing Limits

Need higher limits? You have several options:

  • Upgrade plan: Higher tiers include more requests
  • Enterprise: Custom limits based on your needs
  • Request increase: Contact support for temporary increases

Usage Analytics

View your API usage patterns in Settings → API Usage. See daily/hourly breakdowns, top endpoints, and approaching limits.

Fair Use Policy

Beyond numeric limits, please follow these guidelines:

  • Don't create multiple accounts to bypass limits
  • Space out large batch operations
  • Avoid unnecessary repeated requests
  • Contact us before running large migrations

Consistent abuse may result in temporary or permanent suspension.