Skip to main content

Client for SnapTrade

Project description

snaptrade-python-sdk@10.29.0

Connect brokerage accounts to your app for live positions and trading

Requirements

Python >=3.7

Installing

pip install snaptrade-python-sdk==10.29.0

Getting Started

import os
import uuid
from pprint import pprint
from snaptrade_client import SnapTrade

# 1) Initialize a client with your clientID and consumerKey.
snaptrade = SnapTrade(
    consumer_key=os.environ["SNAPTRADE_CONSUMER_KEY"],
    client_id=os.environ["SNAPTRADE_CLIENT_ID"],
)

# 2) Check that the client is able to make a request to the API server.
api_response = snaptrade.api_status.check()
pprint(api_response.body)

# 3) Create a new user on SnapTrade
user_id = str(uuid.uuid4())
register_response = snaptrade.authentication.register_snap_trade_user(
    body={"userId": user_id}
)
pprint(register_response.body)

# Note: A user secret is only generated once. It's required to access
# resources for certain endpoints.
user_secret = register_response.body["userSecret"]

# 4) Get a redirect URI. Users will need this to connect
# their brokerage to the SnapTrade server.
redirect_uri = snaptrade.authentication.login_snap_trade_user(
    query_params={"userId": user_id, "userSecret": user_secret}
)
print(redirect_uri.body)


snaptrade.portfolio_management.create(
    query_params={"userId": user_id, "userSecret": user_secret},
    body={"id": str(uuid.uuid4()), "name": "MyPortfolio"},
)
res = snaptrade.portfolio_management.list(
    query_params={"userId": user_id, "userSecret": user_secret}
)
pprint(res.body)

# 5) Obtaining account holdings data
holdings = snaptrade.account_information.get_all_user_holdings(
    query_params={"userId": user_id, "userSecret": user_secret}
)
pprint(holdings.body)

# 6) Deleting a user
deleted_response = snaptrade.authentication.delete_snap_trade_user(
    query_params={"userId": user_id}
)
pprint(deleted_response.body)

Async

async support is available by prepending a to any method.

import asyncio
from pprint import pprint
from snaptrade_client import SnapTrade, ApiException

snaptrade = SnapTrade(
    # Defining the host is optional and defaults to https://api.snaptrade.com/api/v1
    # See configuration.py for a list of all supported configuration parameters.
    host="https://api.snaptrade.com/api/v1",
    consumer_key="YOUR_CONSUMER_KEY",
    client_id="YOUR_CLIENT_ID",
)


async def main():
    try:
        # List all accounts for the user, plus balances, positions, and orders for each account.
        get_all_user_holdings_response = await snaptrade.account_information.aget_all_user_holdings(
            user_id="John.doe@snaptrade.com",  # required
            user_secret="USERSECRET123",  # required
            brokerage_authorizations="917c8734-8470-4a3e-a18f-57c3f2ee6631",  # optional
        )
        pprint(get_all_user_holdings_response.body)
        pprint(get_all_user_holdings_response.body["account"])
        pprint(get_all_user_holdings_response.body["balances"])
        pprint(get_all_user_holdings_response.body["positions"])
        pprint(get_all_user_holdings_response.body["total_value"])
        pprint(get_all_user_holdings_response.headers)
        pprint(get_all_user_holdings_response.status)
        pprint(get_all_user_holdings_response.round_trip_time)
    except ApiException as e:
        print(
            "Exception when calling AccountInformationApi.get_all_user_holdings: %s\n"
            % e
        )
        pprint(e.body)
        pprint(e.headers)
        pprint(e.status)
        pprint(e.reason)
        pprint(e.round_trip_time)


asyncio.run(main())

Documentation for API Endpoints

All URIs are relative to https://api.snaptrade.com/api/v1

