Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

fyers-api-v3

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fyers-api-v3

connect to fyers API

latest
Source
npmnpm
Version
1.8.0
Version published
Weekly downloads
666
-6.98%
Maintainers
1
Weekly downloads
 
Created
Source

The Fyers API Javascript client - v3

The official Javascript node client for communicating with the Fyers API

Documentation

Requirements

  • NodeJS v12.0.0+

Installation

Install via npm

npm install fyers-api-v3@latest

Breaking changes - v3

v3 is a breaking major release with multiple internal modification to improve user experience.

Below are the breaking changes:

  • websocket output format have changed completely

Getting started with API

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)
})

API promises

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
  });

Getting started order WebSocket

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()

Getting started data WebSocket

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()

Auto re-connect WebSocket client

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);

Price Alerts

This includes following APIs: createPriceAlert, getPriceAlert, modifyPriceAlert, deletePriceAlert, togglePriceAlert

Create Price Alert

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 Price Alerts

// 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)
})

Update Price Alert

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)
})

Delete Price Alert

var data = {"alertId": "6131416", "agent": "fyers-api"}

fyers.deletePriceAlert(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Toggle Price Alert (Enable/Disable)

var data = {"alertId": "3870991"}

fyers.togglePriceAlert(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Smart Orders

This includes following APIs: createSmartOrderStep, createSmartOrderLimit, createSmartOrderTrail, createSmartOrderSIP, modifySmartOrder, cancelSmartOrder, pauseSmartOrder, resumeSmartOrder, getSmartOrderBookWithFilter

Smart orders support different flow types: step, limit, trail, sip

Create Smart Order - Step

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)
})

Create Smart Order - Limit

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)
})

Create Smart Order - Trail

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)
})

Create Smart Order - SIP

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)
})

Modify Smart Order

var data = {
    "flowId": "123456789",
    "limitPrice": 610.00,
    "qty": 15
}

fyers.modifySmartOrder(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Cancel Smart Order

var data = {"flowId": "123456789"}

fyers.cancelSmartOrder(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Pause Smart Order

var data = {"flowId": "123456789"}

fyers.pauseSmartOrder(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Resume Smart Order

var data = {"flowId": "123456789"}

fyers.resumeSmartOrder(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Get Smart Order Book with Filter

// 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)
})

Smart Exit Triggers

This includes following APIs: createSmartExitTrigger, getSmartExitTrigger, updateSmartExitTrigger, activateDeactivateSmartExitTrigger

Create Smart Exit Trigger

// 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 Smart Exit Triggers

// Get all smart exit triggers
fyers.getSmartExitTrigger().then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Update Smart Exit Trigger

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)
})

Activate Smart Exit Trigger

var data = {"flowId": "123456789"}

fyers.activateDeactivateSmartExitTrigger(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

Order history

var data = { "symbol": "NSE:IDEA-EQ"}

fyers.get_order_history(data).then((response) => {
    console.log(response)
}).catch((error) => {
    console.log(error)
})

FAQs

Package last updated on 13 Apr 2026

Did you know?

Socket

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.

Install

Related posts