ProjectX Gateway API SDK for Python (Unofficial)
A Python client library for the ProjectX Gateway API, enabling proprietary trading firms and evaluation providers to interact with ProjectX's trading platform programmatically.
DISCLAIMER: This is an unofficial SDK. The author(s) of this package are not affiliated with or endorsed by ProjectX. This is a community-developed tool to interact with their public API.

Features
- Complete coverage of ProjectX Gateway API endpoints
- Support for real-time WebSocket updates via SignalR
- Pythonic interface with proper error handling
- Support for all ProjectX environments
Installation
pip install projectx-sdk
For development, you can install with additional tools:
pip install projectx-sdk[dev]
Quick Start
from projectx_sdk import ProjectXClient, OrderType, OrderSide
client = ProjectXClient(
username="your_username",
api_key="your_api_key",
environment="topstepx"
)
accounts = client.accounts.search(only_active_accounts=True)
account_id = accounts[0].id if accounts else None
if account_id:
contracts = client.contracts.search(search_text="NQ", live=False)
if contracts:
contract_id = contracts[0].id
order = client.orders.place(
account_id=account_id,
contract_id=contract_id,
type=OrderType.MARKET,
side=OrderSide.BUY,
size=1
)
print(f"Order placed with ID: {order['orderId']}")
def on_order_update(order_data):
print(f"Order update: {order_data}")
client.realtime.user.subscribe_orders(account_id, callback=on_order_update)
client.realtime.start()
Environment Support
The SDK supports all ProjectX environments:
Alpha Ticks | alphaticks | β
|
Blue Guardian | blueguardian | β |
Blusky | blusky | β |
E8X | e8x | β |
Funding Futures | fundingfutures | β |
The Futures Desk | futuresdesk | β |
Futures Elite | futureselite | β |
FXIFY Futures | fxifyfutures | β |
GoatFunded | goatfunded | β |
TickTickTrader | tickticktrader | β |
TopOneFutures | toponefutures | β |
TopstepX | topstepx | β
|
TX3Funding | tx3funding | β |
Note: β
= Tested and confirmed working, β = Not officially tested yet
API Components
The SDK is organized into several components:
- Client: The main entry point that provides access to all API functionality
- Authentication: Handles authentication and token management
- Endpoints: Service modules for each API endpoint (accounts, contracts, orders, etc.)
- Models: Data classes for API entities (account, contract, order, etc.)
- Real-time: WebSocket functionality for real-time updates
Development
Setup
-
Clone the repository:
git clone https://github.com/ChristianJStarr/projectx-sdk-python.git
cd projectx-sdk-python
-
Create a virtual environment:
python -m venv venv
source venv/bin/activate
-
Install dependencies:
pip install -e ".[dev]"
-
Set up pre-commit hooks:
pre-commit install
Running Tests
Run the entire test suite:
pytest
Run with coverage:
pytest --cov=projectx_sdk
Run specific test files:
pytest tests/test_client.py
Code Quality Tools
Building and Publishing
Build the package:
python -m build
Check the distribution:
twine check dist/*
Upload to PyPI:
twine upload dist/*
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
)
- Run the tests to ensure they pass
- Commit your changes (
git commit -m 'Add some amazing feature'
)
- Push to the branch (
git push origin feature/amazing-feature
)
- Open a Pull Request
Please remember that this is an unofficial SDK and not affiliated with ProjectX.
Documentation
For detailed information about the ProjectX API that this unofficial SDK interacts with, please visit the ProjectX API Documentation.
License
This project is licensed under the MIT License - see the LICENSE file for details.