WS Connection Limits
WebSocket Connection Rate Limit
Concurrent WebSocket Connection Limits
WebSocket connections are subject to concurrent connection limits that vary by user type and connection scope. These limits are shared between UI and API access and can be increased upon request.Market Makers
Market-Specific Connections:
Market-Agnostic Connections:
The limit is calculated as:
Per-market limit × Number of supported markets.
Retail/Institutional Users
If you exceed the concurrent connection limit, establishing additional connections returns
403 Forbidden.
Order Creation and Operation Rate Limits
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: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.
Maximum Open Orders Per Market
To prevent abuse, Rails enforces strict limits on open orders per market:
Important details:
- All orders regardless of status (active, pending, cancelling, modifying) count toward this limit
- Applies to both limit and market orders (including IOC orders) combined
- Exceeding this limit results in order rejection with
400 Bad Requestandmaximum open orders count of 80 reachedmessage (see the Order Creation Stream reference for error details) - Use Get Open Orders to monitor your current count
- Hitting the limit often indicates submission rates are higher than allowed
- Reduce submission rate to avoid throttling and pending/cancelling backlogs
- Repeatedly violating this limit and/or failing to back off after receiving
400 Bad Requestmay lead to Order Creation Ban
Handling Rate Limit Violations
If you exceed any of the above rate limits, you will receive a429 Too Many Requests response and you must back off and avoid sending further
requests until the limit resets. 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.
Repeated violations or failure to respect rate limits may result in a ban.
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 Stream WebSocket connections are immediately disconnected across all markets
- New Order Creation Stream WebSocket connections are blocked for 5 minutes
- Connection attempts return
403 Forbiddenwith messageuser soft banned till ${unix timestamp}
Order Creation Ban (Cancellation Only)
Repeatedly violating the Maximum Open Orders Per Market limit and/or failing to back off after receiving400 Bad Request 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 (see the Order Creation Stream reference for error details) - 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.
Avoiding Soft Bans
-
For Account-Level Rate Limit (prevents disconnection): See Monitoring Rate Limit Usage for how to monitor your current usage in both WebSocket and REST APIs. Implement rate limiting in your code to stay below your limit. In case you receive
429responses, immediately back off and wait based on theRetryAfterSecfield or theRetry-Afterheader 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 creating new orders. If so, please reduce the order creation rate in this market until the total number of open orders goes down to around the normal number of orders you intend to create in the order book.
Monitoring Rate Limit Usage
You can monitor your Account-Level Rate Limit usage in both the WebSocket and REST APIs.WebSocket
- The
apiQuotaUsedfield is included in the202acknowledgment messages for both Create Order and Cancel Order By ID requests on the Order Creation Stream. This indicates your current request count toward the account-level rate limit. - The
RetryAfterSecfield is included in the429rejection messages when you exceed the rate limit, telling you how long to wait before retrying.
REST
-
The Get Order By ID endpoint includes headers that expose your current usage and quota:
Network Rate Limits
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
These limits are applied globally across all users and should be more than enough for normal usage.
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 requests per minute limit
mentioned above.