WebSocket
Endpoint
wss://big.one/ws/v2
Authenticate
You need to authenticate customer before subscribe private data, like Order, Account etc.
Protocol
Currently, we support two protocols: proto and json. Default json.
In proto mode, we utilize Google's Protocol Buffers (Protobuf) to encode and decode data streams. The advantage of using Protobuf is that it compresses the data stream to a minimal size, reducing transmission latency. Furthermore, developers can auto-generate the corresponding data structures by providing a proto file, which is significantly lowering the barrier to entry.
How to set the Websocket Protocol
Set the request header Sec-WebSocket-Protocol to proto or json.
We recommand the proto format, and the proto file is here
RequestId
requestId serves as the identifier for API requests. API responses will include the requestId, enabling you to match each response with its corresponding request. Therefore, it's essential to use a unique requestId for each request to ensure accurate tracking.
Response
After successfully subscribing, the API will return the snapshot data first, then the update data if the subscription generates new data.
Error Response
{
"requestId":"1",
"error":{
"code":45000,
"message":"GRPC error: xxx"
}
}
KeepAlive
Developers can use the Ping/Pong frame to keep the connection alive. Also we have priovid a HeartBeat message.
error code
| code | type |
|---|---|
| 45000 | grpc error |
| 45001 | login status error |
| other | default error |
Supported Methods
AuthenticateCustomer
{"requestId":"1", "authenticateCustomerRequest":{"token":"Bearer {YOUR_TOKEN}"}}
Parameters
| Name | Description | Example | Require |
|---|---|---|---|
| market | id of market | BTC-USDT | true |
Market Depth
Subscribe
{"requestId": "1", "subscribeMarketDepthRequest":{"market":"BTC-USDT"}}
After a user sends a subscription request for Depth data, the server will first push a depth snapshot of this market. Then, upon any changes in Depth, the server will push updates for the Depth data.
Response
Snapshot Data
{
"requestId": "1",
"depthSnapshot": {
"depth": {
"market":"BTC-USDT",
"asks":[
{
"price":"197.96",
"amount":"5.0",
"orderCount":1
}
],
"bids":[
{
"price":"159.99",
"amount":"1.07552",
"orderCount":1
}
]
},
"changeId":"2",
"prevId":"1"
}
}
Update Data
{
"requestId": "1",
"depthUpdate": {
"depth": {
"market":"BTC-USDT",
"asks":[
{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
}
],
"bids":[
{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
}
]
},
"changeId":"2",
"prevId":"1"
}
}
Depth
| Name | type | Description | Example |
|---|---|---|---|
| market | String | market symbol | BTC-USDT |
| asks | PriceLevel | Ask side (Sell side) | |
| bids | PriceLevel | Bid side (Buy side) | |
| changeId | String | Current change ID of this market | |
| prevId | String | Last change ID of this market | changeId and prevId are always sequential numbers. Developers can determine the accuracy of their local Depth data by comparing the values of changeId and prevId. |
PriceLevel
| Name | type | Description | Example |
|---|---|---|---|
| price | String | ask price | 197.96 |
| amount | String | ask amount | 5.0 |
| orderCount | Int | ask order count | 1 |
Unsubscribe
{"requestId": "1", "unsubscribeMarketDepthRequest":{"market":"BTC-USDT"}}
Market Candle
Subscribe
{"requestId": "1", "subscribeMarketCandlesRequest":{"market":"BTC-USDT", "period": "MIN5", "limit": "20"}}
Parameters
| Name | Description | Example | Require |
|---|---|---|---|
| market | id of market | BTC-USDT | true |
| period | time period | MIN5 | true |
| limit | expect count of candles snapshot | 20 | false |
Period
| Symbol | Description |
|---|---|
| MIN1 | 1 minute |
| MIN5 | 5 minutes |
| MIN15 | 15 minutes |
| MIN30 | 30 minutes |
| HOUR1 | 1 hour |
| HOUR3 | 3 hours |
| HOUR4 | 4 hours |
| HOUR6 | 6 hours |
| HOUR12 | 12 hours |
| DAY1 | 1 day |
| WEEK1 | 1 week |
Snapshot Data
{
"requestId":"1",
"candlesSnapshot":{
"candles":[
{
"market":"BTC-USDT",
"time":"2018-09-12T13:40:00Z",
"open":"9.0",
"high":"9.0",
"low":"9.0",
"close":"9.0",
"period":"MIN5"
}
]
}
}
Update Data
{
"requestId":"1",
"candleUpdate":{
"candle":{
"market":"BTC-USDT",
"time":"2018-09-12T05:30:00Z",
"open":"9",
"high":"9",
"low":"9",
"close":"9",
"period":"MIN5"
}
}
}
Candle
| Name | Description | Example |
|---|---|---|
| market | id of market | BTC-USDT |
| time | utc time of candle | 2018-09-12T13:40:00Z |
| open | first price in this period | 9.0 |
| high | highest price in this period | 9.0 |
| low | lowest price in this period | 9.0 |
| close | last price in this period | 9.0 |
| period | time period | MIN5 |
Unsubscribe
{"requestId": "1", "unsubscribeMarketCandlesRequest":{"market":"BTC-USDT", "period": "MIN5"}}
Market Ticker
Subscribe
{"requestId": "1", "subscribeMarketsTickerRequest":{"markets":["BTC-USDT", "ONE-BTC"]}}
Parameters
| Name | Description | Example | Require |
|---|---|---|---|
| requestId | id of request | 1 | true |
| markets | list of market id | ["BTC-USDT"] | true |
Snapshot Data
{
"requestId":"1",
"tickersSnapshot":{
"tickers":[
{
"market":"ETH-USDT",
"ask":{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
},
"bid":{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
},
"open":"197.46",
"high":"0.0",
"low":"0.0",
"close":"213.96",
"volume":"0.0"
}
]
}
}
Update Data
{
"requestId":"1",
"tickerUpdate":{
"ticker":{
"market":"ETH-USDT",
"ask":{
"price":"197.96",
"amount":"5.0",
"orderCount":"1"
},
"bid":{
"price":"159.99",
"amount":"1.07552",
"orderCount":"1"
},
"open":"197.46",
"high":"220.0",
"low":"190.0",
"close":"213.96",
"volume":"1000.0"
}
}
}
Ticker
| Name | Description | Example |
|---|---|---|
| market | id of market | BTC-USDT |
| ask | first ask PriceLevel | |
| bid | first bid PriceLevel | |
| open | first price in 24hrs | 10.24 |
| high | highest price in 24hrs | 10.24 |
| low | lowest price in 24hrs | 10.24 |
| close | last price in 24hrs | 10.24 |
| volume | total volume in 24hrs | 10.24 |
Unsubscribe
{"requestId": "1", "unsubscribeMarketsTickerRequest":{"markets":["BTC-USDT", "ONE-BTC"]}}
Market Trade
Subscribe
{"requestId": "1", "subscribeMarketTradesRequest":{"market":"BTC-USDT", "limit": "20"}}
Parameters
| Name | Description | Example | Require |
|---|---|---|---|
| requestId | id of request | 1 | true |
| market | id of market | BTC-USDT | true |
| limit | expect count of trades snapshot | 20 | false |
Snapshot Data
Note: The takerOrder and makerOrder fields are always null.
{
"requestId":"1",
"tradesSnapshot":{
"trades":[
{
"id":"28622",
"price":"9.0",
"amount":"10000.0",
"market":"BTC-USDT",
"createdAt":"2018-09-12T09:52:37Z",
"makerOrder":null,
"takerOrder":null,
"takerSide":"BID"
}
]
}
}
Update Data
Note: The takerOrder and makerOrder fields are always null.
{
"requestId":"1",
"tradeUpdate":{
"trade":{
"id":"28622",
"price":"9.0",
"amount":"10000.0",
"market":"BTC-USDT",
"createdAt":"2018-09-12T09:52:37Z",
"makerOrder":null,
"takerOrder":{
"id":"",
"price":"",
"stopPrice":"",
"amount":"",
"market":"",
"side":"BID",
"state":"PENDING",
"filledAmount":"",
"filledFees":"",
"avgDealPrice":"",
"createdAt":null,
"updatedAt":null,
"businessUnit":"SPOT",
"type":"LIMIT",
"operator":"LTE",
"ioc":false
},
"takerSide":"BID"
}
}
}
Trade
| Name | Description | Example |
|---|---|---|
| id | id of trade | 1 |
| price | price of trade | 9.0 |
| amount | amount of trade | 1000.0 |
| market | id of market | BTC-USDT |
| createdAt | create time of trade | 2018-09-12T09:52:37Z |
| makerOrder | order of maker | |
| takerOrder | order of taker |
Order
| Name | Description | Example |
|---|---|---|
| id | id of order | 1 |
| price | price of order | 10.24 |
| stopPrice | stop price of order | 10.24 |
| amount | amount of order | 1000.0 |
| market | id of market | BTC-USDT |
| side | order side | ASK |
| state | order state | FILLED |
| filledAmount | filled amount | 1000.0 |
| filledFees | filled fees | 90.0 |
| avgDealPrice | average deal price of order | 9.0 |
| createdAt | create time of order | 2018-09-12T09:52:36Z |
| updatedAt | update time of order | 2018-09-12T09:52:36Z |
Unsubscribe
{"requestId": "1", "unsubscribeMarketTradesRequest":{"market":"BTC-USDT"}}
User Account
Subscribe
{"requestId": "1", "subscribeViewerAccountsRequest":{}}
Snapshot Data
{
"requestId":"1",
"accountsSnapshot":{
"accounts":[
{
"asset":"BTC",
"balance":"10.0",
"lockedBalance":"0.0"
}
]
}
}
Update Data
{
"requestId":"1",
"accountUpdate":{
"account":{
"asset":"BTC",
"balance":"0.0",
"lockedBalance":"0.0"
}
}
}
Account
| Name | Description | Example |
|---|---|---|
| asset | asset of account | BTC |
| balance | balance of account | 10.0 |
| lockedBalance | locked balance of account | 10.0 |
Unsubscribe
{"requestId": "1", "unsubscribeViewerAccountsRequest":{}}
User Order
Subscribe one market's orders
{"requestId": "1", "subscribeViewerOrdersRequest":{"market":"BTC-USDT"}}
Parameters
| Name | Description | Example | Require |
|---|---|---|---|
| market | id of market | BTC-USDT | true |
Snapshot Data
{
"requestId":"1",
"ordersSnapshot":{
"orders":[
{
"id":"42844576",
"price":"9.0",
"stopPrice":"0.0",
"amount":"10000.0",
"market":"BTC-USDT",
"side":"ASK",
"state":"FILLED",
"filledAmount":"10000.0",
"filledFees":"90.0",
"avgDealPrice":"9.0",
"createdAt":"2018-09-12T09:52:36Z",
"updatedAt":"2018-09-12T09:52:37Z"
}
]
}
}
Update Data
{
"requestId":"1",
"orderUpdate":{
"order":{
"id":"42844576",
"price":"9.0",
"stopPrice":"0.0",
"amount":"10000.0",
"market":"BTC-USDT",
"side":"ASK",
"state":"FILLED",
"filledAmount":"10000.0",
"filledFees":"90.0",
"avgDealPrice":"9.0",
"createdAt":"2018-09-12T09:52:36Z",
"updatedAt":"2018-09-12T09:52:37Z"
}
}
}
Order
| Name | Description | Example |
|---|---|---|
| id | id of order | 1 |
| price | price of order | 10.24 |
| stopPrice | stop price of order | 10.24 |
| amount | amount of order | 1000.0 |
| market | id of market | BTC-USDT |
| side | order side | ASK |
| state | order state | FILLED |
| filledAmount | filled amount | 1000.0 |
| filledFees | filled fees | 90.0 |
| avgDealPrice | average deal price of order | 9.0 |
| createdAt | create time of order | 2018-09-12T09:52:36Z |
| updatedAt | update time of order | 2018-09-12T09:52:36Z |
Unsubscribe
{"requestId": "1", "unsubscribeViewerOrdersRequest":{"market":"BTC-USDT"}}
Subscribe all market's orders
will not return snapshot, only push order update response
{"requestId": "1", "subscribeAllViewerOrdersRequest":{}}
Unsubscribe
{"requestId": "1", "unsubscribeAllViewerOrdersRequest":{}}