Skip to main content
This new WebSocket API provides real-time market data, order updates, and execution events with the guarantees required by professional trading systems. It is designed to remain predictable, secure, and low-latency even during periods of extreme market activity. The API adopts a subscription model that gives you control over which real-time streams your connection receives. Subscriptions can be specified either at connection time via query parameters or dynamically modified after connecting using explicit requests.

URL

Query params

market
string
required
Example value: BTC-USD. To get all supported markets, call /api/v1/markets endpoint.
subscriptions
string
Comma-separated list of subscription types. Available subscription types: orderCreation, tradeStream, orderBookStream. Defaults to orderCreation if omitted.

Headers

See Authorization section on how to retrieve authorization token. Once token is received, set Sec-WebSocket-Protocol headers in the WebSocket handshake request or on connect().
Sec-WebSocket-Protocol
string
required
Example value (authorization token):
authorization#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdGFnaW5nLmZ1bmdpYmxlLnh5eiIsInN1YiI6ImQxM2I1MzBmLWFmNzMtNDBmOS04ZjhlLWVkNzk1OTU3YTU3ZiIsImF1ZCI6WyJzdGFnaW5nLWFwcC5mdW5naWJsZS54eXoiXSwiZXhwIjoxNzAzMzA1NzQwLCJpYXQiOjE3MDMzMDM5NDB9.vsHe4G_yEkRfz8XNoTKcX83udA-LUysWD4q80wfCC8k

Request Envelope

All WebSocket requests follow the same top-level structure:
{
  "message":"<requestType>",
  "content":{
    "clientRequestId":"<UUID>", // optional
      ...
  }
}
  • message defines the request type
  • content contains request-specific parameters (can be omitted if no parameters)
  • An optional clientRequestId field is supported for correlation
The following three requests do not support clientRequestId yet, but will soon: ping, emitCompletedOrders, and emitOrderBook.

Response Envelope

All WebSocket responses and stream messages follow a consistent top-level structure:
{
  "data": {
    // response-specific fields...
  },
  "resultType": "<responseType>"
}
  • data contains the response or message payload
  • resultType identifies the type of response or message (e.g., “subscribed”, “orderBookDelta”)

Dynamic Subscriptions

You can modify subscriptions dynamically after connecting using explicit subscribe and unsubscribe requests.

Available Streams

There are three main streams you can subscribe to. Check out their respective documentation for details on the data they provide and any available requests.

Common Requests

The ping request is available regardless of your current subscriptions and can be used to monitor connection health.

Ping

Connection health monitoring - available even without any subscription

Deterministic Delivery

Multiple WebSocket connections with identical market and subscription parameters receive the same sequence of events with no per-connection filtering or divergence. This enables:
  • Multiple parallel connections for redundancy
  • Hot standby consumers for failover
  • Independent processes handling the same events
  • Focused connections for specific stream subsets