API Rate Limits
SpaceKart enforces per-IP and per-user request rate limits to maintain service quality for all users. These limits are structural — the same values are applied at the API gateway and documented here.
Rate limit classes
| Class | Limit | Window (seconds) | Scope | Tier |
|---|---|---|---|---|
default | 120 requests | 60 | ip | PUBLIC |
public | 300 requests | 60 | ip | PUBLIC |
strict | 10 requests | 60 | user | PUBLIC |
strict-public | 30 requests | 60 | ip | PUBLIC |
lenient-public | 600 requests | 60 | ip | PUBLIC |
mobile-ingest | 60 requests | 60 | install_token | PUBLIC |
super-write | 60 requests | 60 | user | SUPER_ADMIN |
super-read | 240 requests | 60 | user | SUPER_ADMIN |
super-strict | 10 requests | 60 | user | SUPER_ADMIN |
webhook-ingest | 500 requests | 60 | ip | PUBLIC |
identity-otp-request | 3 requests | 60 | ip | PUBLIC |
identity-public-action | 20 requests | 60 | ip | PUBLIC |
identity-user-action | 60 requests | 60 | user | SUPER_ADMIN |
identity-mobile-change | 3 requests | 3600 | user | SUPER_ADMIN |
identity-data-export | 1 requests | 2592000 | user | SUPER_ADMIN |
identity-deletion | 1 requests | 86400 | user | SUPER_ADMIN |
identity-biometric-login | 10 requests | 60 | user | SUPER_ADMIN |
vendor-write | 60 requests | 60 | user | PUBLIC |
vendor-bulk | 5 requests | 60 | user | PUBLIC |
customer-read | 240 requests | 60 | ip | PUBLIC |
cart-read | 240 requests | 60 | user | PUBLIC |
cart-write | 60 requests | 60 | user | PUBLIC |
checkout-mint | 10 requests | 60 | user | PUBLIC |
checkout-read | 120 requests | 60 | user | PUBLIC |
promo-validate | 20 requests | 60 | user | PUBLIC |
payment-create-order | 10 requests | 60 | user | PUBLIC |
payment-read | 120 requests | 60 | user | PUBLIC |
payment-cod-confirm | 10 requests | 60 | user | PUBLIC |
refund-create | 5 requests | 60 | user | PUBLIC |
invoice-download | 30 requests | 60 | user | PUBLIC |
vendor-report | 60 requests | 60 | user | PUBLIC |
order-read | 120 requests | 60 | user | PUBLIC |
order-list | 120 requests | 60 | user | PUBLIC |
order-action | 30 requests | 60 | user | PUBLIC |
report-read | 60 requests | 60 | user | PUBLIC |
report-export | 10 requests | 60 | user | PUBLIC |
return-list | 60 requests | 60 | user | PUBLIC |
return-open | 5 requests | 60 | user | PUBLIC |
return-read | 120 requests | 60 | user | PUBLIC |
return-evidence-sas | 30 requests | 60 | user | PUBLIC |
return-evidence-commit | 30 requests | 60 | user | PUBLIC |
return-evidence-read | 60 requests | 60 | user | PUBLIC |
vendor-analytics | 30 requests | 60 | user | PUBLIC |
vendor-analytics-export | 5 requests | 3600 | user | PUBLIC |
dispute-list | 60 requests | 60 | user | PUBLIC |
dispute-open | 10 requests | 60 | user | PUBLIC |
dispute-get | 120 requests | 60 | user | PUBLIC |
dispute-evidence-sas | 20 requests | 60 | user | PUBLIC |
dispute-evidence-commit | 20 requests | 60 | user | PUBLIC |
vendor-dispute-list | 60 requests | 60 | user | PUBLIC |
vendor-dispute-get | 120 requests | 60 | user | PUBLIC |
vendor-dispute-respond | 20 requests | 60 | user | PUBLIC |
vendor-dispute-evidence-sas | 20 requests | 60 | user | PUBLIC |
vendor-dispute-evidence-commit | 20 requests | 60 | user | PUBLIC |
admin-dispute-list | 120 requests | 60 | user | PUBLIC |
admin-dispute-get | 120 requests | 60 | user | PUBLIC |
admin-dispute-claim | 60 requests | 60 | user | PUBLIC |
admin-dispute-release | 60 requests | 60 | user | PUBLIC |
admin-dispute-resolve | 30 requests | 60 | user | PUBLIC |
admin-dispute-close | 60 requests | 60 | user | PUBLIC |
admin-dispute-evidence-sas | 20 requests | 60 | user | PUBLIC |
admin-dispute-evidence-commit | 20 requests | 60 | user | PUBLIC |
admin-dispute-evidence-preview | 60 requests | 60 | user | PUBLIC |
admin-dispute-detail | 120 requests | 60 | user | PUBLIC |
bi-report-export | 3 requests | 300 | user | PUBLIC |
vendor-comms-thread | 5 requests | 3600 | user | PUBLIC |
vendor-comms-message | 30 requests | 3600 | user | PUBLIC |
reviews | 3 requests | 60 | user | PUBLIC |
catalog-suggest | 120 requests | 60 | ip | PUBLIC |
catalog-trending | 60 requests | 60 | ip | PUBLIC |
Handling 429 responses
When you exceed the rate limit, the API returns HTTP 429 Too Many Requests with a Retry-After header
indicating how many seconds to wait before retrying.
{
"statusCode": 429,
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"retryAfter": 60
}Implement exponential backoff in your client starting from the Retry-After value.