API Reference

OrderBook

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": "ORDER_BOOK",
            "instId": "OKX_PERP_BTC_USDT"
        },
        {  
            "channel":"ORDER_BOOK",  
            "instId":"BINANCE_SPOT_BTC_USDT"  
        },  
        {  
            "channel":"ORDER_BOOK",  
            "instId":"OKX_SPOT_BTC_USDT"  
        },{  
            "channel":"ORDER_BOOK",  
            "instId":"BINANCE_PERP_BTC_USDT"  
        }
    ]  
}
 
Field nameTypeNecessaryRemarks
eventStringYSUBSCRIBE, UNSUBSCRIBE
argArrayYSubscribe param. There can be no more than 50 instId parameters per subscribe.
> channelStringYChannel name
> instIdStringYUnique identifier

Response

{
    "event": "SUBSCRIBE",
    "arg": [
        {
            "channel": "ORDER_BOOK",
            "instId": "OKX_PERP_BTC_USDT"
        },
        {
            "channel": "ORDER_BOOK",
            "instId": "BINANCE_SPOT_BTC_USDT"
        },
        {
            "channel": "ORDER_BOOK",
            "instId": "OKX_SPOT_BTC_USDT"
        },
        {
            "channel": "ORDER_BOOK",
            "instId": "BINANCE_PERP_BTC_USDT"
        }
    ],
    "code": 0,
    "message": "Success"
}
FieldTypeRemarks
eventStringSUBSCRIBE, UNSUBSCRIBE
codeStringError Code
msgStringError Message
argArraySubscribe param
> channelStringChannel
> instIdStringUnique identifier

Order book example:

{
    "arg": {
        "channel": "ORDER_BOOK",
        "instId": "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"
            ]
        ],
        "trades": [
            [
                "93261.400000",
                "0.012000",
                "1",
                "1736426510914000000"
            ],
            [
                "93261.400000",
                "0.009000",
                "1",
                "1736426510956000000"
            ]
        ]
    }
}

FieldTypeRemarks
channelStringexample: ORDER_BOOK
instIdStringUnique identifier
exchangeTsLongExchange timestamp
localTsLongLocal timestamp
typeString"Update" for Incremental Data, "All" for Full Data.
preseqNumLongLast Sequence Number
seqNumLongCurrent Sequence Number
ltpStringLast traded price
ttvStringLatest traded volume
ttqStringLatest traded quantity
stateStringTrading Pairs state(NORMAL=0,CLOSE=1)
bidsArrayBid levels, up to 50 levels
> priceStringPrice
> qtyStringQuantity
asksArrayAsk levels, up to 50 levels
> priceStringPrice
> qtyStringQuantity
tradesArraytransactions
> priceStringPrice
> qtyStringQuantity
> sideStringSide(BUY=0,SELL=1)
> exchangeTsLongTransaction Time