
Product
Introducing Reports: An Extensible Reporting Framework for Socket Data
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.
fyers-api-v3
Advanced tools
The official Javascript node client for communicating with the Fyers API
Install via npm
npm install fyers-api-v3@latest
v3 is a breaking major release with multiple internal modification to improve user experience.
Below are the breaking changes:
var fyersModel= require("fyers-api-v3").fyersModel
var fyers= new fyersModel({"path":"path where you want to save logs","enableLogging":true})
fyers.setAppId("xxxxx-xxx")
fyers.setRedirectUrl("Redirect URL here")
var URL=fyers.generateAuthCode()
//use url to generate auth code
console.log(URL)
var authcode="authcode generated above"
fyers.generate_access_token({"client_id":"APPID","secret_key":"secret","auth_code":authcode}).then((response)=>{
if(response.s=='ok'){
fyers.setAccessToken(response.access_token)
}else{
console.log("error generating access token",response)
}
})
fyers.get_profile().then((response)=>{
console.log(response)
}).catch((err)=>{
console.log(err)
})
fyers.getQuotes(["NSE:SBIN-EQ","NSE:TCS-EQ"]).then((response)=>{
console.log(response)
}).catch((err)=>{
console.log(err)
})
fyers.getMarketDepth({"symbol":["NSE:SBIN-EQ","NSE:TCS-EQ"],"ohlcv_flag":1}).then((response)=>{
console.log(response)
}).catch((err)=>{
console.log(err)
})
All API calls returns a promise which you can use to call methods like .then(...) and .catch(...).
FyersApiCall
.then(function (v) {
// On success
})
.catch(function (e) {
// On rejected
});
var fyersOrderSocket= require("fyers-api-v3").fyersOrderSocket
var skt=new fyersOrderSocket("Acesstoken in format APPID:Accesstoken",
"path to where you want to save logs",
true/*flag to enable disable logging*/)
skt.on("error",function (errmsg) {
console.log(errmsg)
})
skt.on('others',function (msg) {
console.log(msg)
})
skt.on('connect',function () {
skt.subscribe([skt.orderUpdates,skt.tradeUpdates,skt.positionUpdates,
skt.edis,skt.pricealerts])
console.log(skt.isConnected())
})
skt.on('close',function () {
console.log('closed')
})
skt.on('orders',function (msg) {
console.log("orders",msg)
skt.close()
})
skt.on('trades',function (msg) {
console.log('trades',msg)
})
skt.on('positions',function (msg) {
console.log('positions',msg)
})
skt.connect()
let DataSocket = require("fyers-api-v3").fyersDataSocket;
var skt= DataSocket.getInstance("Accesstoken in format APPID:AccessToken",
"path where to save logs",true/*flag to enable disable logging*/)
skt.on("connect",function(){
skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"])
//subscribing for market depth data if need of market depth comes as a diffrent tick
skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"],true)
//to start lite mode to get fewer data like ltp change
skt.mode(skt.LiteMode)
//to revert back to full mode
// skt.mode(skt.FullMode)
})
skt.on("message",function(message){
console.log({"TEST":message})
})
skt.on("error",function(message){
console.log("erroris",message)
})
skt.on("close",function(){
console.log("socket closed")
})
skt.connect()
Optionally you can enable client side auto re-connection to automatically reconnect if the connection is dropped.
All you need to do is enable auto re-connection. For example
// Enable auto reconnect mechanism with retry count as passed with max allowed upto 50.
skt.autoReconnect(6);
This includes following APIs: createPriceAlert, getPriceAlert, modifyPriceAlert, deletePriceAlert, togglePriceAlert
var data = {
"agent": "fyers-api",
"alert-type": 1,
"name": "gold alert",
"symbol": "NSE:GOLDBEES-EQ",
"comparisonType": "LTP",
"condition": "GT",
"value": "9888",
"notes": " iji"
}
fyers.createPriceAlert(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Get all active alerts
fyers.getPriceAlert().then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Get archived alerts
var data = {"archive": "1"}
fyers.getPriceAlert(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"alertId": "6249977",
"agent": "fyers-api",
"alert-type": 1,
"name": "goldy bees",
"symbol": "NSE:GOLDBEES-EQ",
"comparisonType": "OPEN",
"condition": "GT",
"value": "10000.00676766767676676667"
}
fyers.modifyPriceAlert(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"alertId": "6131416", "agent": "fyers-api"}
fyers.deletePriceAlert(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"alertId": "3870991"}
fyers.togglePriceAlert(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
This includes following APIs: createSmartOrderStep, createSmartOrderLimit, createSmartOrderTrail, createSmartOrderSIP, modifySmartOrder, cancelSmartOrder, pauseSmartOrder, resumeSmartOrder, getSmartOrderBookWithFilter
Smart orders support different flow types: step, limit, trail, sip
var data = {
"symbol": "NSE:SBIN-EQ",
"qty": 10,
"type": 1,
"side": 1,
"productType": "INTRADAY",
"limitPrice": 600.00,
"stopPrice": 0,
"validity": "DAY",
"disclosedQty": 0,
"offlineOrder": false
}
fyers.createSmartOrderStep(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"symbol": "NSE:SBIN-EQ",
"qty": 10,
"type": 1,
"side": 1,
"productType": "INTRADAY",
"limitPrice": 600.00,
"stopPrice": 0,
"validity": "DAY",
"disclosedQty": 0,
"offlineOrder": false
}
fyers.createSmartOrderLimit(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"symbol": "NSE:SBIN-EQ",
"qty": 10,
"type": 1,
"side": 1,
"productType": "INTRADAY",
"limitPrice": 600.00,
"stopPrice": 0,
"validity": "DAY",
"disclosedQty": 0,
"offlineOrder": false
}
fyers.createSmartOrderTrail(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"symbol": "NSE:SBIN-EQ",
"qty": 10,
"type": 1,
"side": 1,
"productType": "CNC",
"limitPrice": 600.00,
"stopPrice": 0,
"validity": "DAY",
"disclosedQty": 0,
"offlineOrder": false
}
fyers.createSmartOrderSIP(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"flowId": "123456789",
"limitPrice": 610.00,
"qty": 15
}
fyers.modifySmartOrder(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"flowId": "123456789"}
fyers.cancelSmartOrder(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"flowId": "123456789"}
fyers.pauseSmartOrder(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"flowId": "123456789"}
fyers.resumeSmartOrder(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Get all smart orders
fyers.getSmartOrderBookWithFilter().then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Get filtered smart orders
// Filter by side (1 for Buy, -1 for Sell)
var data = {"side": [1]}
fyers.getSmartOrderBookWithFilter(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Filter by multiple parameters
var data = {
"exchange": ["NSE"],
"side": [1, -1],
"flowtype": [1, 2],
"product": ["CNC", "INTRADAY"],
"messageType": [1, 2],
"search": "SBIN",
"sort_by": "CreatedTime",
"ord_by": 1,
"page_no": 1,
"page_size": 15
}
fyers.getSmartOrderBookWithFilter(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
This includes following APIs: createSmartExitTrigger, getSmartExitTrigger, updateSmartExitTrigger, activateDeactivateSmartExitTrigger
// Type 1: Only Alert (notification only, no auto-exit)
var data = {
"name": "Alert Only Strategy",
"type": 1,
"profitRate": 5000,
"lossRate": -2000
}
fyers.createSmartExitTrigger(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Type 2: Exit with Alert (notification + immediate exit)
var data = {
"name": "Auto Exit Strategy",
"type": 2,
"profitRate": 5000,
"lossRate": -2000
}
fyers.createSmartExitTrigger(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Type 3: Exit with Alert + Wait for Recovery (notification + delayed exit)
var data = {
"name": "Recovery Exit Strategy",
"type": 3,
"profitRate": 10000,
"lossRate": -3000,
"waitTime": 5
}
fyers.createSmartExitTrigger(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
// Get all smart exit triggers
fyers.getSmartExitTrigger().then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {
"flowId": "123456789",
"triggerPrice": 610.00,
"stopLoss": 600.00,
"takeProfit": 630.00
}
fyers.updateSmartExitTrigger(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = {"flowId": "123456789"}
fyers.activateDeactivateSmartExitTrigger(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
var data = { "symbol": "NSE:IDEA-EQ"}
fyers.get_order_history(data).then((response) => {
console.log(response)
}).catch((error) => {
console.log(error)
})
FAQs
connect to fyers API
The npm package fyers-api-v3 receives a total of 459 weekly downloads. As such, fyers-api-v3 popularity was classified as not popular.
We found that fyers-api-v3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.