Skip to content
Select language:English
Select theme

Rate limits

Request limits per API token and how to handle 429 responses.

Updated

API requests are rate-limited per token to ensure fair usage and system stability.

Limit Value
Requests per minute 60

Limits apply per API token. If your integration uses multiple tokens, each token has its own independent limit.

When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header:

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
{ "errors": ["Rate limit exceeded"] }

The Retry-After value is the number of seconds to wait before retrying.

import requests
import time
def api_get(url, token, retries=3):
for attempt in range(retries):
response = requests.get(url, headers={"Authorization": f"Bearer {token}"})
if response.status_code == 429:
wait = int(response.headers.get("Retry-After", 60))
print(f"Rate limited. Waiting {wait}s...")
time.sleep(wait)
continue
response.raise_for_status()
return response.json()
raise Exception("Rate limit retries exhausted")

For bulk operations — syncing a large inventory, importing many projects — space out requests to stay under 1 request per second on average.

If your integration consistently needs more than 60 requests per minute, contact support to discuss higher limits for your account.