Market Data Websocket

The Market Data Websocket is specific for authorized market data feed with all in fee included in the quotes.

Websocket Endpoints

Environments

There are two environments to access our authorized market data feeds:

  1. Live

wss://market.aquanow.io/ 
  1. Sandbox

wss://market-staging.aquanow.io/

Websocket Access and Authorization

API Authentication is done using an API key and a secret. User needs to associate the following information in the payload of the subscription message. View the Authorization page for more detail.

Subscribe

In order to receive data feed, users sends a subscribe message to the server, after successful websocket connection. Users must also indicate the channel they wish to subscribe on in the subscription request.

When a subscribe message is received with a pair and channel, the server will respond with a subscription message that lists all channels you are subscribed to.

There are three channels you can subscribe for:

  1. orderBook - Orderbook across various marketplaces and exchanges.

  2. ticker - Aggregated Open, High, Low, Close for a ticker.

  3. gbbo - Real time best price/bids updates for subscribed ticker

Note: that the Subscribe request MUST be a JSON string. For example, in Javascript this can be achieved by using the JSON.stringify method.

Request Parameters

Unsubscribe

You can unsubscribe from a channel at any time.

Example Request

JSON.stringify({
  "type": "unsubscribe",      // Message Type
  "channel": 'orderBook',     // Subscription Channel
  "pair": 'BTC-USD'           // Symbol
})

Example Usage

const WebSocket = require("ws"); 
const crypto = require("crypto"); 
  
const ws = new WebSocket(`wss://market.aquanow.io`); 
  
const apiKey = ""; 
const secret = ""; 
  
function subscribeToMarketData(credentials) { 
   const { apiKey, secret } = credentials; 
   const timestamp = Date.now(); 
   const payload = { 
     type: "subscribe", 
     channel: "orderBook", 
     pair: "BTC-USD", 
     nonce: timestamp, 
     depth: 5 
   }; 
   const apiSignature = crypto 
     .createHmac("sha384", secret) 
     .update(JSON.stringify(payload)) 
     .digest("hex"); 
   
   const subsOption = JSON.stringify({ 
     ...payload, 
     apiKey, 
     apiSignature 
   }); 
   
   ws.send(subsOption); 
 } 
   
 ws.on("open", () => { 
   console.log(`WS tunnel opened - trade`); 
   subscribeToMarketData({ apiKey, secret }); 
 }); 
   
 ws.on("message", data => { 
   console.log("data", data); 
 }); 

Example Responses

{
  dateType: 'aggOB',
  lastUpdated: 1544004380004,
  includeFees: 1,
  symbol: 'BTC-USD',
  bids:
  [
    {
      "quote": "6000",            // Price
      "quantity": 2.13,           // Quote Size
      "cumulativeQuantity": 2.13  // Cumulative Sum of Quantity 
    },
    ...
  ],
  asks:
  [
    {
      "quote": "6001",            // Price
      "quantity": 1.36,           // Quote Size
      "cumulativeQuantity": 1.36  // Cumulative Sum of Quantity
    },
    ...
  ]
}