Client for SnapTrade
Project description
Connect brokerage accounts to your app for live positions and trading
Requirements
Python >=3.7
Installing
pip install snaptrade-python-sdk==10.34.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(
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 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 brokerage authorization details |
Connections | list_brokerage_authorizations | GET /authorizations | List all brokerage authorizations for the user |
Connections | remove_brokerage_authorization | DELETE /authorizations/{authorizationId} | Delete 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 |
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.34.0.tar.gz
(190.8 kB
view hashes)
Built Distribution
Close
Hashes for snaptrade_python_sdk-10.34.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a752d3e66c08809e8c65b07f57d8c113cab52317ed90199badd21b5bb77112f4 |
|
MD5 | 87fd9cbaba49ac45a4171ae499e0d3ba |
|
BLAKE2b-256 | 474eb4807782d9249887bab57091c09d92573bf0e3aaaf24dc296aa26ae1eb9e |
Close
Hashes for snaptrade_python_sdk-10.34.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f399610ef20775a36841b4029a5a5b43836997e65e0d317f24fb913810fce9d |
|
MD5 | f3aae0f4691acd6a537f3e6147f56dc5 |
|
BLAKE2b-256 | 17ae54feb9b92482a50bd3d0a65a84dbd775a0183d28f459ad17b4ac63c77503 |