/v1/ endpoints share this one budget: category endpoints, /v1/raw, /v1/catalog and /v1/changes draw from the same counter. Every request with a valid key counts once, including retries, polling calls, 304 Not Modified responses and client errors such as 400, 403, 404 or 422. When you exceed the limit, the API returns a 429 status code and you must wait until the current hour window resets before making additional requests.
Each API key has its own budget. A second key of the same customer is not affected when the first one hits the limit.
Requests without a valid key
Requests without anX-API-Key header, or with an unknown, disabled or expired key, do not count toward any budget. The API answers them with 401 or 403, never with 429.
429 Response Example
When you hit the rate limit, the API responds with an RFC 7807 problem JSON body:Handling Rate Limits
Successful responses (2xx, 304) and 429 responses include three headers so you can throttle proactively instead of waiting for a 429:
X-RateLimit-Limit— requests allowed in the window (2500)X-RateLimit-Remaining— requests left in the current window, across all endpointsX-RateLimit-Reset— Unix timestamp in seconds at which the window resets
400, 403, 404, 422) do not carry these headers, but still count. The next successful response shows the current state.
If you do receive a 429 response, use the Retry-After header instead of guessing a wait time:
- Stop sending new requests immediately.
- Read the
Retry-Afterheader — it gives the exact number of seconds until the current window resets. Wait at least that long before retrying. - Double the wait time on each subsequent retry if the 429 persists.
- Resume normal request spacing once requests succeed again.