Skip to main content

Firstock Developer SDK for Python

Project description

Firstock Connect API Python Client

The official Python library for the Firstock Connect API, providing a seamless interaction with Firstock's trading and financial data services. This library has been designed for developers to easily integrate Firstock's advanced trading capabilities into their Python applications.

Features

  • HTTP calls are converted to methods.
  • JSON responses are wrapped into Python-compatible objects.
  • The handling of WebSocket connections is automated.

Installation

This module is installed via pip:

pip install firstock

Getting started with API

The API consists of five major section

  • Login & Profile
  • Orders & Report
  • Market Connect

Login

For the Login process we require to generate the appkey and vendor code by logging in with the firstock credentials in the give link Key Generation.

from firstock import firstock

login = firstock.login(
    userId="{{userID}}",
    password="{{Password}}",
    TOTP="{{TOTP}}",
    vendorCode="{{vendorCode}}",
    apiKey="{{apiKey}}",
  )

Logout

from firstock import firstock

logout = firstock.logout(userId="{{userId}}")

User Details

from firstock import firstock

userDetails = firstock.userDetails(userId="{{userId}}")

Place Order

from firstock import firstock

placeOrder = firstock.placeOrder(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="ITC-EQ",
    quantity="1",
    price="300",
    product="I",
    transactionType="B",
    priceType="LMT",
    retention="DAY",
    triggerPrice="0",
    remarks="Python Package Order"
)

Order Margin

from firstock import firstock

orderMargin = firstock.orderMargin(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="ITC-EQ",
    quantity="1",
    priceType="LMT",
    product="C",
    price="350",
    transactionType="B"
)

Order Book

from firstock import firstock

orderBook = firstock.orderBook(userId="{{userId}}")

Cancel Order

from firstock import firstock

cancelOrder = firstock.cancelOrder(
    userId="{{userId}}",
    orderNumber="25063000011862"
)

Modify Order

from firstock import firstock

modifyOrder = firstock.modifyOrder(
    userId="{{userId}}",
    orderNumber="25070100015934",
    quantity="1",
    price="418",
    triggerPrice="0",
    tradingSymbol="IDEA-EQ",
    priceType="LMT",
    retention="DAY",
    mkt_protection="0.5",
    product="C"
)

Single Order History

from firstock import firstock

singleOrderHistory = firstock.singleOrderHistory(
    userId="{{userId}}",
    orderNumber="25063000011911"
)

Trade Book

from firstock import firstock

tradeBook = firstock.tradeBook(userId="{{userId}}")

Position Book

from firstock import firstock

positionBook = firstock.positionBook(userId="{{userId}}")

Convert Product

from firstock import firstock

convertProduct = firstock.productConversion(
    userId="{{userId}}",
    transactionType="B",
    tradingSymbol="ITC-EQ",
    quantity="1",
    product="C",
    previousProduct="I",
    positionType="DAY",
    exchange="NSE"
)

Holdings

from firstock import firstock

holdings = firstock.holdings(userId="{{userId}}")

Limits

from firstock import firstock

limits = firstock.limit(userId="{{userId}}")

Basket Margin

from firstock import firstock

basketMargin = firstock.basketMargin(
    userId="{{userId}}",
    exchange="NSE",
    transactionType="B",
    product="C",
    tradingSymbol="RELIANCE-EQ",
    quantity="1",
    priceType="MKT",
    price="0",
    BasketList_Params=[
        {
            "exchange": "NSE",
            "tradingSymbol": "IDEA-EQ",
            "quantity": "1",
            "transactionType": "B",
            "price": "0",
            "product": "C",
            "priceType": "MKT"
        }
    ]
)

Get Security Info

from firstock import firstock

getSecurityInfo = firstock.securityInfo(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="NIFTY"
)

Get Quote

from firstock import firstock

getQuotes = firstock.getQuote(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="NIFTY"
)

Get Index List

from firstock import firstock

getIndexList = firstock.indexList(userId="{{userId}}")

Option Chain

from firstock import firstock

optionChain = firstock.optionChain(
    userId="{{userId}}",
    exchange="NFO",
    symbol="NIFTY",
    strikePrice="23150",
    expiry="03JUL25",
    count="5"
)

Option Chain Greeks

from firstock import firstock

optionChainGreeks = firstock.optionChainGreeks(
    userId=userId,
    exchange="",
    symbol="",
    expiry="",
    count="",
    strikePrice=""
)

Search Scrips

from firstock import firstock

searchScrips = firstock.searchScrips(
    userId="{{userId}}",
    stext="ITC"
)

Get Quote LTP

from firstock import firstock

getQuoteLtp = firstock.getQuoteltp(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="RELIANCE-EQ"
)

Get Multi Quote

from firstock import firstock

multiQuote = firstock.getMultiQuotes(
    userId="{{userId}}",
    dataToken=[
        {
            "exchange": "NSE",
            "tradingSymbol": "Nifty 50"
        },
        {
            "exchange": "NFO",
            "tradingSymbol": "NIFTY03APR25C23500"
        }
    ]
)

Get Multi Quote LTP

from firstock import firstock

multiQuoteLtp = firstock.getMultiQuotesltp(
    userId="{{userId}}",
    dataToken=[
        {
            "exchange": "NSE",
            "tradingSymbol": "Nifty 50"
        },
        {
            "exchange": "NSE",
            "tradingSymbol": "Nifty Bank"
        }
    ]
)

