How it works
Each store’s API key has a bucket of points that refills every window:| Parameter | Value |
|---|---|
| Bucket size | 40 points |
| Window | 60 seconds |
| GET request cost | 1 point |
| POST/PATCH/DELETE request cost | 2 points |
429 Too Many Requests response until the window resets.
Response headers
Every successful response includes rate limit headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum points allowed per window (e.g. 40) |
X-RateLimit-Remaining | Points remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the current window resets |
Handling rate limit errors
When you exceed the limit, the API returns a429 response with a Retry-After header:
Number of seconds to wait before making another request.
Best practices
Implement exponential backoff
Implement exponential backoff
When you receive a
429 response, wait for the duration specified in Retry-After before retrying. If you continue to receive 429 responses, increase the wait time exponentially.Monitor remaining points
Monitor remaining points
Check the
X-RateLimit-Remaining header after each response. If you are running low, slow down your request rate proactively instead of waiting for a 429.Batch your reads
Batch your reads
Use the list endpoint with a higher
per_page value (up to 250) instead of making many individual requests. One request for 100 orders costs 1 point, while 100 individual order requests cost 100 points.