Skip to navigation

Websocket Rate Limits

Public Concurrent Connections

For public concurrent connections via our Websocket, the rate limit is set to a maximum of 20 connections per second or 600 connections per minute per IP address.

Order Management

Order methods (order.create, order.create_batch, order.modify, order.cancel, order.cancel_batch, order.cancel_all) are limited per account:

OrdersMethodsRate LimitPer
All ordersAll methods above100 req/s OR 3600 req/mAccount
Retail Orders, in additionorder.create, order.create_batch, order.modify10 req/s OR 10 req/m OR 100 req/h OR 2000 req/24hAccount
  • Retail Orders are orders sent after authenticating with an interactive token. See Retail vs Pro Orders. Over WebSocket, a Retail Order over its limit is rejected rather than switched to Pro Order behavior.
  • A batch request counts as one request, whatever the number of orders in it.
  • Order requests sent through the REST API count toward this limit as well.
  • There is no IP based limit on order methods over WebSocket.
  • A request over the limit is rejected with error code 42901. See Error Handling.

The WebSocket order limit is lower than the REST API order limit. For high throughput order entry, prefer batch methods, for example order.cancel_batch followed by order.create_batch to update quotes on several levels at once.

Messages and Subscriptions

LimitValuePer
Messages10 msg/sConnection
Subscriptions200Connection
  • Messages over the message rate limit are delayed, not rejected. Authenticated order.* requests do not count toward it, but each connection processes messages in order, so an order request sent behind delayed messages waits for them. Use a separate connection for order entry.
  • A client that sends messages faster than the server can process them is disconnected with close code 4032.
  • A subscription request over the subscription limit is rejected with error code 42900.
  • A connection that holds no subscriptions for 5 minutes is closed with close code 4031.