Tag Method HTTP request Description
Account Information get_all_user_holdings GET /holdings List all accounts for the user, plus balances, positions, and orders for each account.
Account Information get_user_account_balance GET /accounts/{accountId}/balances List account balances
Account Information get_user_account_details GET /accounts/{accountId} Return details of a specific investment account
Account Information get_user_account_orders GET /accounts/{accountId}/orders Get all history of orders placed in account
Account Information get_user_account_positions GET /accounts/{accountId}/positions List account positions
Account Information get_user_holdings GET /accounts/{accountId}/holdings List balances, positions and orders for the specified account.
Account Information list_user_accounts GET /accounts List accounts
Account Information update_user_account PUT /accounts/{accountId} Update details of an investment account
API Status check GET / Get API Status
Authentication delete_snap_trade_user DELETE /snapTrade/deleteUser Delete SnapTrade user
Authentication get_user_jwt GET /snapTrade/encryptedJWT Generate encrypted JWT token
Authentication list_snap_trade_users GET /snapTrade/listUsers List SnapTrade users
Authentication login_snap_trade_user POST /snapTrade/login Login user & generate connection link
Authentication register_snap_trade_user POST /snapTrade/registerUser Create SnapTrade user
Connections detail_brokerage_authorization GET /authorizations/{authorizationId} Get detail of a specific brokerage authorizations for the user
Connections list_brokerage_authorizations GET /authorizations List all brokerage authorizations for the user
Connections remove_brokerage_authorization DELETE /authorizations/{authorizationId} Remove a brokerage authorization.
Connections session_events GET /sessionEvents List all session events for the partner
Error Logs list_user_errors GET /snapTrade/listUserErrors Retrieve error logs on behalf of your SnapTrade users
Options get_option_strategy POST /accounts/{accountId}/optionStrategy Creates an option strategy object that will be used to place an option strategy order
Options get_options_chain GET /accounts/{accountId}/optionsChain Get the options chain
Options get_options_strategy_quote GET /accounts/{accountId}/optionStrategy/{optionStrategyId} Get latest market data of option strategy
Options list_option_holdings GET /accounts/{accountId}/options Get the options holdings in the account
Options place_option_strategy POST /accounts/{accountId}/optionStrategy/{optionStrategyId}/execute Place an option strategy order on the brokerage
Reference Data get_currency_exchange_rate_pair GET /currencies/rates/{currencyPair} Return the exchange rate of a currency pair
Reference Data get_partner_info GET /snapTrade/partners Get metadata related to Snaptrade partner
Reference Data get_security_types GET /securityTypes List of all security types.
Reference Data get_stock_exchanges GET /exchanges List exchanges
Reference Data get_symbols POST /symbols Search for symbols
Reference Data get_symbols_by_ticker GET /symbols/{ticker} Get details of a symbol by the ticker
Reference Data list_all_brokerage_authorization_type GET /brokerageAuthorizationTypes List of all brokerage authorization types
Reference Data list_all_brokerages GET /brokerages List brokerages
Reference Data list_all_currencies GET /currencies List currencies
Reference Data list_all_currencies_rates GET /currencies/rates List currency exchange rates
Reference Data symbol_search_user_account POST /accounts/{accountId}/symbols Search for symbols available in an account
Trading cancel_user_account_order POST /accounts/{accountId}/orders/cancel Cancel open order in account
Trading get_order_impact POST /trade/impact Check impact of trades on account.
Trading get_user_account_quotes GET /accounts/{accountId}/quotes Get symbol quotes
Trading place_force_order POST /trade/place Place a trade with NO validation.
Trading place_oco_order POST /trade/oco Place a OCO (One Cancels Other) order
Trading place_order POST /trade/{tradeId} Place order
Transactions And Reporting get_activities GET /activities Get transaction history for a user
Transactions And Reporting get_reporting_custom_range GET /performance/custom Get performance information for a specific timeframe

Documentation For Models

Author

This Python package is automatically generated by Konfig

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

snaptrade_python_sdk-10.29.0.tar.gz (186.2 kB view details)

Uploaded Source

Built Distribution

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

snaptrade_python_sdk-10.29.0-py3-none-any.whl (762.0 kB view details)

Uploaded Python 3

File details

Details for the file snaptrade_python_sdk-10.29.0.tar.gz.

File metadata

  • Download URL: snaptrade_python_sdk-10.29.0.tar.gz
  • Upload date:
  • Size: 186.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.16

File hashes

Hashes for snaptrade_python_sdk-10.29.0.tar.gz
Algorithm Hash digest
SHA256 44945fa6baa3e9e403ccd8ed837237da512ffb96eb8e315f3277f7245cb33cc2
MD5 bc4da09d86d4dade5baa1336317f0ed3
BLAKE2b-256 403ebed5e3da37176b689418d5515f0c871720d402b7acba72da3f37726e37a4

See more details on using hashes here.

File details

Details for the file snaptrade_python_sdk-10.29.0-py3-none-any.whl.

File metadata

File hashes

Hashes for snaptrade_python_sdk-10.29.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6eec13fd18bfd5e55eb756be23601823bc840d0e7fccf51baef5e711a1b71b9b
MD5 b36478285b66c04a9fd79a9062d368c6
BLAKE2b-256 a62c8de3ba038e67b0a3a3955b35fc28cd2af5b3773e2aae8d2772f8bd800cb5

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