Rate Limits
API requests are rate-limited based on your plan. Rate limit headers are included in every response to help you track your usage.
Limits by Plan
| Plan | Requests/min | Requests/day |
|---|---|---|
| Free | 10 | 1,000 |
| Basic | 60 | 10,000 |
| Pro | 300 | 100,000 |
| Enterprise | Custom | Custom |
Response Headers
Every response includes rate limit information in the headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Retry-After | Seconds to wait (only on 429 responses) |
Handling Rate Limits
When you exceed your rate limit, the API returns a 429 status code. Implement exponential backoff using the Retry-After header:
Example
import requests
import time
def make_request_with_retry(url, headers, json_data, max_retries=3):
for attempt in range(max_retries):
response = requests.post(url, headers=headers, json=json_data)
if response.status_code == 429:
retry_after = int(
response.headers.get("Retry-After", 60)
)
print(f"Rate limited. Retrying in {retry_after}s...")
time.sleep(retry_after)
continue
return response
raise Exception("Max retries exceeded")