Brokerage Calculator

from firstock import firstock

brokerageCalc = firstock.brokerageCalculator(
    userId="{{userId}}",
    exchange="NFO",
    tradingSymbol="RELIANCE27FEB25F",
    transactionType="B",
    product="M",
    quantity="500",
    price="125930",
    strike_price="0",
    inst_name="FUTSTK",
    lot_size="1"
)

Get Expiry

from firstock import firstock

getExpiry = firstock.getExpiry(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="NIFTY"
)

Time Price Series

from firstock import firstock

timePriceSeries = firstock.TimePriceSeries(
    userId="{{userId}}",
    exchange="NSE",
    tradingSymbol="Nifty 50",
    startTime="13/02/2023 09:45:45",
    endTime="13/12/2023 13:56:34",
    interval="30"
)

Get Holdings Details

from firstock import firstock

holdings_details = firstock.getHoldingsDetails(
    userId="{{userId}}"
)

Place Gtt order

from firstock import firstock
 
place_gtt = firstock.placeGtt(
    userId={{userId}},
    jKey={{Jkey}},
    tradingSymbol="IDEA-EQ",
    exchange="NSE",
    validity="GTT",
    value="8.15",
    remarks="GTT",
    OrderParams={
        "exchange": "NSE",
        "retention": "DAY",
        "product": "C",
        "priceType": "SL-LMT",
        "tradingSymbol": "IDEA-EQ",
        "transactionType": "B",
        "price": "8.90",
        "triggerPrice": "8.15",
        "quantity": "10",
        "remarks": "Test"
    }
)

Modify Gtt order

from firstock import firstock
 
modifyGtt = firstock.modifyGtt(
    userId={{userId}},
    jKey={{jkey}},
    tradingSymbol="IDEA-EQ",
    exchange="NSE",
    validity="GTT",
    GTTid="26032500000094",
    remarks="GTT",
    OrderParams={
        "exchange": "NSE",
        "retention": "DAY",
        "product": "C",
        "priceType": "SL-LMT",
        "tradingSymbol": "IDEA-EQ",
        "transactionType": "B",
        "price": "8.90",
        "triggerPrice": "8.27",
        "quantity": "10",
        "remarks": "Test"
    }
)

Cancel Gtt order

from firstock import firstock

cancel_gtt = firstock.cancelGtt(
    userId={{userId}},
    jKey={{jkey}},
    GTTid="26032500000008"
)

Gtt order book

from firstock import firstock
 
gtt_orders  = firstock.getGtt(
    userId={{userId}},
    jKey={{jkey}}
)

Place AMO

from firstock import firstock

placeAMO = firstock.placeAMO(
    userId=userId,
    exchange="",
    tradingSymbol="",
    quantity="",
    price="",
    product="",
    transactionType="",
    priceType="",
    retention="",
    triggerPrice="",
    remarks=""
)

Modify AMO

from firstock import firstock

modifyAMO = firstock.modifyAMO(
    userId=userId,
    orderNumber="",
    quantity="",
    price="",
    priceType="",
    product="",
    triggerPrice=""
)

Refer to the Firstock Connect Documentation for the complete list of supported methods.

Changelog

  • The Python package has been updated to automatically convert passwords into SHA256 hashes prior to submission to the login URL.

  • The package now includes a multi-login feature, enabling simultaneous login for multiple users, with each user's session being individually stored.

  • For all APIs, it is now required to pass the userId. The corresponding jKey session linked to the userId will be utilized for executing the API.

  • The following methods have been updated to require trading symbols instead of tokens:

    • Get Multi Quotes LTP
    • Get Multi Quotes
    • Day Interval Time Price Series
    • Time Price Series
    • Security Info
    • Get Quotes
  • The method for accessing the websocket has been entirely revamped. Detailed information will be available in an upcoming blog post. Additionally, sample code illustrating the new method can be found in the examples section.

[1.1.3] - 2026-01-31

Changed

  • Minor version bump for compatibility updates.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firstock-1.1.11.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firstock-1.1.11-py3-none-any.whl (112.6 kB view details)

Uploaded Python 3

File details

Details for the file firstock-1.1.11.tar.gz.

File metadata

  • Download URL: firstock-1.1.11.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for firstock-1.1.11.tar.gz
Algorithm Hash digest
SHA256 04ccecb5035c8a92c89bbb6a19243050917b63cf1c9c752e7d0ae912dcbd1211
MD5 aeae19d9bc9789511724ac8eb10dcb65
BLAKE2b-256 1016b07490543f98d9f01853dd3c90b282b206d5de612f2caf4f65a43933b7c2

See more details on using hashes here.

File details

Details for the file firstock-1.1.11-py3-none-any.whl.

File metadata

  • Download URL: firstock-1.1.11-py3-none-any.whl
  • Upload date:
  • Size: 112.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for firstock-1.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 15586dc5dd6237da8061b0d384e362948669c9bc45dee1a1e225deafc5c5a176
MD5 2f4b200b856872f5044cf8590d1aafa4
BLAKE2b-256 11c37ed3f9ed95fe97313f87fd9d93559aab9d4c01b966d28c36e69c429075b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page