Rate limits
Each Bigblue account can make 200 requests per minute across all endpoints and API keys.
- Limit
- 200 requests per minutePer Bigblue account, not per API key.
- Window
- Rolling one minuteNot reset at the start of each minute.
- Scope
- All endpointsReads and writes from all integrations on the account share the limit.
- When exceeded
- HTTP 403The code is
resource_exhausted. The request is rejected.
Error response
{
"code": "resource_exhausted",
"msg": "You've exceeded your quota of requests per minute. Please try again in a few seconds."
}The status is 403, not 429
Authentication errors also use 403. Check the code: resource_exhausted
means rate limited, permission_denied means a problem with the key.
The API doesn't send X-RateLimit-* or Retry-After headers. Use backoff when you
get resource_exhausted.
What counts
Every request with a valid key counts, including requests that fail validation. Requests with a missing or invalid key don't count.
All API keys on an account share the same limit. A batch job and a storefront on the same account use the same 200 requests per minute.
Staying under the limit
Use large pages
With pages of 250, 200 requests return 50,000 objects. With pages of 10, they return 2,000. See Pagination for the maximum page sizes.
Use webhooks instead of polling
Webhooks send inventory and order status changes to you and don't count against the limit.
Limit batch jobs
Run imports and nightly syncs in a separate worker with two to four requests at a time, so they don't block order creation.
Back off with jitter
On resource_exhausted, wait a few seconds before retrying. Add random jitter so
parallel workers don't retry at the same moment. See the
retry example.
Example: syncing a catalogue
For 8,000 products, 20,000 inventory rows and 5,000 orders:
| Work | Requests | Time at 200 per minute |
|---|---|---|
| Create 8,000 products, one request each | 8,000 | About 40 minutes |
Read 20,000 inventory rows with page_size: 1000 | 20 | Seconds |
Read 5,000 orders with page_size: 100 | 50 | Seconds |
Creating objects takes the most requests because there are no batch endpoints. Run imports at a steady rate in the background, and leave room for live traffic.