Skip to main content

Client for SnapTrade

Project description

Visit SnapTrade

SnapTrade

Connect brokerage accounts to your app for live positions and trading

PyPI README.md More Info

Table of Contents

Requirements

Python >=3.7

Installation

pip install snaptrade-python-sdk==11.0.55

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)

# 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="snaptrade-user-123",
                user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
                brokerage_authorizations="917c8734-8470-4a3e-a18f-57c3f2ee6631",
            )
        )
        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())

Reference

snaptrade.account_information.get_all_user_holdings

Deprecated

Deprecated, please use the account-specific holdings endpoint instead.

List all accounts for the user, plus balances, positions, and orders for each account.

๐Ÿ› ๏ธ Usage

get_all_user_holdings_response = snaptrade.account_information.get_all_user_holdings(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    brokerage_authorizations="917c8734-8470-4a3e-a18f-57c3f2ee6631",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
brokerage_authorizations: str

Optional. Comma separated list of authorization IDs (only use if filtering is needed on one or more authorizations).

๐Ÿ”„ Return

AccountHoldings

๐ŸŒ Endpoint

/holdings get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_balance

Returns a list of balances for the account. Each element of the list has a distinct currency. Some brokerages like Questrade allows holding multiple currencies in the same account.

The data returned here is cached. How long the data is cached for varies by brokerage. Check the brokerage integrations doc and look for "Cache Expiry Time" to see the exact value for a specific brokerage. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_user_account_balance_response = (
    snaptrade.account_information.get_user_account_balance(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

Balance

๐ŸŒ Endpoint

/accounts/{accountId}/balances get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_details

Returns account detail known to SnapTrade for the specified account.

The data returned here is always cached and refreshed once a day. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_user_account_details_response = (
    snaptrade.account_information.get_user_account_details(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

Account

๐ŸŒ Endpoint

/accounts/{accountId} get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_orders

Returns a list of recent orders in the specified account.

The data returned here is cached. How long the data is cached for varies by brokerage. Check the brokerage integrations doc and look for "Cache Expiry Time" to see the exact value for a specific brokerage. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_user_account_orders_response = (
    snaptrade.account_information.get_user_account_orders(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
        state="all",
        days=30,
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str
state: str

defaults value is set to "all"

days: int

Number of days in the past to fetch the most recent orders. Defaults to the last 30 days if no value is passed in.

๐Ÿ”„ Return

AccountOrderRecord

๐ŸŒ Endpoint

/accounts/{accountId}/orders get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_positions

Returns a list of stock/ETF/crypto/mutual fund positions in the specified account. For option positions, please use the options endpoint.

The data returned here is cached. How long the data is cached for varies by brokerage. Check the brokerage integrations doc and look for "Cache Expiry Time" to see the exact value for a specific brokerage. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_user_account_positions_response = (
    snaptrade.account_information.get_user_account_positions(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

Position

๐ŸŒ Endpoint

/accounts/{accountId}/positions get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_recent_orders

Returns a list of orders executed in the last 24 hours in the specified account. This endpoint is realtime and can be used to quickly check if account state has recently changed due to an execution Differs from /orders in that it only returns orders that have been executed in the last 24 hours as opposed to pending or cancelled orders up to 30 days old Please contact support for access as this endpoint is not enabled by default.

๐Ÿ› ๏ธ Usage

get_user_account_recent_orders_response = (
    snaptrade.account_information.get_user_account_recent_orders(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

RecentOrdersResponse

๐ŸŒ Endpoint

/accounts/{accountId}/recentOrders get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_account_return_rates

Returns a list of rate of return percents for a given account. Will include timeframes available from the brokerage, for example "ALL", "1Y", "6M", "3M", "1M"

๐Ÿ› ๏ธ Usage

get_user_account_return_rates_response = (
    snaptrade.account_information.get_user_account_return_rates(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

RateOfReturnResponse

๐ŸŒ Endpoint

/accounts/{accountId}/returnRates get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.get_user_holdings

Returns a list of balances, positions, and recent orders for the specified account. The data returned is similar to the data returned over the more fine-grained balances, positions and orders endpoints. The finer-grained APIs are preferred. They are easier to work with, faster, and have better error handling than this coarse-grained API.

The data returned here is cached. How long the data is cached for varies by brokerage. Check the brokerage integrations doc and look for "Cache Expiry Time" to see the exact value for a specific brokerage. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_user_holdings_response = snaptrade.account_information.get_user_holdings(
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
)

โš™๏ธ Parameters

account_id: str
user_id: str
user_secret: str

๐Ÿ”„ Return

AccountHoldingsAccount

๐ŸŒ Endpoint

/accounts/{accountId}/holdings get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.list_user_accounts

Returns all brokerage accounts across all connections known to SnapTrade for the authenticated user.

The data returned here is always cached and refreshed once a day. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

list_user_accounts_response = snaptrade.account_information.list_user_accounts(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
)

โš™๏ธ Parameters

user_id: str
user_secret: str

๐Ÿ”„ Return

Account

๐ŸŒ Endpoint

/accounts get

๐Ÿ”™ Back to Table of Contents


snaptrade.account_information.update_user_account

Updates various properties of a specified account.

๐Ÿ› ๏ธ Usage

update_user_account_response = snaptrade.account_information.update_user_account(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="accountId_example",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

The ID of the account to update.

๐Ÿ”„ Return

Account

๐ŸŒ Endpoint

/accounts/{accountId} put

๐Ÿ”™ Back to Table of Contents


snaptrade.api_status.check

Check whether the API is operational and verify timestamps.

๐Ÿ› ๏ธ Usage

check_response = snaptrade.api_status.check()

๐Ÿ”„ Return

Status

๐ŸŒ Endpoint

/ get

๐Ÿ”™ Back to Table of Contents


snaptrade.authentication.delete_snap_trade_user

Deletes a registered user and all associated data. This action is irreversible. This API is asynchronous and will return a 200 status code if the request is accepted. The user and all associated data will be queued for deletion. Once deleted, a USER_DELETED webhook will be sent.

๐Ÿ› ๏ธ Usage

delete_snap_trade_user_response = snaptrade.authentication.delete_snap_trade_user(
    user_id="snaptrade-user-123",
)

โš™๏ธ Parameters

user_id: str

๐Ÿ”„ Return

DeleteUserResponse

๐ŸŒ Endpoint

/snapTrade/deleteUser delete

๐Ÿ”™ Back to Table of Contents


snaptrade.authentication.list_snap_trade_users

Returns a list of all registered user IDs. Please note that the response is not currently paginated.

๐Ÿ› ๏ธ Usage

list_snap_trade_users_response = snaptrade.authentication.list_snap_trade_users()

๐Ÿ”„ Return

UserList

๐ŸŒ Endpoint

/snapTrade/listUsers get

๐Ÿ”™ Back to Table of Contents


snaptrade.authentication.login_snap_trade_user

Authenticates a SnapTrade user and returns the Connection Portal URL used for connecting brokerage accounts. Please check this guide for how to integrate the Connection Portal into your app.

Please note that the returned URL expires in 5 minutes.

๐Ÿ› ๏ธ Usage

login_snap_trade_user_response = snaptrade.authentication.login_snap_trade_user(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    broker="ALPACA",
    immediate_redirect=True,
    custom_redirect="https://snaptrade.com",
    reconnect="8b5f262d-4bb9-365d-888a-202bd3b15fa1",
    connection_type="read",
    connection_portal_version="v4",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
broker: str

Slug of the brokerage to connect the user to. See the integrations page for a list of supported brokerages and their slugs.

immediate_redirect: bool

When set to true, user will be redirected back to the partner's site instead of the connection portal. This parameter is ignored if the connection portal is loaded inside an iframe. See the guide on ways to integrate the connection portal for more information.

custom_redirect: str

URL to redirect the user to after the user connects their brokerage account. This parameter is ignored if the connection portal is loaded inside an iframe. See the guide on ways to integrate the connection portal for more information.

reconnect: str

The UUID of the brokerage connection to be reconnected. This parameter should be left empty unless you are reconnecting a disabled connection. See the guide on fixing broken connections for more information.

connection_type: str

Sets whether the connection should be read-only or trade-enabled. Defaults to read-only if not specified.

connection_portal_version: str

Sets the connection portal version to render. Currently only v4 is supported and is the default. All other versions are deprecated and will automatically be set to v4.

โš™๏ธ Request Body

SnapTradeLoginUserRequestBody

๐ŸŒ Endpoint

/snapTrade/login post

๐Ÿ”™ Back to Table of Contents


snaptrade.authentication.register_snap_trade_user

Registers a new SnapTrade user under your Client ID. A user secret will be automatically generated for you and must be properly stored in your system. Most SnapTrade operations require a user ID and user secret to be passed in as parameters.

๐Ÿ› ๏ธ Usage

register_snap_trade_user_response = snaptrade.authentication.register_snap_trade_user(
    user_id="snaptrade-user-123",
)

โš™๏ธ Parameters

user_id: str

SnapTrade User ID. This is chosen by the API partner and can be any string that is a) unique to the user, and b) immutable for the user. It is recommended to NOT use email addresses for this property because they are usually not immutable.

โš™๏ธ Request Body

SnapTradeRegisterUserRequestBody

๐Ÿ”„ Return

UserIDandSecret

๐ŸŒ Endpoint

/snapTrade/registerUser post

๐Ÿ”™ Back to Table of Contents


snaptrade.authentication.reset_snap_trade_user_secret

Rotates the secret for a SnapTrade user. You might use this if userSecret is compromised. Please note that if you call this endpoint and fail to save the new secret, you'll no longer be able to access any data for this user, and your only option will be to delete and recreate the user, then ask them to reconnect.

๐Ÿ› ๏ธ Usage

reset_snap_trade_user_secret_response = (
    snaptrade.authentication.reset_snap_trade_user_secret(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    )
)

โš™๏ธ Parameters

user_id: str

SnapTrade User ID. This is chosen by the API partner and can be any string that is a) unique to the user, and b) immutable for the user. It is recommended to NOT use email addresses for this property because they are usually not immutable.

user_secret: str

SnapTrade User Secret. This is a randomly generated string and should be stored securely. If compromised, please rotate it via the rotate user secret endpoint.

โš™๏ธ Request Body

UserIDandSecret

๐Ÿ”„ Return

UserIDandSecret

๐ŸŒ Endpoint

/snapTrade/resetUserSecret post

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.detail_brokerage_authorization

Returns a single connection for the specified ID.

๐Ÿ› ๏ธ Usage

detail_brokerage_authorization_response = (
    snaptrade.connections.detail_brokerage_authorization(
        authorization_id="87b24961-b51e-4db8-9226-f198f6518a89",
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    )
)

โš™๏ธ Parameters

authorization_id: str
user_id: str
user_secret: str

๐Ÿ”„ Return

BrokerageAuthorization

๐ŸŒ Endpoint

/authorizations/{authorizationId} get

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.disable_brokerage_authorization

Manually force the specified connection to become disabled. This should only be used for testing a reconnect flow, and never used on production connections. Will trigger a disconnect as if it happened naturally, and send a CONNECTION_BROKEN webhook for the connection.

Please contact us in order to use this endpoint as it is disabled by default.

๐Ÿ› ๏ธ Usage

disable_brokerage_authorization_response = (
    snaptrade.connections.disable_brokerage_authorization(
        authorization_id="87b24961-b51e-4db8-9226-f198f6518a89",
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    )
)

โš™๏ธ Parameters

authorization_id: str
user_id: str
user_secret: str

๐Ÿ”„ Return

BrokerageAuthorizationDisabledConfirmation

๐ŸŒ Endpoint

/authorizations/{authorizationId}/disable post

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.list_brokerage_authorizations

Returns a list of all connections for the specified user. Note that Connection and Brokerage Authorization are interchangeable, but the term Connection is preferred and used in the doc for consistency.

A connection is usually tied to a single login at a brokerage. A single connection can contain multiple brokerage accounts.

SnapTrade performs de-duping on connections for a given user. If the user has an existing connection with the brokerage, when connecting the brokerage with the same credentials, SnapTrade will return the existing connection instead of creating a new one.

๐Ÿ› ๏ธ Usage

list_brokerage_authorizations_response = (
    snaptrade.connections.list_brokerage_authorizations(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str

๐Ÿ”„ Return

BrokerageAuthorization

๐ŸŒ Endpoint

/authorizations get

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.refresh_brokerage_authorization

Trigger a holdings update for all accounts under this connection. Updates will be queued asynchronously. ACCOUNT_HOLDINGS_UPDATED webhook will be sent once the sync completes for each account under the connection.

Please contact support for access as this endpoint is not enabled by default.

๐Ÿ› ๏ธ Usage

refresh_brokerage_authorization_response = (
    snaptrade.connections.refresh_brokerage_authorization(
        authorization_id="87b24961-b51e-4db8-9226-f198f6518a89",
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    )
)

โš™๏ธ Parameters

authorization_id: str
user_id: str
user_secret: str

๐Ÿ”„ Return

BrokerageAuthorizationRefreshConfirmation

๐ŸŒ Endpoint

/authorizations/{authorizationId}/refresh post

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.remove_brokerage_authorization

Deletes the connection specified by the ID. This will also delete all accounts and holdings associated with the connection. This action is irreversible. This endpoint is synchronous, a 204 response indicates that the connection has been successfully deleted.

๐Ÿ› ๏ธ Usage

snaptrade.connections.remove_brokerage_authorization(
    authorization_id="87b24961-b51e-4db8-9226-f198f6518a89",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
)

โš™๏ธ Parameters

authorization_id: str
user_id: str
user_secret: str

๐ŸŒ Endpoint

/authorizations/{authorizationId} delete

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.return_rates

Returns a list of rate of return percents for a given connection. Will include timeframes available from the brokerage, for example "ALL", "1Y", "6M", "3M", "1M"

๐Ÿ› ๏ธ Usage

return_rates_response = snaptrade.connections.return_rates(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    authorization_id="87b24961-b51e-4db8-9226-f198f6518a89",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
authorization_id: str

๐Ÿ”„ Return

RateOfReturnResponse

๐ŸŒ Endpoint

/authorizations/{authorizationId}/returnRates get

๐Ÿ”™ Back to Table of Contents


snaptrade.connections.session_events

Returns a list of session events associated with a user.

๐Ÿ› ๏ธ Usage

session_events_response = snaptrade.connections.session_events(
    partner_client_id="SNAPTRADETEST",
    user_id="917c8734-8470-4a3e-a18f-57c3f2ee6631,65e839a3-9103-4cfb-9b72-2071ef80c5f2",
    session_id="917c8734-8470-4a3e-a18f-57c3f2ee6631,65e839a3-9103-4cfb-9b72-2071ef80c5f2",
)

โš™๏ธ Parameters

partner_client_id: str
user_id: str

Optional comma separated list of user IDs used to filter the request on specific users

session_id: str

Optional comma separated list of session IDs used to filter the request on specific users

๐ŸŒ Endpoint

/sessionEvents get

๐Ÿ”™ Back to Table of Contents


snaptrade.options.get_option_strategy

Creates an option strategy object that will be used to place an option strategy order.

๐Ÿ› ๏ธ Usage

get_option_strategy_response = snaptrade.options.get_option_strategy(
    underlying_symbol_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
    legs=[
        {
            "action": "BUY_TO_OPEN",
            "option_symbol_id": "SPY220819P00200000",
            "quantity": 1,
        }
    ],
    strategy_type="CUSTOM",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="accountId_example",
)

โš™๏ธ Parameters

underlying_symbol_id: str
legs: List[OptionLeg]
strategy_type: str
user_id: str
user_secret: str
account_id: str

The ID of the account to create the option strategy object in.

โš™๏ธ Request Body

Any

๐Ÿ”„ Return

StrategyQuotes

๐ŸŒ Endpoint

/accounts/{accountId}/optionStrategy post

๐Ÿ”™ Back to Table of Contents


snaptrade.options.get_options_chain

Returns the option chain for the specified symbol in the specified account.

๐Ÿ› ๏ธ Usage

get_options_chain_response = snaptrade.options.get_options_chain(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="accountId_example",
    symbol="symbol_example",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

The ID of the account to get the options chain from.

symbol: str

Universal symbol ID if symbol

๐Ÿ”„ Return

OptionChain

๐ŸŒ Endpoint

/accounts/{accountId}/optionsChain get

๐Ÿ”™ Back to Table of Contents


snaptrade.options.get_options_strategy_quote

Returns a Strategy Quotes object which has latest market data of the specified option strategy.

๐Ÿ› ๏ธ Usage

get_options_strategy_quote_response = snaptrade.options.get_options_strategy_quote(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="accountId_example",
    option_strategy_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

The ID of the account the strategy will be placed in.

option_strategy_id: str

Option strategy id obtained from response when creating option strategy object

๐Ÿ”„ Return

StrategyQuotes

๐ŸŒ Endpoint

/accounts/{accountId}/optionStrategy/{optionStrategyId} get

๐Ÿ”™ Back to Table of Contents


snaptrade.options.list_option_holdings

Returns a list of option positions in the specified account. For stock/ETF/crypto/mutual fund positions, please use the positions endpoint.

The data returned here is cached. How long the data is cached for varies by brokerage. Check the brokerage integrations doc and look for "Cache Expiry Time" to see the exact value for a specific brokerage. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

list_option_holdings_response = snaptrade.options.list_option_holdings(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str

๐Ÿ”„ Return

OptionsPosition

๐ŸŒ Endpoint

/accounts/{accountId}/options get

๐Ÿ”™ Back to Table of Contents


snaptrade.options.place_option_strategy

Places the option strategy order and returns the order record received from the brokerage.

๐Ÿ› ๏ธ Usage

place_option_strategy_response = snaptrade.options.place_option_strategy(
    order_type="Market",
    time_in_force="FOK",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
    option_strategy_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
    price=31.33,
)

โš™๏ธ Parameters

order_type: OrderTypeStrict
time_in_force: TimeInForceStrict
user_id: str
user_secret: str
account_id: str

The ID of the account to execute the strategy in.

option_strategy_id: str

Option strategy id obtained from response when creating option strategy object

price: Price

โš™๏ธ Request Body

Any

๐Ÿ”„ Return

StrategyOrderRecord

๐ŸŒ Endpoint

/accounts/{accountId}/optionStrategy/{optionStrategyId}/execute post

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_currency_exchange_rate_pair

Returns an Exchange Rate Pair object for the specified Currency Pair.

๐Ÿ› ๏ธ Usage

get_currency_exchange_rate_pair_response = (
    snaptrade.reference_data.get_currency_exchange_rate_pair(
        currency_pair="currencyPair_example",
    )
)

โš™๏ธ Parameters

currency_pair: str

A currency pair based on currency code for example, {CAD-USD}

๐Ÿ”„ Return

ExchangeRatePairs

๐ŸŒ Endpoint

/currencies/rates/{currencyPair} get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_partner_info

Returns configurations for your SnapTrade Client ID, including allowed brokerages and data access.

๐Ÿ› ๏ธ Usage

get_partner_info_response = snaptrade.reference_data.get_partner_info()

๐Ÿ”„ Return

PartnerData

๐ŸŒ Endpoint

/snapTrade/partners get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_security_types

Return all available security types supported by SnapTrade.

๐Ÿ› ๏ธ Usage

get_security_types_response = snaptrade.reference_data.get_security_types()

๐Ÿ”„ Return

SecurityType

๐ŸŒ Endpoint

/securityTypes get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_stock_exchanges

Returns a list of all supported Exchanges.

๐Ÿ› ๏ธ Usage

get_stock_exchanges_response = snaptrade.reference_data.get_stock_exchanges()

๐Ÿ”„ Return

Exchange

๐ŸŒ Endpoint

/exchanges get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_symbols

Returns a list of Universal Symbol objects that match the given query. The matching takes into consideration both the ticker and the name of the symbol. Only the first 20 results are returned.

๐Ÿ› ๏ธ Usage

get_symbols_response = snaptrade.reference_data.get_symbols(
    substring="AAPL",
)

โš™๏ธ Parameters

substring: str

The search query for symbols.

โš™๏ธ Request Body

SymbolQuery

๐Ÿ”„ Return

UniversalSymbol

๐ŸŒ Endpoint

/symbols post

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.get_symbols_by_ticker

Returns the Universal Symbol object specified by the ticker or the Universal Symbol ID. When a ticker is specified, the first matching result is returned. We largely follow the Yahoo Finance ticker format(click on "Yahoo Finance Market Coverage and Data Delays"). For example, for securities traded on the Toronto Stock Exchange, the symbol has a '.TO' suffix. For securities traded on NASDAQ or NYSE, the symbol does not have a suffix. Please use the ticker with the proper suffix for the best results.

๐Ÿ› ๏ธ Usage

get_symbols_by_ticker_response = snaptrade.reference_data.get_symbols_by_ticker(
    query="query_example",
)

โš™๏ธ Parameters

query: str

The ticker or Universal Symbol ID to look up the symbol with.

๐Ÿ”„ Return

UniversalSymbol

๐ŸŒ Endpoint

/symbols/{query} get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.list_all_brokerage_authorization_type

Returns a list of all defined Brokerage authorization Type objects.

๐Ÿ› ๏ธ Usage

list_all_brokerage_authorization_type_response = (
    snaptrade.reference_data.list_all_brokerage_authorization_type(
        brokerage="QUESTRADE,ALPACA",
    )
)

โš™๏ธ Parameters

brokerage: str

Comma separated value of brokerage slugs

๐Ÿ”„ Return

BrokerageAuthorizationTypeReadOnly

๐ŸŒ Endpoint

/brokerageAuthorizationTypes get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.list_all_brokerages

Returns a list of all defined Brokerage objects.

๐Ÿ› ๏ธ Usage

list_all_brokerages_response = snaptrade.reference_data.list_all_brokerages()

๐Ÿ”„ Return

Brokerage

๐ŸŒ Endpoint

/brokerages get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.list_all_currencies

Returns a list of all defined Currency objects.

๐Ÿ› ๏ธ Usage

list_all_currencies_response = snaptrade.reference_data.list_all_currencies()

๐Ÿ”„ Return

Currency

๐ŸŒ Endpoint

/currencies get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.list_all_currencies_rates

Returns a list of all Exchange Rate Pairs for all supported Currencies.

๐Ÿ› ๏ธ Usage

list_all_currencies_rates_response = (
    snaptrade.reference_data.list_all_currencies_rates()
)

๐Ÿ”„ Return

ExchangeRatePairs

๐ŸŒ Endpoint

/currencies/rates get

๐Ÿ”™ Back to Table of Contents


snaptrade.reference_data.symbol_search_user_account

Returns a list of Universal Symbol objects that match the given query. The matching takes into consideration both the ticker and the name of the symbol. Only the first 20 results are returned.

The search results are further limited to the symbols supported by the brokerage for which the account is under.

๐Ÿ› ๏ธ Usage

symbol_search_user_account_response = (
    snaptrade.reference_data.symbol_search_user_account(
        user_id="snaptrade-user-123",
        user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
        account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
        substring="AAPL",
    )
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str
substring: str

The search query for symbols.

โš™๏ธ Request Body

SymbolQuery

๐Ÿ”„ Return

UniversalSymbol

๐ŸŒ Endpoint

/accounts/{accountId}/symbols post

๐Ÿ”™ Back to Table of Contents


snaptrade.trading.cancel_user_account_order

Attempts to cancel an open order with the brokerage. If the order is no longer cancellable, the request will be rejected.

๐Ÿ› ๏ธ Usage

cancel_user_account_order_response = snaptrade.trading.cancel_user_account_order(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    brokerage_order_id="66a033fa-da74-4fcf-b527-feefdec9257e",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
account_id: str
brokerage_order_id: str

Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

โš™๏ธ Request Body

Any

๐Ÿ”„ Return

AccountOrderRecord

๐ŸŒ Endpoint

/accounts/{accountId}/orders/cancel post

๐Ÿ”™ Back to Table of Contents


snaptrade.trading.get_order_impact

Simulates an order and its impact on the account. This endpoint does not place the order with the brokerage. If successful, it returns a Trade object and the ID of the object can be used to place the order with the brokerage using the place checked order endpoint. Please note that the Trade object returned expires after 5 minutes. Any order placed using an expired Trade will be rejected.

๐Ÿ› ๏ธ Usage

get_order_impact_response = snaptrade.trading.get_order_impact(
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    action="BUY",
    universal_symbol_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
    order_type="Market",
    time_in_force="FOK",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    price=31.33,
    stop=31.33,
    units=10.5,
    notional_value=None,
)

โš™๏ธ Parameters

account_id: str

Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

action: ActionStrict
universal_symbol_id: str

Unique identifier for the symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls.

order_type: OrderTypeStrict
time_in_force: TimeInForceStrict
user_id: str
user_secret: str
price: Optional[Union[int, float]]

The limit price for Limit and StopLimit orders.

stop: Optional[Union[int, float]]

The price at which a stop order is triggered for Stop and StopLimit orders.

units: UnitsNullable
notional_value: NotionalValueNullable

โš™๏ธ Request Body

ManualTradeForm

๐Ÿ”„ Return

ManualTradeAndImpact

๐ŸŒ Endpoint

/trade/impact post

๐Ÿ”™ Back to Table of Contents


snaptrade.trading.get_user_account_quotes

Returns quotes from the brokerage for the specified symbols and account. The quotes returned can be delayed depending on the brokerage the account belongs to. It is highly recommended that you use your own market data provider for real-time quotes instead of relying on this endpoint. This endpoint does not work for options quotes.

๐Ÿ› ๏ธ Usage

get_user_account_quotes_response = snaptrade.trading.get_user_account_quotes(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    symbols="symbols_example",
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    use_ticker=True,
)

โš™๏ธ Parameters

user_id: str
user_secret: str
symbols: str

List of Universal Symbol IDs or tickers to get quotes for.

account_id: str
use_ticker: bool

Should be set to True if symbols are comprised of tickers. Defaults to False if not provided.

๐Ÿ”„ Return

SymbolsQuotes

๐ŸŒ Endpoint

/accounts/{accountId}/quotes get

๐Ÿ”™ Back to Table of Contents


snaptrade.trading.place_force_order

Places a brokerage order in the specified account. The order could be rejected by the brokerage if it is invalid or if the account does not have sufficient funds.

This endpoint does not compute the impact to the account balance from the order and any potential commissions before submitting the order to the brokerage. If that is desired, you can use the check order impact endpoint.

It's recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the manual refresh endpoint for this.

๐Ÿ› ๏ธ Usage

place_force_order_response = snaptrade.trading.place_force_order(
    account_id="917c8734-8470-4a3e-a18f-57c3f2ee6631",
    action="BUY",
    order_type="Market",
    time_in_force="FOK",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    universal_symbol_id="2bcd7cc3-e922-4976-bce1-9858296801c3",
    symbol="AAPL  131124C00240000",
    price=31.33,
    stop=31.33,
    units=10.5,
    notional_value=None,
)

โš™๏ธ Parameters

account_id: str

Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

action: ActionStrictWithOptions
order_type: OrderTypeStrict
time_in_force: TimeInForceStrict
user_id: str
user_secret: str
universal_symbol_id: UniversalSymbolIDNullable

The universal symbol ID of the security to trade. Must be 'null' if symbol is provided, otherwise must be provided.

symbol: Optional[str]

The security's trading ticker symbol. This currently only support Options symbols in the 21 character OCC format. For example \"AAPL 131124C00240000\" represents a call option on AAPL expiring on 2024-11-13 with a strike price of $240. For more information on the OCC format, see here. If 'symbol' is provided, then 'universal_symbol_id' must be 'null'.

price: Optional[Union[int, float]]

The limit price for Limit and StopLimit orders.

stop: Optional[Union[int, float]]

The price at which a stop order is triggered for Stop and StopLimit orders.

units: Union[int, float]

For Equity orders, this represents the number of shares for the order. This can be a decimal for fractional orders. Must be null if notional_value is provided. If placing an Option order, this field represents the number of contracts to buy or sell. (e.g., 1 contract = 100 shares).

notional_value: NotionalValueNullable

โš™๏ธ Request Body

ManualTradeFormWithOptions

๐Ÿ”„ Return

AccountOrderRecord

๐ŸŒ Endpoint

/trade/place post

๐Ÿ”™ Back to Table of Contents


snaptrade.trading.place_order

Places the previously checked order with the brokerage. The tradeId is obtained from the check order impact endpoint. If you prefer to place the order without checking for impact first, you can use the place order endpoint.

It's recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the manual refresh endpoint for this.

๐Ÿ› ๏ธ Usage

place_order_response = snaptrade.trading.place_order(
    trade_id="139e307a-82f7-4402-b39e-4da7baa87758",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    wait_to_confirm=True,
)

โš™๏ธ Parameters

trade_id: str

Obtained from calling the check order impact endpoint

user_id: str
user_secret: str
wait_to_confirm: Optional[bool]

Optional, defaults to true. Determines if a wait is performed to check on order status. If false, latency will be reduced but orders returned will be more likely to be of status PENDING as we will not wait to check on the status before responding to the request.

โš™๏ธ Request Body

ValidatedTradeBody

๐Ÿ”„ Return

AccountOrderRecord

๐ŸŒ Endpoint

/trade/{tradeId} post

๐Ÿ”™ Back to Table of Contents


snaptrade.transactions_and_reporting.get_activities

Returns all historical transactions for the specified user and filtering criteria. It's recommended to use startDate and endDate to paginate through the data, as the response may be very large for accounts with a long history and/or a lot of activity. There's a max number of 10000 transactions returned per request.

There is no guarantee to the ordering of the transactions returned. Please sort the transactions based on the trade_date field if you need them in a specific order.

The data returned here is always cached and refreshed once a day. If you need real-time data, please use the manual refresh endpoint.

๐Ÿ› ๏ธ Usage

get_activities_response = snaptrade.transactions_and_reporting.get_activities(
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    start_date="2022-01-24",
    end_date="2022-01-24",
    accounts="917c8734-8470-4a3e-a18f-57c3f2ee6631,65e839a3-9103-4cfb-9b72-2071ef80c5f2",
    brokerage_authorizations="917c8734-8470-4a3e-a18f-57c3f2ee6631,65e839a3-9103-4cfb-9b72-2071ef80c5f2",
    type="BUY,SELL,DIVIDEND",
)

โš™๏ธ Parameters

user_id: str
user_secret: str
start_date: date

The start date (inclusive) of the transaction history to retrieve. If not provided, the default is the first transaction known to SnapTrade based on trade_date.

end_date: date

The end date (inclusive) of the transaction history to retrieve. If not provided, the default is the last transaction known to SnapTrade based on trade_date.

accounts: str

Optional comma separated list of SnapTrade Account IDs used to filter the request to specific accounts. If not provided, the default is all known brokerage accounts for the user. The brokerageAuthorizations parameter takes precedence over this parameter.

brokerage_authorizations: str

Optional comma separated list of SnapTrade Connection (Brokerage Authorization) IDs used to filter the request to only accounts that belong to those connections. If not provided, the default is all connections for the user. This parameter takes precedence over the accounts parameter.

type: str

Optional comma separated list of transaction types to filter by. SnapTrade does a best effort to categorize brokerage transaction types into a common set of values. Here are some of the most popular values: - BUY - Asset bought. - SELL - Asset sold. - DIVIDEND - Dividend payout. - CONTRIBUTION - Cash contribution. - WITHDRAWAL - Cash withdrawal. - REI - Dividend reinvestment. - INTEREST - Interest deposited into the account. - FEE - Fee withdrawn from the account. - OPTIONEXPIRATION - Option expiration event. - OPTIONASSIGNMENT - Option assignment event. - OPTIONEXERCISE - Option exercise event.

๐Ÿ”„ Return

UniversalActivity

๐ŸŒ Endpoint

/activities get

๐Ÿ”™ Back to Table of Contents


snaptrade.transactions_and_reporting.get_reporting_custom_range

Deprecated

Returns performance information (contributions, dividends, rate of return, etc) for a specific timeframe. Please note that Total Equity Timeframe and Rate of Returns are experimental features. Please contact support@snaptrade.com if you notice any inconsistencies.

๐Ÿ› ๏ธ Usage

get_reporting_custom_range_response = snaptrade.transactions_and_reporting.get_reporting_custom_range(
    start_date="2022-01-24",
    end_date="2022-01-24",
    user_id="snaptrade-user-123",
    user_secret="adf2aa34-8219-40f7-a6b3-60156985cc61",
    accounts="917c8734-8470-4a3e-a18f-57c3f2ee6631,65e839a3-9103-4cfb-9b72-2071ef80c5f2",
    detailed=True,
    frequency="monthly",
)

โš™๏ธ Parameters

start_date: date
end_date: date
user_id: str
user_secret: str
accounts: str

Optional comma separated list of account IDs used to filter the request on specific accounts

detailed: bool

Optional, increases frequency of data points for the total value and contribution charts if set to true

frequency: str

Optional frequency for the rate of return chart (defaults to monthly). Possible values are daily, weekly, monthly, quarterly, yearly.

๐Ÿ”„ Return

PerformanceCustom

๐ŸŒ Endpoint

/performance/custom get

๐Ÿ”™ Back to Table of Contents


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-11.0.55.tar.gz (211.3 kB view details)

Uploaded Source

Built Distribution

snaptrade_python_sdk-11.0.55-py3-none-any.whl (799.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for snaptrade_python_sdk-11.0.55.tar.gz
Algorithm Hash digest
SHA256 59c9593189f2174b0179998048a01285590896b9220e2e77e041f295b552e5eb
MD5 b7f7cd4f415d931339a0a1ae9e27174c
BLAKE2b-256 240b1a294a4c330388367e9af51a9c307bb46a8b15c562f52e2e576955914367

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snaptrade_python_sdk-11.0.55-py3-none-any.whl
Algorithm Hash digest
SHA256 831e6d43e731594299049eeff6df8569e231cdf4e74cd40a7b03350ee335012a
MD5 3aeaa17657e99b766c85a9734752deb3
BLAKE2b-256 d02092a9c2e2d8679e7a0effd3f662f91889d1c976d7db5c7071ee70e5030d7e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page