A lightweight automation tool to securely and quickly log in to your Upstox account.
Project description
Upstox Auto Login
A Python package to automate the Upstox API v2 login flow handling the complete OAuth2 process to retrieve an access_token.
Security Disclaimer
This package handles sensitive credentials (API keys, PIN, TOTP secret).
Storing credentials as plaintext is a major security risk. It is highly recommended to:
- Use environment variables or a secret manager.
- Avoid sharing your credentials in public repositories. This tool is intended for personal use in secure environments only.
How It Works
The tool:
- Launches a headless Chrome browser.
- Automates the login by entering your User ID, TOTP, and PIN.
- Captures the authorization code after successful login.
- Exchanges it for an access_token via the Upstox OAuth2 flow.
- Closes the browser automatically.
You can then use the returned access_token in your Upstox API client.
Prerequisites
Before using this package, make sure you have:
-
Python 3.10+
-
Google Chrome (latest version)
-
An Upstox Developer App with:
-
API_KEY -
SECRET_KEY -
Configured
redirect_url
Installation
pip install upstox-auto-login
Usage
The main function provided is auto_login() — it automates the entire login flow.
Function Parameters
| Parameter | Type | Description |
|---|---|---|
API_KEY |
str |
Your Upstox API Key |
SECRET_KEY |
str |
Your Upstox Secret Key |
USER_ID |
str |
Your 10-digit Upstox mobile number |
PIN |
str |
Your 6-digit Upstox trading PIN |
TOTP_SECRET |
str |
Your authentication secret (TOTP secret key) from the authenticator app used for 2FA |
redirect_url |
str |
(Optional) Redirect URI (default: https://127.0.0.1:5000/) |
Example
from upstox_auto_login import auto_login
import os
import logging
# Recommended: Load credentials from environment variables
# API_KEY = os.getenv("UPSTOX_API_KEY")
# Configure logging to track the login process
logging.basicConfig(level=logging.INFO)
try:
# Call the auto_login function
access_token = auto_login(
API_KEY="your_api_key",
SECRET_KEY="your_secret_key",
USER_ID="your_10_digit_mobile_number",
PIN="your_6_digit_pin",
TOTP_SECRET="your_totp_secret_key",
redirect_url = "https://127.0.0.1:5000/"
)
if access_token:
print(f"Success! Access Token: {access_token}")
# Use this token with your Upstox API client or other SDK functions
else:
print("Login failed. Check logs for details.")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Retrive All orders
access_token = access_token
url = "https://api.upstox.com/v2/order/retrieve-all"
url = "https://api-sandbox.upstox.com/v2/order/retrieve-all" # for Sandbox api use this urls
orders = get_all_orders(access_token, url)
print(orders)
Exit All orders
access_token = access_token
url = 'https://api.upstox.com/v2/order/positions/exit'
url = "https://api-sandbox.upstox.com/v2order/positions/exit" # for Sandbox api use this urls
res = exit_orders(access_token)
print(res)
Using Upstox SDK After Auto Login
You can now use the Upstox SDK to access trading, market data, and portfolio features.
Install Upstox SDK
pip install upstox-python-sdk
# You may need root permission:
sudo pip install upstox-python-sdk
Import and Set Up SDK
import upstox_client
# Configuration for sandbox mode
configuration = upstox_client.Configuration(sandbox=True)
configuration.access_token = '<SANDBOX_ACCESS_TOKEN>'
api_instance = upstox_client.OrderApiV3(upstox_client.ApiClient(configuration))
Place an Order Example
body = upstox_client.PlaceOrderV3Request(
quantity=1, product="D", validity="DAY", price=9.12, tag="string",
instrument_token="NSE_EQ|INE669E01016", order_type="LIMIT",
transaction_type="BUY", disclosed_quantity=0, trigger_price=0.0, is_amo=True, slice=True
)
try:
api_response = api_instance.place_order(body)
print(api_response)
except upstox_client.rest.ApiException as e:
print("Exception when calling OrderApi->place_order: %s\n" % e)
Algo ID Support
api_response = api_instance.place_order(body, algo_id="your-algo-id")
Other order methods (modify, cancel, etc.) accept an optional algo_id.
Websocket Market & Portfolio Data
MarketDataStreamerV3→ Real-time market updatesPortfolioDataStreamer→ Real-time order, position, holding, and GTT updates
Example:
import upstox_client
configuration = upstox_client.Configuration()
configuration.access_token = '<ACCESS_TOKEN>'
streamer = upstox_client.MarketDataStreamerV3(upstox_client.ApiClient(configuration), ["NSE_INDEX|Nifty 50"], "full")
def on_message(msg):
print(msg)
streamer.on("message", on_message)
streamer.connect()
Refer to the SDK docs for full WebSocket methods: subscribe, unsubscribe, change_mode, auto_reconnect, etc.
Error Handling
The function is designed to handle failures gracefully.
- Logs detailed errors during execution.
- Returns
Noneif the login or token exchange fails.
Contributing
Contributions are welcome! If you’d like to:
- Report a bug
- Request a feature
- Submit a pull request
Please open an issue or PR on the GitHub repository.
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Author
Uttam Kumar Python Developer • Automation & Trading Systems
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 upstox_fastaccess-0.1.5.tar.gz.
File metadata
- Download URL: upstox_fastaccess-0.1.5.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f51bf65c951f97316c8f3405a9772d21726ee45434336ff8e4322d5a9b641664
|
|
| MD5 |
f50fca74affaf503fa263e9b3874d3f3
|
|
| BLAKE2b-256 |
109a2dd7b0d0533bd6622c678eb69f497e9af113b21961b9b23a85e12c37c122
|
File details
Details for the file upstox_fastaccess-0.1.5-py3-none-any.whl.
File metadata
- Download URL: upstox_fastaccess-0.1.5-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b325fca609fa2ff4d3b3d5901b2e09e752aac452a15397424c8ac1da7a7097f
|
|
| MD5 |
7e15713fe6baa0316d9862e390a724c3
|
|
| BLAKE2b-256 |
117088dd8b018125989f8fbf392c9c7a813a4032ce28a6fca9f03089b7f41a46
|