Skip to main content

Order Updates WebSocket

Pushes a message every time an order's status changes — OPEN, PARTIALLY_EXECUTED, EXECUTED, CANCELLED, etc. Use this instead of polling Get Order on a tight loop.

TypeSocket.IO v4
Base URLwss://ws.coinswitch.co/
Handshake path/pro/realtime-rates-socket/spot/order-updates
Namespace/orderupdates
Event nameFETCH_ORDER_UPDATES
AuthAPI key on the subscribe payload.

Subscribe payload

ParameterTypeRequiredDescription
eventstringYesMust be "subscribe" (case-sensitive).
apikeystringYesYour CoinSwitch API key.

Subscribe

import socketio

BASE_URL = "https://ws.coinswitch.co"
HANDSHAKE_PATH = "/pro/realtime-rates-socket/spot/order-updates"
NAMESPACE = "/orderupdates"

sio = socketio.Client()

@sio.event(namespace=NAMESPACE)
def connect():
sio.emit(
"FETCH_ORDER_UPDATES",
{"apikey": "<your api key>", "event": "subscribe"},
namespace=NAMESPACE,
)

@sio.on("FETCH_ORDER_UPDATES", namespace=NAMESPACE)
def on_order_update(data):
print("Order update:", data)

sio.connect(
BASE_URL,
namespaces=[NAMESPACE],
socketio_path=HANDSHAKE_PATH.lstrip("/"),
)
sio.wait()

Update payload

{
"E": 1716390819344,
"O": 1716390819339,
"e": "COINSWITCHX",
"S": "SELL",
"V": "0.0003",
"X": "OPEN",
"i": "35286cf0-8c63-499f-bb43-86b326e4aa38",
"o": "LIMIT",
"p": "6036000",
"s": "btcinr",
"v": "0",
"z": "0"
}
FieldTypeDescription
istringOrder ID.
sstringSymbol (lowercased, no separator).
estringExchange.
SstringSide — BUY / SELL.
ostringOrder type — LIMIT / MARKET.
XstringOrder status. See Order Lifecycle.
VstringExpected base quantity (the original order quantity).
pstringExpected price (the original limit price).
vstringActual price (volume-weighted average fill price so far).
zstringActual base quantity filled so far.
OintegerOrder updated time (Unix ms).
EintegerEvent time (Unix ms).

The values of v and z evolve as fills come in. When X reaches a terminal status, no further updates will arrive for this order.