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


Authorizations

See Get Access Token on how to retrieve the token. Set Sec-WebSocket-Protocol during the handshake or on connect().
Sec-WebSocket-Protocol
string
required
Example value (authorization token):
authorization#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdGFnaW5nLmZ1bmdpYmxlLnh5eiIsInN1YiI6ImQxM2I1MzBmLWFmNzMtNDBmOS04ZjhlLWVkNzk1OTU3YTU3ZiIsImF1ZCI6WyJzdGFnaW5nLWFwcC5mdW5naWJsZS54eXoiXSwiZXhwIjoxNzAzMzA1NzQwLCJpYXQiOjE3MDMzMDM5NDB9.vsHe4G_yEkRfz8XNoTKcX83udA-LUysWD4q80wfCC8k

Query Parameters

market
string
required
Market name. Example value: BTC-USD. To get all supported markets, call /api/v1/markets endpoint.
subscriptions
string
Comma-separated list of subscription types. Supported subscription types: orders, trades, publicTrades, publicOrderBook. Defaults to orders if omitted.

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, emitPublicCompletedOrders, and emitPublicOrderBook.

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”, “publicOrderBookDelta”)

Dynamic Subscriptions

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

Supported Streams

There are four streams you can subscribe to. Check out their respective documentation for details on the data they provide and any supported 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