The Kite Connect API Python client - v4
The official Python client for communicating with the Kite Connect API.
Kite Connect is a set of REST-like APIs that expose many capabilities required to build a complete investment and trading platform. Execute orders in real time, manage user portfolio, stream live market data (WebSockets), and more, with the simple HTTP API collection.
Zerodha Technology (c) 2021. Licensed under the MIT License.
Documentation
v4 - Breaking changes
- Renamed ticker fields as per kite connect doc
- Renamed
bsecds
to bcd
in ticker.EXCHANGE_MAP
v5 - Breaking changes
-
Drop Support for Python 2.7: Starting from version v5, support for Python 2.7 has been discontinued. This decision was made due to the announcement by setup-python
, which stopped supporting Python 2.x since May 2023.
-
For Python 2.x Users: If you are using Python 2.x, you can continue using the kiteconnect
library, but please stick to the <= 4.x.x versions of the library. You can find the previous releases on the PyKiteConnect GitHub Releases page.
Installing the client
You can install the pre release via pip
pip install --upgrade kiteconnect
Its recommended to update setuptools
to latest if you are facing any issue while installing
pip install -U pip setuptools
Since some of the dependencies uses C extensions it has to compiled before installing the package.
Linux, BSD and macOS
- On Linux, and BSDs, you will need a C compiler (such as GCC).
Debian/Ubuntu
apt-get install libffi-dev python-dev python3-dev
Centos/RHEL/Fedora
yum install libffi-devel python3-devel python-devel
macOS/OSx
xcode-select --install
Microsoft Windows
Each Python version uses a specific compiler version (e.g. CPython 2.7 uses Visual C++ 9.0, CPython 3.3 uses Visual C++ 10.0, etc). So, you need to install the compiler version that corresponds to your Python version
For more details check official Python documentation.
API usage
import logging
from kiteconnect import KiteConnect
logging.basicConfig(level=logging.DEBUG)
kite = KiteConnect(api_key="your_api_key")
data = kite.generate_session("request_token_here", api_secret="your_secret")
kite.set_access_token(data["access_token"])
try:
order_id = kite.place_order(tradingsymbol="INFY",
exchange=kite.EXCHANGE_NSE,
transaction_type=kite.TRANSACTION_TYPE_BUY,
quantity=1,
variety=kite.VARIETY_AMO,
order_type=kite.ORDER_TYPE_MARKET,
product=kite.PRODUCT_CNC,
validity=kite.VALIDITY_DAY)
logging.info("Order placed. ID is: {}".format(order_id))
except Exception as e:
logging.info("Order placement failed: {}".format(e.message))
kite.orders()
kite.instruments()
kite.place_mf_order(
tradingsymbol="INF090I01239",
transaction_type=kite.TRANSACTION_TYPE_BUY,
amount=5000,
tag="mytag"
)
kite.cancel_mf_order(order_id="order_id")
kite.mf_instruments()
Refer to the Python client documentation for the complete list of supported methods.
WebSocket usage
import logging
from kiteconnect import KiteTicker
logging.basicConfig(level=logging.DEBUG)
kws = KiteTicker("your_api_key", "your_access_token")
def on_ticks(ws, ticks):
logging.debug("Ticks: {}".format(ticks))
def on_connect(ws, response):
ws.subscribe([738561, 5633])
ws.set_mode(ws.MODE_FULL, [738561])
def on_close(ws, code, reason):
ws.stop()
kws.on_ticks = on_ticks
kws.on_connect = on_connect
kws.on_close = on_close
kws.connect()
Run unit tests
python setup.py test
or
pytest -s tests/unit --cov-report html:cov_html --cov=./
Run integration tests
pytest -s tests/integration/ --cov-report html:cov_html --cov=./ --api-key api_key --access-token access_token
Generate documentation
pip install pdoc
pdoc --html --html-dir docs kiteconnect
Changelog
Check release notes