Automation library for Upstox login and token management
Project description
Upstox Auth Pro 🚀
Upstox Auth Pro is a high-performance, production-grade Python SDK designed to automate the Upstox OAuth2 login flow. It leverages Playwright for robust browser automation, pyotp for seamless 2FA, and a pluggable storage system for secure token management.
📚 Documentation
For full documentation, API reference, and advanced usage, visit: https://growthquantix.github.io/upstox-auth-pro/
📋 Table of Contents
- ✨ Key Features
- 🛠️ Requirements
- 🚀 Installation
- 📖 Quick Start
- 💻 CLI Usage
- ⚙️ Configuration (.env)
- 📑 API Reference
- 🔍 Troubleshooting
- 🤝 Contributing
- 👨💻 Maintainer
✨ Key Features
- Maximum Automation: Fully automated versioning and publishing using Semantic Release.
- Robust Browser Engine: Uses Playwright with advanced stealth configurations to bypass bot detection.
- Intelligent PIN Entry: Dynamically handles both single-field and multi-field PIN input interfaces.
- Auto-Retry Mechanism: Built-in retry logic with exponential backoff for transient network failures.
- Smart Token Management: IST-aware token expiry validation (Upstox tokens expire daily at 3:30 AM IST).
- Diagnostic Mode: Automatic screenshots on failure and comprehensive logging for easy debugging.
- Production Ready: Clean, type-hinted API and a powerful CLI tool for rapid development.
🛠️ Requirements
- Python: 3.8, 3.9, 3.10, 3.11, or 3.12.
- Browser: Chromium (managed automatically via Playwright).
- Upstox API: Active App Credentials (API Key, Secret, Redirect URI).
🚀 Installation
1. Install the SDK
pip install upstox-auth-pro
2. Install Browser Dependencies
playwright install chromium
📖 Quick Start
import asyncio
from upstox_auth import FileStorage, UpstoxAuthenticator
async def main():
# 1. Initialize the authenticator
auth = UpstoxAuthenticator(
api_key="YOUR_API_KEY",
api_secret="YOUR_API_SECRET",
redirect_uri="https://localhost:8000/callback",
mobile_no="9876543210",
pin="123456",
totp_key="YOUR_TOTP_SECRET",
storage=FileStorage("tokens/upstox_token.json"), # Auto-creates directories
headless=True,
retries=2 # Number of retries on transient failures
)
# 2. Get your access token (automatically handles login/expiry/storage)
try:
token = await auth.get_access_token()
print(f"Authenticated! Token: {token[:10]}...")
except Exception as e:
print(f"Authentication failed: {e}")
if __name__ == "__main__":
asyncio.run(main())
💻 CLI Usage
You can also use the SDK directly from your terminal. It automatically loads credentials from a .env file.
# Basic usage (returns token to stdout)
upstox-auth
# Run using python module syntax
python -m upstox_auth
# Debug mode: see the browser while it logs in
upstox-auth --visible
# Force a fresh login (bypass stored token)
upstox-auth --force --storage production_token.json
⚙️ Configuration (.env)
We recommend using a .env file for secure credential management:
UPSTOX_API_KEY=your_api_key_here
UPSTOX_API_SECRET=your_api_secret_here
UPSTOX_REDIRECT_URI=https://localhost:8000/callback
UPSTOX_MOBILE=9876543210
UPSTOX_PIN=123456
UPSTOX_TOTP_KEY=JBSWY3DPEHPK3PXP
📑 API Reference
UpstoxAuthenticator
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str |
Required | Upstox API Key. |
api_secret |
str |
Required | Upstox API Secret. |
redirect_uri |
str |
Required | Must match Upstox portal config. |
mobile_no |
str |
Required | Registered mobile number. |
pin |
str |
Required | 6-digit login PIN. |
totp_key |
str |
Required | 2FA Secret Key (not the 6-digit code). |
storage |
BaseStorage |
MemoryStorage |
Token storage provider. |
headless |
bool |
True |
Run browser without UI. |
retries |
int |
2 |
Automation retry attempts. |
🔍 Troubleshooting & Logging
Verbose Logs
If you encounter issues, enable logging to see the step-by-step automation:
import logging
logging.basicConfig(level=logging.INFO)
Common Failures
- Zscaler/Firewall: If you see "Access blocked by network filter", ensure
api.upstox.comis whitelisted. - Selector Timeouts: On failure, a diagnostic screenshot is saved to
.tmp/error_mobile_selector.png. - Redirect URI Mismatch: The
redirect_urimust be identical to the one set in your Upstox Developer Portal (including trailing slashes).
👨💻 Maintainer
Developed and maintained by Brijesh Yadav.
For any queries, feel free to reach out via:
- Email:
brijeshyadav30599@gmail.com - GitHub: brijeshyadav30599
- Organization: GrowthQuantix
⭐ Show Your Support
If this project helped you automate your trading flow, please give it a Star on GitHub! It helps more developers find this tool.
Disclaimer: This is an unofficial library and is not affiliated with Upstox. Use at your own risk.
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
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_auth_pro-1.1.3.tar.gz.
File metadata
- Download URL: upstox_auth_pro-1.1.3.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86fa02ef8dd8228bf94a18cd5bdfa8c7ef07a6b414c77f54f42f19ef5a7eff44
|
|
| MD5 |
3406f35764fd393ab75cc757d78a5503
|
|
| BLAKE2b-256 |
1c38fdde0a4371984984b0960067e9528b67f31035d0ab2f08f3b1a59c86f982
|
Provenance
The following attestation bundles were made for upstox_auth_pro-1.1.3.tar.gz:
Publisher:
semantic-release.yml on growthquantix/upstox-auth-pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
upstox_auth_pro-1.1.3.tar.gz -
Subject digest:
86fa02ef8dd8228bf94a18cd5bdfa8c7ef07a6b414c77f54f42f19ef5a7eff44 - Sigstore transparency entry: 1058390880
- Sigstore integration time:
-
Permalink:
growthquantix/upstox-auth-pro@79e6e5f6f551d169abb2eb8c76ddb3f816171072 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/growthquantix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
semantic-release.yml@79e6e5f6f551d169abb2eb8c76ddb3f816171072 -
Trigger Event:
push
-
Statement type:
File details
Details for the file upstox_auth_pro-1.1.3-py3-none-any.whl.
File metadata
- Download URL: upstox_auth_pro-1.1.3-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57f3e04f38d9dbf85b61120070ff1d12bb7a444fad3ed0abaa0746c604d69576
|
|
| MD5 |
ab00670311144c1489d18c05b49bd4aa
|
|
| BLAKE2b-256 |
c5a20bdf5da68e4e9bed1b3c287d4fc763ce55f24dd18b4fd13749d7f81601cd
|
Provenance
The following attestation bundles were made for upstox_auth_pro-1.1.3-py3-none-any.whl:
Publisher:
semantic-release.yml on growthquantix/upstox-auth-pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
upstox_auth_pro-1.1.3-py3-none-any.whl -
Subject digest:
57f3e04f38d9dbf85b61120070ff1d12bb7a444fad3ed0abaa0746c604d69576 - Sigstore transparency entry: 1058390883
- Sigstore integration time:
-
Permalink:
growthquantix/upstox-auth-pro@79e6e5f6f551d169abb2eb8c76ddb3f816171072 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/growthquantix
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
semantic-release.yml@79e6e5f6f551d169abb2eb8c76ddb3f816171072 -
Trigger Event:
push
-
Statement type: