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.9.tar.gz (33.5 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.9-py3-none-any.whl (108.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: firstock-1.1.9.tar.gz
  • Upload date:
  • Size: 33.5 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.9.tar.gz
Algorithm Hash digest
SHA256 e82b3be784ede228181040cea18d9a2b4c8c34f25fa567e40014c2c55754061e
MD5 591e8e5f4d8884a29e53b7cf2d7650de
BLAKE2b-256 f04e8c86c357dbb5ca91e222274b303c74f00f73059b3e9bce5a16523eea0440

See more details on using hashes here.

File details

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

File metadata

  • Download URL: firstock-1.1.9-py3-none-any.whl
  • Upload date:
  • Size: 108.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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 98d97856e64311b1ae6a667c6681b71a5060718f674e66ec0ac7ac0c1c736565
MD5 96d547efd753d3528b151eaffed6b064
BLAKE2b-256 7084dcd8a9c9a0910cc45b87962edfb33652d8a75e84c9dfc902df24889942ab

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