Rate limits
The API is rate limited to protect the platform and keep it responsive for
everyone.
The limit
By default, requests are limited to 120 requests per 60-second window per
client IP address. When you exceed it, the API responds with:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{ "detail": "rate_limit_exceeded" }
The Retry-After header tells you how many seconds to wait before retrying.
Handling 429s
- Back off and retry. When you receive a
429, pause for the number of
seconds inRetry-After(or use exponential backoff) before retrying. - Batch where possible. Prefer paging with a larger
limitover many small
requests, and adjust inventory or prices in as few calls as the endpoint
allows. - Spread bulk work. For large imports or syncs, add a small delay between
requests so you stay under the window.
Background operations
Some operations return 202 Accepted and run in the background rather than
counting against a tight synchronous budget — for example triggering a
sales-channel sync or sending a message. Poll the
relevant status endpoint (or listen on a webhook) instead of holding the request
open.
A resilient client
A minimal robust pattern:
import time, requests
def call(method, url, **kw):
for attempt in range(5):
r = requests.request(method, url, **kw)
if r.status_code != 429:
return r
time.sleep(int(r.headers.get("Retry-After", 60)))
r.raise_for_status()