Aquanow
Legacy
Legacy
  • About Aquanow
    • Introduction
  • VERSION DIFFERENCES
    • Latest vs Legacy
  • User Guide
    • Trading
      • Order Book
      • Submitting Orders
      • Order Types / Strategies
      • Trade Management
    • Automated Conversions
      • Autopilot
    • Deposits & Withdrawals
      • Deposits
      • Withdrawals
      • Balances
      • Transaction History
      • Approval Workflows
    • Account Management
      • CSV Exports
      • Address Management
      • IP Whitelisting
      • User List
  • Integration Guide
    • API Keys
      • Rate and API Key Limits
    • Authentication
    • Staging environment
    • Postman
    • Supported Assets and Tickers
    • Testnet and Faucet
  • API Endpoints | V1.0
    • Accounts API
      • User Balances
      • API Keys
    • Transaction API
      • Get Transactions
      • Create Transactions
      • Approvals API
      • Get Withdrawal Fee Estimate
    • Executions API
      • GET or Query Orders
      • Trading Strategies
    • Market Data API
      • Authorized Market Data
  • API Endpoints | V2.0
    • Transaction API
      • Get Transactions
    • Executions API
      • GET or Query Orders
      • Trading Strategies
  • Webhooks
    • Subscribing to Webhooks
    • Transaction Webhook
  • Websockets
    • Introduction
    • Authenticated Websockets
      • Market Data Websocket
      • Reporting Websocket
  • Data Objects & Statuses
    • Websocket Objects
    • Transaction Objects
      • Approval Objects
      • Fee Estimate Objects
    • Accounts Objects
    • Executions Objects
      • Duration Order Objects
    • Market Data Objects
    • Statuses
  • FAQs and Misc. Information
    • FAQs
    • Misc. Information
Powered by GitBook
On this page
  • Websocket Endpoints
  • Websocket Access and Authorization
  • Example Usage
  1. Websockets
  2. Authenticated Websockets

Market Data Websocket

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

PreviousAuthenticated WebsocketsNextReporting Websocket

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 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

Name
Type
Description

apiKey

String

API key

apiSignature

String

Signature created using API secret

channel

String

Channel of subscription

type

String

Type of action; subscribe or unsubscribe

nonce

String

Numeric string timestamp in milliseconds of when the request is sent

pair

String

Symbol/currency pair; ex. – pair: “BTC-CAD”

depth

Number

Depth of an orderbook; ex. – depth: 5

precision

Number

Precision level; ex. - precision: 2

Name
Type
Description

apiKey

String

API key

apiSignature

String

Signature created using API secret

channel

String

Channel of subscription

type

String

Type of action; subscribe or unsubscribe

nonce

String

Numeric string timestamp in milliseconds of when the request is sent

pair

String

Symbol/currency pair; ex. – pair: “BTC-CAD”

Name
Type
Description

apiKey

String

API key

apiSignature

String

Signature created using API secret

channel

String

Channel of subscription

type

String

Type of action; subscribe or unsubscribe

nonce

String

Numeric string timestamp in milliseconds of when the request is sent

pair

String

Symbol/currency pair; ex. – pair: “BTC-CAD”

precision

Number

Precision level; ex. - precision: 2

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); 
 }); 
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: "ticker", 
     pair: "BTC-USD", 
     nonce: timestamp 
   }; 
   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); 
 }); java
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: "gbbo", 
     pair: "BTC-USD", 
     nonce: timestamp,
     precision: 2
   }; 
   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); 
 }); javaa

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
    },
    ...
  ]
}
{   
    symbol:"BTC-USD", 
    open:9078.632669565, 
    close:9078.632669415001, 
    high:9078.632669565, 
    low:9078.632669415001, 
    itemDateTime:1560892856307
}
{
    "dataType":"aggBBO",
    "lastUpdated":1561505760000,
    "symbol":"ETH-USD",
    "includeFees":1,
    "precisions":[1,2],
    "bestBid":315.47,
    "bestAsk":315.31,
    "spread":"-0.16"
}
Authorization page