Account-Level Rate Limit
The following WebSocket and REST API requests share a combined account-level rate limit across all markets, regardless of API keys:| Endpoint | Description |
|---|---|
| Create Order - Limit | Place a limit order |
| Create Order - Market | Place a market order |
| Cancel Order By ID | Cancel an order by ID |
| Update Leverage | Update account leverage |
| Get Order By ID | Retrieve order details by ID |
If you are using the UI and API simultaneously, some UI actions may also count
towards your account-level rate limit. In particular, even if you are not
actively doing any trades in the UI, it will still consume 240 requests per
minute from your account-level rate limit (market makers only) by polling for
updates.
| User Type | Limit (requests/minute) |
|---|---|
| Market Maker | 10,000 |
| Retail/Institutional | 250 |
Authorization Endpoint Rate Limit
| Endpoint | Limit (requests/minute per API key) |
|---|---|
| Authorization | 20 |
WebSocket Connection Rate Limit
| User Type | Limit (new connections/minute) |
|---|---|
| Market Maker | 60 |
| Retail/Institutional | 20 |
User Account API Rate Limit
All User Account API endpoints:- Get Balances
- Get Open Orders
- Get Open Order by ID
- Get Completed Orders
- Get Positions
- Get Deposits
- Get Withdrawals
- Get Fundings
- ThrottlingBurstLimit: 2,000 requests per second
- ThrottlingRateLimit: 2,000 requests per second
We enforce fair usage of these User Account API endpoints. If we detect
abnormal spamming of the API, we might ban the user. Note that the User
Account API endpoints are NOT part of the 10,000 calls per minute limit
mentioned above.
Handling Rate Limit Violations
If you exceed any of the above rate limits, you will receive a429 Too Many Requests response. The rate limit counter resets every minute based on the timing of your first request, not at fixed minute intervals. Note that
User Account API Rate Limit is an exception that resets every second.
If you receive a
429 response, you must back off and avoid sending further
requests until the limit resets. Repeated violations or failure to respect
rate limits may result in a ban.Other Commonly Encountered Limits
The following two limits are not directly related to rate limiting but are important to be aware of:Soft Ban
To protect our core order creation and cancellation services, we implement a “soft ban” mechanism for both Account-Level Rate Limit and Maximum Open Orders Per Market violations. There are two different types of soft ban behavior depending on the violation:Rate Limit Soft Ban (Disconnection)
Repeatedly violating the Account-Level Rate Limit and/or failing to back off after receiving 429s will result in an automatic soft ban for 5 minutes and you will be disconnected. What happens during a rate limit soft ban:- All Order Creation WebSocket connections are immediately disconnected across all markets
- New Order Creation WebSocket connections are blocked for 5 minutes
- Connection attempts return
403 Forbiddenwith messageuser soft banned till ${unix timestamp}
Order Creation Ban (Restriction Only)
Repeatedly violating the Maximum Open Orders Per Market limit and/or failing to back off after receiving 400s will result in an order creation ban, but you will remain connected to the WebSocket. What happens during an order creation ban:- You remain connected to the WebSocket (no disconnection)
- All order creation requests are rejected with
403 Forbiddenstatus - The rejection includes a
RetryAfterSecfield indicating when you can try again - Other WebSocket operations (like order cancellation) continue to work normally
There is no limit on how many times either type of soft ban can be triggered. Each violation resets the ban period.Tip for rate limit soft ban: If you get disconnected due to a rate limit soft ban, you can still call Cancel Orders REST endpoint while being disconnected from WebSocket.Tip for order creation ban: You remain connected and can continue to cancel orders via WebSocket, but cannot create new orders until the ban expires.
-
For Account-Level Rate Limit (prevents disconnection): Monitor the
apiQuotaUsedfield in Create Order and Cancel Order202acknowledgement messages. This indicates your current request count toward the account-level rate limit. Implement rate limiting in your code to stay below your limit. In case you receive429responses, immediately back off and wait based on theRetryAfterSecfield before sending further requests. - For Maximum Open Orders Per Market (prevents order creation ban): Keep track of the number of all open orders (not just active ones, but also pending and cancelling ones) you have in each market using Get Open Orders endpoint. If you approach the limit, please check if you have any open orders stuck in pending or cancelling status before placing new orders. If so, please reduce the order placing rate in this market until the total number of open orders goes down to around the normal number of orders you intend to place in the order book.