Rate Limits
Protected API endpoints have customer and shared capacity limits. Pace your requests within both limits and honor Retry-After when the service is busy.
Current limits
| Scope | Limit | Applies to |
|---|---|---|
| Public customer | 60 requests/minute | Normal routes, per non-portal customer |
| Public customer burst | 2 requests/second | Normal routes, per non-portal customer |
| Public aggregate | 120 requests/minute | All non-portal customers combined |
| Public aggregate burst | 4 requests/second | All non-portal customers combined |
| Sales orders | Additional 10 requests/minute | POST /v1/sales-orders, per customer |
| API-key list/revoke | 300 requests/minute | JWT-authenticated management routes |
| API-key create | 5 requests/minute | JWT-authenticated creation route |
Sales-order creation consumes the normal customer allowance and the additional 10 requests/minute order allowance. Portal service traffic has a separate capacity allowance.
API keys mapped to the same customer share the customer allowance. A key without a customer mapping receives its own authenticated-consumer allowance. Changing paths, query strings, headers, request IDs, or source IPs does not reset either allowance.
Rate-limit responses
Gateway rate-limit rejections return 429 with a Retry-After header specifying the delay in seconds before retrying. Use it when present; otherwise use bounded exponential backoff with jitter. Responses do not include x-ratelimit-limit, x-ratelimit-remaining, or x-ratelimit-reset.
The service can also return 503 with Retry-After when its processing capacity is full. Use bounded retries and retain the same idempotency key and request body when retrying an order submission.
When you exceed a rate limit, the API returns:
Code
Client guidance
- Pace normal catalog requests within the customer limit and honor
Retry-Afteron429responses. - Use
updated_sincefor incremental syncing and?limit=200for large catalog pages. - If a sales-order POST response leaves acceptance uncertain, replay the identical body with the same
Idempotency-Key. This does not retry failed processing. Corrected orders require a new key and safe consumer duplicate handling. Do not automatically resubmit attachment or ambiguous processing failures; contact support because an order may already exist.

