Per-token limit
Each Personal Access Token has a limit of 100 requests per minute. The count is per token, not per store — three different tokens get three independent buckets.
When you exceed the limit, the API responds 429 Too Many Requests and rejects
further requests from the same token until the window resets.
Handling 429
- Stop requests from the affected token.
- Wait 60 seconds, or use exponential backoff: 1 s, 2 s, 4 s, 8 s...
- Retry with the same
Idempotency-Keyif it was a mutation.
JavaScript example
async function call(url, opts = {}, attempt = 0) {
const res = await fetch(url, opts);
if (res.status === 429 && attempt < 5) {
const wait = Math.pow(2, attempt) * 1000;
await new Promise(r => setTimeout(r, wait));
return call(url, opts, attempt + 1);
}
return res;
} Best practices to stay below the limit
- Cache read responses: don't poll the catalog every 10 seconds.
- Use webhooks for events: subscribe to
order.completedinstead of pollingGET /external/orders. - Multiple tokens for multiple workloads: separate buckets per integration.
- Don't retry 4xx: validation or scope rejections won't go away on retry.
Need more capacity?
If your legitimate use case sustains over 100 req/min, email us at hola@nuvlyx.com describing the pattern and we'll sort out a plan accordingly.