Real Time Streaming Messages
This API provides real-time order & trade responses via a http://socket.io connection.
ποΈKey Pointsβ
- Only order and trade responses are streamed here.
- All other operations like order placement, modification, portfolio info must use their respective APIs.
- Connection requires fields received from the Login API.
ποΈ How to connectβ
| Step | Description | Sample Code / Details |
|---|
- Connect | Establish a socket connection using
messageSocketURL received from Login API response. |js const io = require("socket.io-client"); <br>let ioClient = io.connect(url, {transports:['websocket']});| | - Authenticate (Login) | Send your
access_token(jToken) to authenticate the connection. |js ioClient.on("connect", () => { <br> let msgLogin = {"jToken": "your_access_token_here"}; <br> ioClient.emit('loginAPI', msgLogin); <br>});| | - Subscribe to Data | Listen to
"MSG:DATA"event to receive real-time order and trade responses. |js ioClient.on("MSG:DATA", (response) => { <br> console.log('Received:', response); <br>});| | - Handle Disconnect | Detect disconnections and handle errors gracefully. |
js ioClient.on("disconnect", (err) => { <br> console.log("Disconnected:", err); <br>});|
β οΈImportant Noteβ
- Use
"MessageType"in the response to differentiate message types:"ORD_NRML"= Order Response"TRD_MSG"= Trade Response
π§ΎOrder Response Structure (Key Fields)β
| Parameter | Type | Description |
|---|---|---|
| AMOOrderID | String | Order ID for AMO/ EqGTD orders, else blank |
| Buy_Sell | String | 1 = Buy, 2 = Sell |
| CP_ID | String | |
| CliOrderNumber | Integer | Client order number (system generated) |
| DQ | Integer | Disclose quantity. Specifies the quantity that has to be disclosed to the market e.g 2500 |
| DQ Remaining | Integer | Disclose quantity remaining |
| Days | String | Number of Days |
| Exchange | String | Exchange for which order is to be placed |
| ExpiryDate | String | Expiry date (for Futures/Options) |
| GTD Order Status | Integer | GTD Order status |
| InitiatedBy | String | Initiated from Application |
| InitiatedByUserID | String | Initiated from User id |
| InstrumentName | String | Instrument name provided in security information.Valid values are given belowEquity = blankFuture Index = FUTIDXInterest Rate Future = FUTINTFuture Stock = FUTSTKOption Index = OPTIDXOption Stock = OPTSTKMCX/NCDEX Futures = FUTCOMMCXSpot = COMNCDEXSpot = COMDTYNSE Currency Future = FUTCUR, FUTIRD, FUTIRT, OPTCURNSE Currency Spot = INDEX, UNDCUR, UNDIRD, UNDIRT |
| LastModifiedTime | Date Time | Time when order was confirmed |
| LegIndicator | String | Blank Value |
| ManagerID | String | Manager ID |
| MarketType | Integer | Normal = 1Auction = 2PreOpen = 3 |
| MessageSequenceNumber | String | Running Message Sequence Number. For order's latest status always consider max sequence number. |
| MessageType | String | ORD_NRML |
| ModifiedBy | String | Modified by application |
| ModifiedByUserID | String | Modified by user id |
| Option_Type | String | Option Type. Applicable for options only. |
| OrderEntryTime | Date Time | Date and Time will be in 24 Hour Format e.g.: 15Jun2019 15.25.15 |
| OrderNumber | String | For order entry request must be 0. In case of Modification/Cancellation request, this needs to be filled before sending. |
| OrderOriginalQty | Integer | Total quantity of the order |
| OrderPrice | Integer | Price in paise |
| OrderStatus | Integer | Current Order Status |
| OrderType | Integer | Order type |
| OrderValidity | String | Order validity type |
| PartCode | String | Participant ID |
| PendingQty | Integer | Quantity pending to be executed |
| ProCli | String | 2 β Pro1 β Client |
| Product | String | Product type |
| Reason | String | Reason for rejection (if any) |
| ScripCode | String | Scrip code |
| Series | String | Exchange provide security series |
| Spread Flag | Integer | Normal Order = 0Spread Order = 1 |
| SpreadPrice | Integer | Spread Price |
| StrikePrice | Integer | Exchange provided Strike price (in multiples of 100). Applicable only for options. |
| Symbol | String | Security symbol |
| TradedQTY | String | Quantity traded so far |
| UCC | String | Alias UCC Code |
| UniqueCode | String | Alphanumeric value with special characters |
| UserID | String | Exchange UserID |
| UserRemarks | String | User Remarks |
Order response sample:
{
β β β β "AMOOrderID":"",
β β β β "Buy_Sell":"1",
β β β β "CP_ID":"",
β β β β "CliOrderNumber":3,
β β β β "DQ":0,
β β β β "DQRemaining":0,
β β β β "Days":"0",
β β β β "Exchange":"2",
β β β β "ExpiryDate":"30Jun2022",
β β β β "GTDOrderStatus":0,
β β β β "InitiatedBy":"WAVE_MOBILE",
β β β β "InitiatedByUserId":"DEMO31",
β β β β "InstrumentName":"FUTIDX",
β β β β "LastModifiedTime":"14-Jun-2022 11.54.30",
β β β β "LegIndicator":"",
β β β β "ManagerID":"6",
β β β β "MarketType":1,
β β β β "MessageSequenceNumber":"10221640000017828",
β β β β "MessageType":"ORD_NRML",
β β β β "Misc":"",
β β β β "ModifiedBy":"WAVE_MOBILE",
β β β β "ModifiedByUserId":"DEMO31",
β β β β "Option_Type":"XX",
β β β β "OrderEntryTime":"14-Jun-2022 11.54.30",
β β β β "OrderNumber":"1000000000004051",
β β β β "OrderOriginalQty":50,
β β β β "OrderPrice":1583890,
β β β β "OrderStatus":5,
β β β β "OrderType":1,
β β β β "OrderValidity":"1",
β β β β "PartCode":"FTIL",
β β β β "PendingQty":50,
β β β β "ProCli":"1",
β β β β "Product":"M",
β β β β "Reason":"",
β β β β "ScripCode":"56734",
β β β β "Series":"XX",
β β β β "SpreadFlag":0,
β β β β "SpreadPrice":0,
β β β β "StrikePrice":-1,
β β β β "Symbol":"NIFTY",
β β β β "TradedQTY":"0",
β β β β "TriggerPrice":0,
β β β β "UCC":"DEMO31",
β β β β "UniqueCode":"NXWAD00003>6",
β β β β "UserID":"46016",
β β β β "UserRemarks":"1339674869"
}
πTrade Response Structure (Key Fields)β
| Parameter | Type | Description |
|---|---|---|
Buy_Sell | String | Order side: 1= Buy, 2= Sell |
CP_ID | String | Client Partner ID (if applicable) |
CliOrderNumber | Integer | Client/Gateway Order Number (system-generated) |
DQ | String | Disclosed quantity sent to market (e.g., 2500) |
DQRemaining | String | Remaining disclosed quantity |
Days | Integer | Number of days for GTD/Validity |
Exchange | Integer | Exchange ID: e.g., 1for NSE, 2for BSE, etc. |
ExpiryDate | String | Contract expiry (for F&O). Format: DDMMMYYYYe.g., 24JUN2024 |
InitiatedBy | String | Source of trade (e.g., WAVE_MOBILE, API) |
InitiatedByUserId | String | User ID that initiated the order |
InstrumentName | String | Instrument type (e.g., FUTIDX, OPTSTK, COM, etc.) |
LegIndicator | String | Indicates leg of strategy orders. Usually blank |
ManagerID | Integer | Manager/Broker ID |
MessageSequenceNumber | Integer | Sequence number for streaming messages |
MessageType | String | Message type = "TRD_MSG"(Trade Message) |
Misc | String | Order type context (e.g., PO-LMT, SPO-MKT, etc.) |
ModifiedBy | String | App or platform that last modified the order |
ModifiedByUserId | String | User ID that last modified the order |
Option_Type | String | Option type: CE/PE(if applicable) |
OrderLastModifiedTime | DateTime | Last time the order was modified |
OrderNumber | String | Unique order number (used for tracking) |
OrderOriginalQty | Integer | Original order quantity |
OrderPrice | Integer | Order price in paise(e.g., 146000= βΉ1460.00) |
OrderTime | DateTime | Order placement time |
OrderType | Integer | Type of order (1 = Regular, 2 = SL, etc.) |
PartCode | String | Participant/Broker ID |
PendingQty | String | Quantity still pending in the order |
ProCli | String | 1= Client, 2= Pro |
Product | String | Product type |
QuantityTradedToday | Integer | Total traded quantity today (including this one) |
ScripCode | Integer | Scrip code (used internally or by exchange) |
Series | String | Security series (e.g., EQ, BE) |
SpreadFlag | Integer | 0= Normal order, 1= Spread order |
SpreadPrice | Integer | Spread price value |
StrikePrice | Integer | Strike price (for options), in multiples of 100 |
Symbol | String | Security symbol (e.g., INFY, NIFTY) |
TradeNumber | String | Unique trade ID |
TradeQty | String | Quantity executed in this trade |
TradeTime | DateTime | Time of execution (24-hour format) |
TradedPrice | String | Trade price in paise(e.g., 146000= βΉ1460.00) |
UCC | String | User's UCC (Unique Client Code) |
UniqueCode | String | Unique internal reference (alphanumeric) |
UserID | String | Exchange/OMS User ID |
UserRemarks | String | Remarks added by user or system |
- Prices are in paise (multiply by 0.01 to get INR).
- Option types and strike price fields are applicable only for options.
InstrumentNametells you what kind of security was traded.
π§Trade Response Sample:β
{
β β β β Buy_Sell":"2",
β β β β "CP_ID":"",
β β β β "CliOrderNumber":11,
β β β β "DQ":"0",
β β β β "DQRemaining":"0",
β β β β "Days":0,
β β β β "Exchange":1,
β β β β "ExpiryDate":"",
β β β β "InitiatedBy":"WAVE_MOBILE",
β β β β "InitiatedByUserId":"DEMO31",
β β β β "InstrumentName":"",
β β β β "LegIndicator":"",
β β β β "ManagerID":6,
β β β β "MessageSequenceNumber":10221640000024290,
β β β β "MessageType":"TRD_MSG",
β β β β "Misc":"",
β β β β "ModifiedBy":"WAVE_MOBILE",
β β β β "ModifiedByUserId":"DEMO31",
β β β β "Option_Type":"",
β β β β "OrderLastModifiedTime":"14-Jun-2022 14.03.58",
β β β β "OrderNumber":"1100000000085242",
β β β β "OrderOriginalQty":1,
β β β β "OrderPrice":146000,
β β β β "OrderTime":"14-Jun-2022 14.03.58",
β β β β "OrderType":1,
β β β β "PartCode":"FTIL",
β β β β "PendingQty":"0",
β β β β "ProCli":"1",
β β β β "Product":"M",
β β β β "QuantityTradedToday":1,
β β β β "ScripCode":1594,
β β β β "Series":"EQ",
β β β β "SpreadFlag":0,
β β β β "SpreadPrice":0,
β β β β "StrikePrice":0,
β β β β "Symbol":"INFY",
β β β β "TradeNumber":"50024851",
β β β β "TradeQty":"1",
β β β β "TradeTime":"14-Jun-2022 14.03.58",
β β β β "TradedPrice":"146000",
β β β β "UCC":"DEMO31",
β β β β "UniqueCode":"NXWAD00011>6",
β β β β "UserID":"37652",
β β β β "UserRemarks":"1339682638"
}