Skip to main content

The official Python client for the Kite Connect trading API

Project description

The Kite Connect API Python client - v4

PyPI Build Status Windows Build Status codecov.io

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.

v5.2 - Auto slice orders

  • Added place_autoslice_order() for placing orders that exceed exchange freeze limits. The order is automatically split into multiple smaller orders internally and the response contains the parent order_id along with a children list, where each child is either a placed order (order_id) or an error payload.

    response = kite.place_autoslice_order(
        variety=kite.VARIETY_REGULAR,
        exchange=kite.EXCHANGE_NFO,
        tradingsymbol="NIFTY25APRFUT",
        transaction_type=kite.TRANSACTION_TYPE_BUY,
        quantity=100000,
        product=kite.PRODUCT_MIS,
        order_type=kite.ORDER_TYPE_MARKET,
    )
    
    parent_order_id = response["order_id"]
    for child in response.get("children", []):
        if "order_id" in child:
            ...  # child placed
        else:
            ...  # child["error"] payload
    

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

# Redirect the user to the login url obtained
# from kite.login_url(), and receive the request_token
# from the registered redirect url after the login flow.
# Once you have the request_token, obtain the access_token
# as follows.

data = kite.generate_session("request_token_here", api_secret="your_secret")
kite.set_access_token(data["access_token"])

# Place an order
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))

# Fetch all orders
kite.orders()

# Get instruments
kite.instruments()

# Place an mutual fund order
kite.place_mf_order(
    tradingsymbol="INF090I01239",
    transaction_type=kite.TRANSACTION_TYPE_BUY,
    amount=5000,
    tag="mytag"
)

# Cancel a mutual fund order
kite.cancel_mf_order(order_id="order_id")

# Get mutual fund instruments
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)

# Initialise
kws = KiteTicker("your_api_key", "your_access_token")

def on_ticks(ws, ticks):
    # Callback to receive ticks.
    logging.debug("Ticks: {}".format(ticks))

def on_connect(ws, response):
    # Callback on successful connect.
    # Subscribe to a list of instrument_tokens (RELIANCE and ACC here).
    ws.subscribe([738561, 5633])

    # Set RELIANCE to tick in `full` mode.
    ws.set_mode(ws.MODE_FULL, [738561])

def on_close(ws, code, reason):
    # On connection close stop the main loop
    # Reconnection will not happen after executing `ws.stop()`
    ws.stop()

# Assign the callbacks.
kws.on_ticks = on_ticks
kws.on_connect = on_connect
kws.on_close = on_close

# Infinite loop on the main thread. Nothing after this will run.
# You have to use the pre-defined callbacks to manage subscriptions.
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

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

kiteconnect-5.2.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

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

kiteconnect-5.2.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file kiteconnect-5.2.0.tar.gz.

File metadata

  • Download URL: kiteconnect-5.2.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kiteconnect-5.2.0.tar.gz
Algorithm Hash digest
SHA256 ed4a9611e1ab69211dce86dc0a08e31d5a5e72a0d44143a4e5457c9610b98beb
MD5 def62d487fa6e4e912546a9868e69e22
BLAKE2b-256 4c627086f37173023e3393c54896b0b34b074267e0a2887ef122ca140c9968ed

See more details on using hashes here.

File details

Details for the file kiteconnect-5.2.0-py3-none-any.whl.

File metadata

  • Download URL: kiteconnect-5.2.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kiteconnect-5.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4601a48355aeeae4ac8857d44f292aef3847351840e0c18aa8f5d3c5afcf92a7
MD5 3706bb97ab4b34a0720d2afa1ee3b161
BLAKE2b-256 e8a5306de933a705fd65b336fda98b5c10a591e04e36aa46559f175bd3431498

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