Client for SnapTrade
Project description
snaptrade-python-sdk@10.27.0
Connect brokerage accounts to your app for live positions and trading
Requirements
Python >=3.7
Installing
pip install snaptrade-python-sdk==10.27.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
| Class | Method | HTTP request | Description |
|---|---|---|---|
| AccountInformationApi | get_all_user_holdings | GET /holdings | List all accounts for the user, plus balances, positions, and orders for each account. |
| AccountInformationApi | get_user_account_balance | GET /accounts/{accountId}/balances | List account balances |
| AccountInformationApi | get_user_account_details | GET /accounts/{accountId} | Return details of a specific investment account |
| AccountInformationApi | get_user_account_orders | GET /accounts/{accountId}/orders | Get all history of orders placed in account |
| AccountInformationApi | get_user_account_positions | GET /accounts/{accountId}/positions | List account positions |
| AccountInformationApi | get_user_holdings | GET /accounts/{accountId}/holdings | List balances, positions and orders for the specified account. |
| AccountInformationApi | list_user_accounts | GET /accounts | List accounts |
| AccountInformationApi | update_user_account | PUT /accounts/{accountId} | Update details of an investment account |
| APIStatusApi | check | GET / | Get API Status |
| AuthenticationApi | delete_snap_trade_user | DELETE /snapTrade/deleteUser | Delete SnapTrade user |
| AuthenticationApi | get_user_jwt | GET /snapTrade/encryptedJWT | Generate encrypted JWT token |
| AuthenticationApi | list_snap_trade_users | GET /snapTrade/listUsers | List SnapTrade users |
| AuthenticationApi | login_snap_trade_user | POST /snapTrade/login | Login user & generate connection link |
| AuthenticationApi | register_snap_trade_user | POST /snapTrade/registerUser | Create SnapTrade user |
| ConnectionsApi | detail_brokerage_authorization | GET /authorizations/{authorizationId} | Get detail of a specific brokerage authorizations for the user |
| ConnectionsApi | list_brokerage_authorizations | GET /authorizations | List all brokerage authorizations for the user |
| ConnectionsApi | remove_brokerage_authorization | DELETE /authorizations/{authorizationId} | Remove a brokerage authorization. |
| ConnectionsApi | session_events | GET /sessionEvents | List all session events for the partner |
| ErrorLogsApi | list_user_errors | GET /snapTrade/listUserErrors | Retrieve error logs on behalf of your SnapTrade users |
| OptionsApi | get_option_strategy | POST /accounts/{accountId}/optionStrategy | Creates an option strategy object that will be used to place an option strategy order |
| OptionsApi | get_options_chain | GET /accounts/{accountId}/optionsChain | Get the options chain |
| OptionsApi | get_options_strategy_quote | GET /accounts/{accountId}/optionStrategy/{optionStrategyId} | Get latest market data of option strategy |
| OptionsApi | list_option_holdings | GET /accounts/{accountId}/options | Get the options holdings in the account |
| OptionsApi | place_option_strategy | POST /accounts/{accountId}/optionStrategy/{optionStrategyId}/execute | Place an option strategy order on the brokerage |
| ReferenceDataApi | get_currency_exchange_rate_pair | GET /currencies/rates/{currencyPair} | Return the exchange rate of a currency pair |
| ReferenceDataApi | get_partner_info | GET /snapTrade/partners | Get metadata related to Snaptrade partner |
| ReferenceDataApi | get_security_types | GET /securityTypes | List of all security types. |
| ReferenceDataApi | get_stock_exchanges | GET /exchanges | List exchanges |
| ReferenceDataApi | get_symbols | POST /symbols | Search for symbols |
| ReferenceDataApi | get_symbols_by_ticker | GET /symbols/{ticker} | Get details of a symbol by the ticker |
| ReferenceDataApi | list_all_brokerage_authorization_type | GET /brokerageAuthorizationTypes | List of all brokerage authorization types |
| ReferenceDataApi | list_all_brokerages | GET /brokerages | List brokerages |
| ReferenceDataApi | list_all_currencies | GET /currencies | List currencies |
| ReferenceDataApi | list_all_currencies_rates | GET /currencies/rates | List currency exchange rates |
| ReferenceDataApi | symbol_search_user_account | POST /accounts/{accountId}/symbols | Search for symbols available in an account |
| TradingApi | cancel_user_account_order | POST /accounts/{accountId}/orders/cancel | Cancel open order in account |
| TradingApi | get_order_impact | POST /trade/impact | Check impact of trades on account. |
| TradingApi | get_user_account_quotes | GET /accounts/{accountId}/quotes | Get symbol quotes |
| TradingApi | place_force_order | POST /trade/place | Place a trade with NO validation. |
| TradingApi | place_oco_order | POST /trade/oco | Place a OCO (One Cancels Other) order |
| TradingApi | place_order | POST /trade/{tradeId} | Place order |
| TransactionsAndReportingApi | get_activities | GET /activities | Get transaction history for a user |
| TransactionsAndReportingApi | get_reporting_custom_range | GET /performance/custom | Get performance information for a specific timeframe |
Documentation For Models
- Account
- AccountHoldings
- AccountHoldingsAccount
- AccountIDs
- AccountMeta
- AccountOrderRecord
- AccountOrderRecordStatus
- AccountSimple
- AccountSyncStatus
- Action
- Balance
- Brokerage
- BrokerageAuthIDs
- BrokerageAuthorization
- BrokerageAuthorizationMeta
- BrokerageAuthorizationType
- BrokerageAuthorizationTypeReadOnly
- BrokerageAuthorizationTypeReadOnlyBrokerage
- BrokerageExchanges
- BrokerageSymbol
- BrokerageType
- CalculatedTrade
- CancelledUnits
- Cash
- CashRestriction
- ClientID
- ConsumerKey
- Currency
- DeleteUserResponse
- DividendAtDate
- EncryptedResponse
- EncryptedResponseEncryptedMessageData
- Exchange
- ExchangeRatePairs
- ExcludedAsset
- FilledUnits
- Id
- JWT
- LoginRedirectURI
- ManualTrade
- ManualTradeAndImpact
- ManualTradeBalance
- ManualTradeForm
- ManualTradeSymbol
- Model400FailedRequestResponse
- Model401FailedRequestResponse
- Model403FailedRequestResponse
- Model404FailedRequestResponse
- ModelAssetClass
- ModelAssetClassDetails
- ModelAssetClassTarget
- ModelPortfolio
- ModelPortfolioAssetClass
- ModelPortfolioDetails
- ModelPortfolioSecurity
- MonthlyDividends
- NetContributions
- NetDividend
- OpenUnits
- OptionChain
- OptionChainItem
- OptionChainItemChainPerRoot
- OptionChainItemChainPerRootItem
- OptionChainItemChainPerRootItemChainPerStrikePrice
- OptionChainItemChainPerRootItemChainPerStrikePriceItem
- OptionLeg
- OptionStrategy
- OptionStrategyLegs
- OptionsHoldings
- OptionsPosition
- OptionsSymbol
- OrderType
- PartnerData
- PastValue
- Percent
- PerformanceCustom
- PerformanceCustomBadTickers
- PortfolioGroup
- PortfolioGroupInfo
- PortfolioGroupPosition
- PortfolioGroupSettings
- Position
- PositionSymbol
- Price
- RedirectTokenandPin
- ReportingDate
- ReportingFrequency
- RsaPublicKey
- SecurityType
- SessionEvent
- Signature
- SignedContent
- SnapTradeAPIDisclaimerAcceptStatus
- SnapTradeHoldingsAccount
- SnapTradeHoldingsAccountAccountId
- SnapTradeHoldingsAccountAccountIdMeta
- SnapTradeHoldingsAccountMeta
- SnapTradeHoldingsTotalValue
- SnapTradeLoginUserRequestBody
- SnapTradeRegisterUserRequestBody
- SnapTradeUserID
- SnapTradeUserSecret
- Status
- StopPrice
- StrategyImpact
- StrategyImpactLegs
- StrategyImpactLegsItem
- StrategyOrderPlace
- StrategyOrderPlaceOrders
- StrategyOrderPlaceOrdersItem
- StrategyOrderPlaceOrdersItemLegs
- StrategyOrderPlaceOrdersItemLegsItem
- StrategyOrderQuotes
- StrategyOrderRecord
- StrategyQuotes
- StrategyQuotesGreek
- SubPeriodReturnRate
- Symbol
- SymbolQuery
- SymbolsQuotes
- SyncStatusDate
- TargetAsset
- TargetAssetList
- TargetAssetMeta
- Time
- TimeInForce
- Timestamp
- Trade
- TradeExecutionStatus
- TradeExecutionStatusMeta
- TradeImpact
- TransactionsStatus
- USExchange
- UnderlyingSymbol
- Units
- UniversalActivity
- UniversalSymbol
- UniversalSymbolTicker
- UserErrorLog
- UserID
- UserIDandSecret
- UserList
- UserSecret
- UserSettings
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
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 snaptrade_python_sdk-10.27.0.tar.gz.
File metadata
- Download URL: snaptrade_python_sdk-10.27.0.tar.gz
- Upload date:
- Size: 185.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f695ea469f03ccfd0231fa3e53a48ba264b3cf417ea6105f62eea77e4233e1e6
|
|
| MD5 |
31fe2a192aa1f453ec7bd65c3687e4a6
|
|
| BLAKE2b-256 |
072114c0770f476915abe06ccd91b04a8c5b101e1a5110bd71663d0aee7fc376
|
File details
Details for the file snaptrade_python_sdk-10.27.0-py3-none-any.whl.
File metadata
- Download URL: snaptrade_python_sdk-10.27.0-py3-none-any.whl
- Upload date:
- Size: 761.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26fc97ad35fc4faa027e4ed9d63c9805c24401333d7f067c022e7b4bd455a9de
|
|
| MD5 |
4d9dae42e08fa5ab266f393ac6669f23
|
|
| BLAKE2b-256 |
9e6f6eb6ba59c631e931660b8982daf2d70464ae33c4e88d0728257c0c8919d1
|