Websockets
OpenAlgo WebSocket Protocol Documentation
Overview
The OpenAlgo WebSocket protocol allows clients to receive real-time market data using a standardized and broker-agnostic interface. It supports data streaming for LTP (Last Traded Price), Quotes (OHLC + Volume), and Market Depth (up to 50 levels depending on broker capability).
The protocol ensures efficient, scalable, and secure communication between client applications (such as trading bots, dashboards, or analytics tools) and the OpenAlgo platform. Authentication is handled using the OpenAlgo API key, and subscriptions are maintained per session.
Version
Protocol Version: 1.0
Last Updated: May 28, 2025
Platform: OpenAlgo Trading Framework
WebSocket URL
ws://<host>:8765
Replace <host>
with the IP/domain of your OpenAlgo instance. For local development setups, use thee hostname as127.0.0.1
ws://127.0.0.1:8765
In the production ubuntu server if your host is https://yourdomain.com then
WebSocket url will be
wss://yourdomain.com/ws
In the production ubuntu server if your host is https://sub.yourdomain.com then
WebSocket url will be
wss://sub.yourdomain.com/ws
Authentication
All WebSocket sessions must begin with API key authentication:
{
"action": "authenticate",
"api_key": "YOUR_OPENALGO_API_KEY"
}
On success, the server confirms authentication. On failure, the connection is closed or an error message is returned.
Data Modes
Clients can subscribe to different types of market data using the mode
parameter. Each mode corresponds to a specific level of detail:
1
LTP Mode
Last traded price and timestamp only
2
Quote Mode
Includes OHLC, LTP, volume, change, etc.
3
Depth Mode
Includes buy/sell order book (5–50 levels)
Note: Mode 3 supports optional parameter
depth_level
to define the number of depth levels requested (e.g., 5, 20, 30, 50). Actual support depends on the broker.
Subscription Format
Basic Subscription
{
"action": "subscribe",
"symbol": "RELIANCE",
"exchange": "NSE",
"mode": 1
}
Depth Subscription (with levels)
{
"action": "subscribe",
"symbol": "RELIANCE",
"exchange": "NSE",
"mode": 3,
"depth_level": 5
}
Unsubscription
To unsubscribe from a stream:
{
"action": "unsubscribe",
"symbol": "RELIANCE",
"exchange": "NSE",
"mode": 2
}
Error Handling
If a client requests a depth level not supported by their broker:
{
"type": "error",
"code": "UNSUPPORTED_DEPTH_LEVEL",
"message": "Depth level 50 is not supported by broker Angel for exchange NSE",
"symbol": "RELIANCE",
"exchange": "NSE",
"requested_mode": 3,
"requested_depth": 50,
"supported_depths": [5, 20]
}
Market Data Format
LTP (Mode 1)
{
"type": "market_data",
"mode": 1,
"topic": "RELIANCE.NSE",
"data": {
"symbol": "RELIANCE",
"exchange": "NSE",
"ltp": 1424.0,
"timestamp": "2025-05-28T10:30:45.123Z"
}
}
Quote (Mode 2)
{
"type": "market_data",
"mode": 2,
"topic": "RELIANCE.NSE",
"data": {
"symbol": "RELIANCE",
"exchange": "NSE",
"ltp": 1424.0,
"change": 6.0,
"change_percent": 0.42,
"volume": 100000,
"open": 1415.0,
"high": 1432.5,
"low": 1408.0,
"close": 1418.0,
"last_trade_quantity": 50,
"avg_trade_price": 1419.35,
"timestamp": "2025-05-28T10:30:45.123Z"
}
}
Depth (Mode 3 with depth_level = 5)
{
"type": "market_data",
"mode": 3,
"depth_level": 5,
"topic": "RELIANCE.NSE",
"data": {
"symbol": "RELIANCE",
"exchange": "NSE",
"ltp": 1424.0,
"depth": {
"buy": [
{"price": 1423.9, "quantity": 50, "orders": 3},
{"price": 1423.5, "quantity": 35, "orders": 2},
{"price": 1423.0, "quantity": 42, "orders": 4},
{"price": 1422.5, "quantity": 28, "orders": 1},
{"price": 1422.0, "quantity": 33, "orders": 5}
],
"sell": [
{"price": 1424.1, "quantity": 47, "orders": 2},
{"price": 1424.5, "quantity": 39, "orders": 3},
{"price": 1425.0, "quantity": 41, "orders": 4},
{"price": 1425.5, "quantity": 32, "orders": 2},
{"price": 1426.0, "quantity": 30, "orders": 1}
]
},
"timestamp": "2025-05-28T10:30:45.123Z",
"broker_supported": true
}
}
Heartbeat and Reconnection
Server sends
ping
messages every 30 seconds.Clients must respond with
pong
or will be disconnected.Upon reconnection, clients must re-authenticate and re-subscribe to streams.
Proxy may automatically restore prior subscriptions if supported by broker.
Security & Compliance
All clients must authenticate with an API key.
Unauthorized or malformed requests are rejected.
Rate limits may apply to prevent abuse.
TLS encryption recommended for production deployments.
The OpenAlgo WebSocket feed provides a reliable and structured method for receiving real-time trading data. Proper mode selection and parsing allow efficient integration into trading algorithms and monitoring systems.
Last updated