Streaming (WebSocket)
Streaming is a two-step process:
- Subscribe with a REST call (or a legacy command).
- Listen on a WebSocket at
ws://127.0.0.1:81— or on the legacy data port TCP 78.
Every connected stream client receives every streamed message, so several apps can listen at once.
curl -X POST "http://127.0.0.1:81/v1/track/prices?symbols=EURUSD,XAUUSD"{"MSG":"TRACK_PRICES","SUCCESS":["EURUSD","XAUUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}Each tick then arrives as:
{"MSG":"TRACK_PRICES","TIME":"2026.10.28 08:16:35","SYMBOL":"EURUSD","ASK":1.11216,"BID":1.11210,"VOLUME":16246}OHLC bars
Section titled “OHLC bars”curl -X POST "http://127.0.0.1:81/v1/track/ohlc" \ -H "Content-Type: application/json" \ -d '{"OHLC":[{"TIMEFRAME":"PERIOD_M1","SYMBOL":"EURUSD","DEPTH":2}]}'{"MSG":"TRACK_OHLC","SYMBOL":"EURUSD","PERIOD":"PERIOD_M1","OHLC":[ {"TIME":"2026.10.28 08:15:00","OPEN":1.11201,"HIGH":1.11222,"LOW":1.11198,"CLOSE":1.11210,"TICK_VOLUME":96}, {"TIME":"2026.10.28 08:16:00","OPEN":1.11210,"HIGH":1.11218,"LOW":1.11207,"CLOSE":1.11216,"TICK_VOLUME":31}]}DEPTH is how many of the latest bars to send each time the current bar changes.
Depth of market
Section titled “Depth of market”curl -X POST "http://127.0.0.1:81/v1/track/mbook?symbols=EURUSD"{"MSG":"TRACK_MBOOK","SYMBOL":"EURUSD","MARKET_BOOK":[ {"PRICE":1.11220,"VOLUME":1,"VOLUMEREAL":1,"TYPE":"BOOK_TYPE_SELL"}, {"PRICE":1.11210,"VOLUME":1,"VOLUMEREAL":1,"TYPE":"BOOK_TYPE_BUY"}]}Depth of market is only available if your broker provides it for the symbol.
Trade events
Section titled “Trade events”curl -X POST "http://127.0.0.1:81/v1/track/orders?enabled=true"You’ll be notified of every trade transaction — new orders, fills, modifications, stop-loss or take-profit hits:
{"MSG":"TRACK_TRADE_EVENTS","TRADE_TRANSACTION":{"DEAL":0,"DEAL_TYPE":"DEAL_TYPE_BUY","ORDER":3262274114, "ORDER_STATE":"ORDER_STATE_STARTED","ORDER_TYPE":"ORDER_TYPE_BUY","POSITION":0,"POSITION_BY":0, "PRICE":0.00000000,"PRICE_SL":0.00000000,"PRICE_TP":0.00000000,"PRICE_TRIGGER":0.00000000, "SYMBOL":"EURUSD","TIME_EXPIRATION":"1970.01.01 00:00:00","TIME_TYPE":"ORDER_TIME_GTC", "TYPE":"TRADE_TRANSACTION_ORDER_ADD","VOLUME":0.01000000}}Events of type TRADE_TRANSACTION_REQUEST also include TRADE_REQUEST and TRADE_RESULT objects.
Stop streaming
Section titled “Stop streaming”Send an empty list or enabled=false:
curl -X POST "http://127.0.0.1:81/v1/track/prices?symbols="curl -X POST "http://127.0.0.1:81/v1/track/orders?enabled=false"Listening in code
Section titled “Listening in code”const ws = new WebSocket("ws://127.0.0.1:81");ws.onmessage = (e) => { const msg = JSON.parse(e.data); if (msg.MSG === "TRACK_PRICES") console.log(msg.SYMBOL, msg.BID, msg.ASK);};import websocket, json # pip install websocket-clientws = websocket.create_connection("ws://127.0.0.1:81")while True: print(json.loads(ws.recv()))