Skip to main content

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.

Python Tests PyPI version Python Version PyPI Downloads License: MIT

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

# Initialize with API key
client = ProjectXClient(
    username="your_username",
    api_key="your_api_key",
    environment="topstepx"  # Or another supported environment
)

# Get all active accounts
accounts = client.accounts.search(only_active_accounts=True)
account_id = accounts[0].id if accounts else None

if account_id:
    # Search for contracts
    contracts = client.contracts.search(search_text="NQ", live=False)

    if contracts:
        contract_id = contracts[0].id

        # Place a market order
        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']}")

        # Set up real-time order updates
        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:

Platform SDK Key Tested
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

  1. Clone the repository:

    git clone https://github.com/ChristianJStarr/projectx-sdk-python.git
    cd projectx-sdk-python
    
  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Install dependencies:

    pip install -e ".[dev]"
    
  4. 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

  • Black: Code formatter

    black projectx_sdk tests
    
  • isort: Import sorter

    isort projectx_sdk tests
    
  • Flake8: Linter

    flake8 projectx_sdk tests
    
  • mypy: Type checker

    mypy projectx_sdk
    

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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run the tests to ensure they pass
  4. Commit your changes (git commit -m 'Add some amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. 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.

Metadata

Release files for projectx-sdk 0.2.39

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for projectx-sdk 0.2.39
File Size Uploaded
projectx_sdk-0.2.39.tar.gz 50.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for projectx-sdk 0.2.39
File Interpreter ABI Platform
projectx_sdk-0.2.39-py3-none-any.whl Python 3 none any Details

Total release size: 99.3 kB

Release files / projectx_sdk-0.2.39.tar.gz

Download URL projectx_sdk-0.2.39.tar.gz
Size 50.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b6c40a64fa7a69c8f6ced0f3a1dfbee6bf9a3dc0507c17419e5401babd741ce3
BLAKE2b-256 checksum
How to use checksums
86f07977b3917c645a944c50e99db1dc4cd1493c0857bcea2c9f2b74f14da928
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release files / projectx_sdk-0.2.39-py3-none-any.whl

Download URL projectx_sdk-0.2.39-py3-none-any.whl
Size 48.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b068c6d8e3fc0d5e79fd7f849c12f962fbb775f11ef7abc601fca1135bf5b66a
BLAKE2b-256 checksum
How to use checksums
dff8b846ac5e5289c9098d721cd24674d5714663e2622700adffece7683b4cba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

0.2.39 This release

2 release files

0.2.38

2 release files

0.2.13

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.1.1

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page