Description
Rate Limit: 10 requests per second per IP for Subscribe and Unsubscribe.
A message with type="all" indicates a full snapshot, while type="update" indicates an incremental update. Upon initial subscription, a full snapshot is sent, followed by incremental updates. The order book should be maintained using seqNum (current sequence number) and preSeqNum (previous sequence number).
Response Packet Protocol: binary
Request
{
"event": "SUBSCRIBE",
"arg": [
{
"channel": "orderbook",
"sym": "OKX_PERP_BTC_USDT"
},
{
"channel":"orderbook",
"sym":"BINANCE_SPOT_BTC_USDT"
},
{
"channel":"orderbook",
"sym":"OKX_SPOT_BTC_USDT"
},{
"channel":"orderbook",
"sym":"BINANCE_PERP_BTC_USDT"
}
]
}
| Field name | Type | Necessary | Remarks |
|---|---|---|---|
| event | String | Y | subscribe / unsubscribe |
| arg | Array | Y | Subscribe param. There can be no more than 50 instId parameters per subscribe. |
| > channel | String | Y | Channel name: orderbook |
| > sym | String | Y | Unique identifier |
Response
{
"event": "SUBSCRIBE",
"arg": [
{
"channel": "orderbook",
"sym": "OKX_PERP_BTC_USDT"
},
{
"channel": "orderbook",
"sym": "BINANCE_SPOT_BTC_USDT"
},
{
"channel": "orderbook",
"sym": "OKX_SPOT_BTC_USDT"
},
{
"channel": "orderbook",
"sym": "BINANCE_PERP_BTC_USDT"
}
],
"code": 0,
"message": "Success"
}
| Field | Type | Remarks |
|---|---|---|
| event | String | subscribe / unsubscribe |
| code | String | Error Code |
| msg | String | Error Message |
| arg | Array | Subscribe param |
| > channel | String | Channel name: orderbook |
| > sym | String | Unique identifier |
Order book example:
{
"arg": {
"channel": "orderbook",
"sym": "BINANCE_PERP_BTC_USDT"
},
"data": {
"localTs": 1736426510957751300,
"exchangeTs": 1736426510956000000,
"seqNum": 5818843132,
"type": "update",
"preseqNum": 5818843129,
"ltp": "93261.400000",
"ttv": "167880070889.075409",
"ttq": "1742014.077255",
"state": "0",
"bids": [
[
"93252.900000",
"0.000000"
],
[
"93253.000000",
"4.086000"
],
[
"93254.200000",
"0.003000"
],
[
"93256.300000",
"0.055000"
],
[
"93261.300000",
"7.568000"
]
],
"asks": [
[
"93261.400000",
"1.434000"
],
[
"93271.700000",
"0.008000"
]
]
}
}
| Field | Type | Remarks |
|---|---|---|
| channel | String | example: orderbook |
| sym | String | Unique identifier |
| updatetype | String | all/update. Default is all. all : Full snapshot update : Incremental update |
| ts | String | Market data generation timestamp (milliseconds) |
| seq | String | Sequence number of the current message (used for ordered processing) |
| seqNum | String | Sequence number of the previous message (string; appears in incremental updates for continuity validation) |
| num | String | cumulative incremental sequence number for push messages. |
| Bids | String | Bid depth data list, with each element being [price, size]. |
| > price | String | Price |
| > qty | String | Quantity |
| Asks | String | Ask depth data list, with each element being [price, size]. |
| > price | String | Price |
| > qty | String | Quantity |
