WebSocket Public Information Streams
WebSocket Format
Path: /public
Method: WebSocket
Description: WebSocket format
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array (List of subscribed channels)
├─ channel: String
└─ symbol: StringResponse:
├─ event: String (subscribe, unsubscribe)
├─ channel: String
├─ symbol: String
├─ code: Number
└─ msg: StringExample:
Request:
{
"op": "",
"args": [
{
"channel": "",
"symbol": ""
}
]
}Response:
{
"event": "",
"channel": "",
"symbol": ""
"code": 0,
"msg": ""
}WebSocket Connect
Path: /public
Method: WebSocket
Description: When the user's websocket client connects to the websocket server, the server will send a 'ping' message to it regularly (currently set to 10 seconds). When the user's websocket client receives this heartbeat message, it should return a 'pong' message. When the websocket server sends 'ping' messages for three consecutive times but does not receive any 'pong' messages, the server will actively disconnect from this client. When the websocket client does not receive the 'ping' message from the server for more than 30 seconds, it is considered that it is disconnected from the server and needs to be reconnected.
Parameters:
└─ pingResponse:
└─ pongAll Contracts Simplify Tickers Channel
Path: /public
Method: WebSocket
Description: Websocket channel to subscribe simplify ticker of all contracts
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array (List of subscribed channels)
└─ channel: String (tickers: All contracts tickers)Response:
├─ channel: String
└─ data: Array
├─ symbol: String
├─ lastPrice: String
└─ priceChangePercent: String (Percentage of 24-hour price change)Example:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "tickers"
}
]
}Response:
{
"channel": "tickers"
"data": [
{
"symbol": "ETH-USDC",
"lastPrice": "4.00000200",
"priceChangePercent": "-95.960"
}
]
}Single Contract Ticker Channel
Path: /public
Method: WebSocket
Description: Websocket channel to subscribe ticker
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (ticker: Single Contract Ticker)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ symbol: String
├─ priceChange: String (24-hour price change)
├─ priceChangePercent: String (Percentage of 24-hour price change)
├─ lastPrice: String (Last trades price)
├─ lastQty: String (Last trades amount)
├─ openPrice: String (Price of the first trades within 24 hours)
├─ highPrice: String (24-hour maximum price)
├─ lowPrice: String (24-hour lowest price)
├─ volume: String (24-hour trades quantity)
├─ quoteVolume: String (24-hour trades amount)
└─ count: Number (24-hour trades count)Example:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "ticker",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "ticker",
"symbol": "ETH-USDC"
"data": {
"symbol": "ETH-USDC",
"priceChange": "-94.99999800",
"priceChangePercent": "-95.960",
"lastPrice": "4.00000200",
"lastQty": "200.00000000",
"openPrice": "99.00000000",
"highPrice": "100.00000000",
"lowPrice": "0.10000000",
"volume": "8913.30000000",
"quoteVolume": "15.30000000",
"count": 76
}
}Order Book Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe order book update
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array (List of subscribed channels)
├─ channel: String (depth<levels>: levels mean depth levels, Optional 5/10/20; depth5 for 5 depth levels)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
├─ action: String (Push data action, incremental data or full snapshot. snapshot: full update: incremental)
└─ data: Object
├─ bids: Array (Buy)
│ ├─ 0: String (price, 1st bit of array)
│ └─ 1: String (quantity, 2nd bit of array)
├─ asks: Array (Sell)
│ ├─ 0: String (price, 1st bit of array)
│ └─ 1: String (quantity, 2nd bit of array)
└─ time: NumberExample:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "depth<levels>",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "depth5",
"symbol": "ETH-USDC"
"action": "snapshot",
"data": {
"bids": [
{
"0": "4.00000000",
"1": "431.00000000"
}
],
"asks": [
{
"0": "4.00000200",
"1": "12.00000000"
}
],
"time": 1569514978020
}
}Latest Trades Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe latest trades update
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (trade:trades)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ symbol: String
├─ id: String (Trades id)
├─ price: String (Trades price)
├─ qty: String (Trades quantity)
├─ time: Number (Trades time)
├─ side: String
└─ maker: Boolean (if maker)Example:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "trade",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "trade",
"symbol": "ETH-USDC"
"data": {
"symbol": "ETH-USDC",
"id": "28457",
"price": "4.00000100",
"qty": "12.00000000",
"time": 1499865549590,
"side": "SELL",
"maker": false
}
}Kline Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe kline update
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (channel: kline1m,kline5m,kline15m,kline30m,kline1h,kline4h,kline1d)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ 0: Number (Start time)
├─ 1: String (Open price)
├─ 2: String (highest price)
├─ 3: String (Lowest price)
├─ 4: String (Close price)
├─ 5: String (Trades quantity)
├─ 6: String (Trades amount)
└─ 7: Number (Trades count)Example:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "kline15m",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "kline15m",
"symbol": "ETH-USDC"
"data": {
"0": 1499040000000,
"1": "0.01634790",
"2": "0.80000000",
"3": "0.01575800",
"4": "0.01577100",
"5": "148976.11427815",
"6": "2434.19055334",
"7": 308
}
}Index Tickers Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe index ticker update
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (index:Index price)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ symbol: String
├─ indexPrice: String
└─ time: NumberExample:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "index",
"symbol": "ETH-USDC"
}
]
}
Response:
{
"channel": "index",
"symbol": "ETH-USDC"
"data": {
"symbol": "ETH-USDC",
"indexPrice": "28457",
"time": 1499865549590
}
}Oracle Price Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe oracle price update
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (oracle: Oracle price)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ symbol: String
├─ oraclePrice: String
└─ time: Number (Effective time)Example:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "oracle",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "oracle",
"symbol": "ETH-USDC"
"data": {
"symbol": "ETH-USDC",
"oraclePrice": "28457",
"time": 1499865549590
}
}Funding Rate Channel
Path: /public
Method: WebSocket
Description: Channel to subscribe funding rate
Parameters:
├─ op: String (Operation, subscribe unsubscribe)
└─ args: Array
├─ channel: String (funding:Funding rate)
└─ symbol: StringResponse:
├─ channel: String
├─ symbol: String
└─ data: Object
├─ symbol: String
├─ fundingRate: String
└─ time: NumberExample:
Request:
{
"op": "subscribe",
"args": [
{
"channel": "funding",
"symbol": "ETH-USDC"
}
]
}Response:
{
"channel": "funding",
"symbol": "ETH-USDC"
"data": {
"symbol": "ETH-USDC",
"fundingRate": "0.0008",
"time": 1499865549590
}
}Last updated