List all account positions
Changed onReturns a list of all positions in the specified account.
The results list can contain multiple instrument types in the same response, including stocks, ADRs, ETFs, mutual funds, closed-end funds, bonds, crypto, futures, option positions, future option positions, CFD positions, and tokenized asset positions. Use the instrument.kind discriminator to determine the schema for each position's instrument.
Beta: future option positions (instrument.kind: future_option) are in beta. They are currently returned only for tastytrade and Interactive Brokers connections, and only for partners they have been enabled for — please contact the SnapTrade team to enable them. The FutureOptionInstrument schema may change.
Positions counted in account cash balance or buying power include cash_equivalent: true. stock, adr, etf, mutualfund, and crypto positions may include tax_lots when tax lot data is enabled for the account. To see which institutions support tax lot data, please see our supported institutions doc.
If the connection has become disabled, it can no longer access the latest data from the brokerage, but will continue to return the last available cached state. Please see this guide on how to fix a disabled connection.
Request
- Base URLhttps://api.snaptrade.com
- URLhttps://api.snaptrade.com/accounts/{accountId}/positions/all
- AuthAPI key in header Signature and API key in query parameter clientId and API key in query parameter timestamp
Path parameters
Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.
Query parameters
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.
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.
Response
OK
Example response
{
"results": [
{
"instrument": {
"kind": "stock",
"id": "1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324",
"symbol": "AAPL",
"raw_symbol": "AAPL",
"description": "Apple Inc.",
"currency": "USD",
"exchange": "XNAS",
"figi_instrument": {
"figi_code": "BBG000B9Y5X2",
"figi_share_class": "BBG001S5N8V8"
}
},
"units": "10.5",
"price": "123.45",
"cost_basis": "118.2",
"currency": "USD",
"tax_lots": [
{
"original_purchase_date": "2022-01-15T10:30:00Z",
"quantity": "10",
"purchased_price": "100.50",
"cost_basis": "1005.00",
"current_value": "1200.00",
"position_type": "LONG",
"lot_id": "12345678"
}
]
}
],
"data_freshness": {
"as_of": "2026-06-02T14:30:00Z"
}
}Changes
- breaking
the
response's property type changed fromstringto no type for status - breaking
the
response's property type changed fromstringto no type for status - breaking
the
response's property type changed fromstringto no type for status - breaking
the
response's property type changed fromstringto no type for status - breaking
the
response's property type changed fromintegerto no type for status - breaking
the
response's property type changed fromintegerto no type for status
- breaking
- breaking
the
response's property type changed from no type tostringfor status - breaking
the
response's property type changed from no type tostringfor status - breaking
the
response's property type changed from no type tostringfor status - breaking
the
response's property type changed from no type tostringfor status - breaking
the
response's property type changed from no type tointegerfor status - breaking
the
response's property type changed from no type tointegerfor status
- breaking