Rate limits
API Rate Limits
To ensure fair usage and maintain performance for all users, certain API endpoints are subject to rate limits. These limits restrict the number of requests that can be made to specific endpoints within a defined time period. Exceeding the rate limit will result in a 429 Too Many Requests error response.
Understanding Rate Limits
Each rate-limited endpoint has a defined threshold measured in requests per minute. If your application exceeds this threshold, further requests will be temporarily blocked until the limit resets.
Counters are per partner, per route — usage on one endpoint does not consume the budget of another. Endpoints that include {id} in the path also count per resource ID, so a high-traffic order does not affect requests against other orders.
To avoid exceeding rate limits:
- Implement retry logic with exponential backoff.
- Monitor your usage patterns and adjust your requests accordingly.
- Cache catalog data (
/products,/products/status) — it changes rarely. - Use Webhooks instead of polling for order status updates. Endpoints
GET /orders/{id}andGET /orders/{id}/statushave strict per-ID limits (15–25 req/min) because real-time status updates are delivered via webhooks.
Webhooks instead of polling
Don't poll GET /orders/{id}/status repeatedly — configure a Webhook URL in the Partner Panel to receive ORDER_STATUS_CHANGED events automatically when an order moves to PENDING, ACTIVE, REFUNDED, or other statuses.
Rate-Limited Endpoints
Below is a table of API endpoints with their respective rate limits. All time windows are per minute.
| Endpoint | Standard | Premium | Enterprise | Time Window |
|---|---|---|---|---|
GET /products | 50 requests | 100 requests | 300 requests | Per minute |
GET /products/status | 25 requests | 100 requests | 300 requests | Per minute |
GET /users | 100 requests | 500 requests | 1000 requests | Per minute |
GET /users/{id}/orders | 50 requests | 200 requests | 1000 requests | Per minute for the same {id} |
GET /users/{id}/vehicles | 50 requests | 200 requests | 1000 requests | Per minute for the same {id} |
POST /orders | 200 requests | 1000 requests | 2500 requests | Per minute |
GET /orders | 100 requests | 500 requests | 1000 requests | Per minute |
GET /orders/{id} | 25 requests | 50 requests | 100 requests | Per minute for the same {id} |
GET /orders/{id}/status | 15 requests | 30 requests | 50 requests | Per minute for the same {id} |
POST /orders/{id}/cancel-pending | 25 requests | 100 requests | 250 requests | Per minute for the same {id} |
POST /orders/{id}/cancel-deferred | 25 requests | 100 requests | 250 requests | Per minute for the same {id} |
POST /validate-vehicle | 250 requests | 1000 requests | 2500 requests | Per minute |
POST /transaction/create | 50 requests | 250 requests | 1000 requests | Per minute |
GET /transactions | 100 requests | 500 requests | 1000 requests | Per minute |
GET /transaction/{unique_id}/status | 100 requests | 300 requests | 1000 requests | Per minute for the same {unique_id} |
GET /transaction/{unique_id}/fee | 50 requests | 200 requests | 500 requests | Per minute for the same {unique_id} |
GET /transaction/{id}/data | 100 requests | 300 requests | 1000 requests | Per minute for the same {id} |
POST /transaction/{id}/cancel | 25 requests | 100 requests | 250 requests | Per minute for the same {id} |
/mcp | 100 requests | 300 requests | 1000 requests | Per minute |