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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04ccecb5035c8a92c89bbb6a19243050917b63cf1c9c752e7d0ae912dcbd1211
|
|
| MD5 |
aeae19d9bc9789511724ac8eb10dcb65
|
|
| BLAKE2b-256 |
1016b07490543f98d9f01853dd3c90b282b206d5de612f2caf4f65a43933b7c2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15586dc5dd6237da8061b0d384e362948669c9bc45dee1a1e225deafc5c5a176
|
|
| MD5 |
2f4b200b856872f5044cf8590d1aafa4
|
|
| BLAKE2b-256 |
11c37ed3f9ed95fe97313f87fd9d93559aab9d4c01b966d28c36e69c429075b1
|