---
title: "List all accounts for the user, plus balances, positions, and orders for each account."
method: GET
path: "/holdings"
tags: ["Account Information"]
deprecated: true
---

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

`GET /holdings`

> **Deprecated.**

**Deprecated.** Use the account-specific holdings endpoint instead.

This endpoint will return HTTP 410 Gone for all customers that sign up after April 25, 2026.

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

## Query parameters

- `userId` string, required — 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.
- `userSecret` string, required — 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](/reference/Authentication/Authentication_resetSnapTradeUserSecret).
- `brokerage_authorizations` string, uuid

## Response `200`

Returns list of accounts and holdings

- AccountHoldings[]
  - `account` SnapTradeHoldingsAccount — SnapTradeUser Investment Account
    - `id` string, uuid
    - `brokerage_authorization` BrokerageAuthorization — A single connection with a brokerage. 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.
      - `id` string, uuid — Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade.
      - `created_date` string, date-time — Timestamp of when the connection was established in SnapTrade.
      - `brokerage` Brokerage — Describes a brokerage that SnapTrade supports.
        - `id` string, uuid — Unique identifier for the brokerage firm. This is the UUID used to reference the brokerage in SnapTrade.
        - `slug` string — A short, unique identifier for the brokerage. It is usually the name of the brokerage in capital letters and will never change.
        - `name` string — Full name of the brokerage.
        - `display_name` string — A display-friendly name of the brokerage.
        - `description` string — A brief description of the brokerage.
        - `aws_s3_logo_url` string, url — URL to the brokerage's logo.
        - `aws_s3_square_logo_url` string, url, nullable — URL to the brokerage's logo in square format.
        - `url` string, url, nullable — URL to the brokerage's website. Returns null if the brokerage has no website on record.
        - `enabled` boolean — Whether the brokerage is enabled in SnapTrade. A disabled brokerage will not be available for new connections.
        - `maintenance_mode` boolean — Whether the brokerage is currently in maintenance mode. A brokerage in maintenance mode will not be available for new connections.
        - `is_degraded` boolean — Whether the brokerage is currently degraded. A degraded brokerage may have reduced functionality or be experiencing technical issues.
        - `allows_trading` boolean, nullable — Whether the brokerage allows trading through SnapTrade.
        - `allows_fractional_units` boolean, nullable — This field is deprecated. Please contact us if you have a valid use case for it.
        - `has_reporting` boolean, nullable — This field is deprecated. Please contact us if you have a valid use case for it.
        - `is_real_time_connection` boolean — This field is deprecated. Please contact us if you have a valid use case for it.
        - `brokerage_type` BrokerageType — Type of brokerage. Currently supports traditional brokerages and crypto exchanges.
          - `id` string, uuid
          - `name` string
        - `exchanges` unknown[] — This field is deprecated. Please contact us if you have a valid use case for it.
          - unknown
        - `open_url` string, url, nullable — This field is deprecated.
      - `name` string — A short, human-readable name for the connection.
      - `type` string — Whether the connection is read-only or trade-enabled. A read-only connection can only be used to fetch data, while a trade-enabled connection can be used to place trades. Valid values are `read` and `trade`.
      - `disabled` boolean — Whether the connection is disabled. A disabled connection can no longer access the latest data from the brokerage, but will continue to return the last cached state. A connection can become disabled for many reasons and differs by brokerage. Here are some common scenarios: - The user has changed their username or password at the brokerage. - The user has explicitly removed the access grant at the brokerage. - The session has expired at the brokerage and now requires explicit user re-authentication. Please see [this guide](/docs/fix-broken-connections) on how to fix a disabled connection.
      - `disabled_date` string, date-time, nullable — Timestamp of when the connection was disabled in SnapTrade.
      - `meta` object — Additional data about the connection. This information is specific to the brokerage and there's no standard format for this data. This field is deprecated and subject to removal in a future version.
      - `updated_date` string, date-time — Timestamp of when the connection was last updated in SnapTrade. This field is deprecated. Please let us know if you have a valid use case for this field.
      - `is_eligible_for_payout` boolean — Whether the connection is eligible for a payout. This is an experimental field that is NOT generally available for all partners. Do not use in production without speaking to the SnapTrade team.
      - `data_freshness_mode` string — Possible values include: - realtime - delayed Indicates whether SnapTrade will provide delayed or realtime data for this connection. `delayed` means SnapTrade uses cached data for the connection because of the customer's plan, or because of brokerage limitations. `realtime` means SnapTrade retrieves current data from the brokerage during API calls. See the "Data freshness" column on the "Positions & recent orders" tab at https://support.snaptrade.com/brokerages.
    - `portfolio_group` string, uuid
    - `name` string, nullable
    - `number` string
    - `institution_name` string
    - `sync_status` AccountSyncStatus — Contains status update for the account sync process between SnapTrade and the brokerage.
      - `transactions` TransactionsStatus — Status of account transaction sync. SnapTrade syncs transactions from the brokerage under the following conditions: 1. Initial connection - SnapTrade syncs all transactions from the brokerage account as far back as the brokerage allows. Check [our integrations doc](https://support.snaptrade.com/brokerages-table?v=6fab8012ade6441fa0c6d9af9c55ce3a) for details on how far back we sync for each brokerage. 2. Daily sync - Once a day SnapTrade syncs new transactions from the brokerage. 3. Manual sync - You can trigger an incremental sync of transactions with the [transactions sync](/reference/Experimental%20endpoints/Connections_syncBrokerageAuthorizationTransactions) endpoint.
        - `initial_sync_completed` boolean — Indicates if the initial sync of transactions has been completed. For accounts with a large number of transactions, the initial sync may take a while to complete.
        - `last_successful_sync` string, date, nullable — Date in YYYY-MM-DD format or null
        - `first_transaction_date` string, date, nullable — Date in YYYY-MM-DD format or null
      - `holdings` HoldingsStatus — Status of account holdings sync. SnapTrade syncs holdings from the brokerage under the following conditions: 1. Initial connection - SnapTrade syncs all holdings (positions, balances, recent orders, and transactions) immediately after the connection is established. 2. Daily sync - Once a day SnapTrade refreshes all holdings from the brokerage. 3. Manual sync - You can trigger a refresh of holdings with the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint.
        - `initial_sync_completed` boolean — Indicates if the initial sync of holdings has been completed. For accounts with a large number of positions/orders/transactions, the initial sync may take a while to complete.
        - `last_successful_sync` string, date-time, nullable — Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
        - `holdings_unavailable` boolean — Indicates that the brokerage does not expose this account's holdings to SnapTrade, so the empty positions and balances reported for it do not mean the account is empty. This is set for accounts served by a separate brokerage system that we cannot read, such as Vanguard employer-sponsored retirement plans. When this is `true`, prefer the account's total value over the sum of its positions and cash, and note that `initial_sync_completed` and `last_successful_sync` may still reflect an earlier sync.
    - `meta` object
  - `balances` Balance[], nullable
    - `currency` Currency — Describes a currency object.
      - `id` string, uuid — Unique identifier for the currency. This is the UUID used to reference the currency in SnapTrade.
      - `code` string — The ISO-4217 currency code for the currency.
      - `name` string — A human-friendly name of the currency.
    - `cash` number, nullable — The amount of available cash in the account denominated in the currency of the `currency` field. This value can be negative in a margin account with a margin balance. Money market funds will be included in this field, and also returned in positions endpoints with `cash_equivalent` = true
    - `buying_power` number, nullable — Buying power only applies to margin accounts. For non-margin accounts, buying power should be the same as cash. Please note that this field is not always available for all brokerages.
  - `positions` Position[], nullable
    - `symbol` PositionSymbol — Uniquely describes a security for the position within an account. The distinction between this and the `symbol` child property is that this object is specific to a position within an account, while the `symbol` child property is universal across all brokerage accounts. The caller should rely on the `symbol` child property for most use cases.
      - `symbol` UniversalSymbol — Uniquely describes a single security + exchange combination across all brokerages.
        - `id` string, uuid, required — Unique identifier for the symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls.
        - `symbol` string, required — The security's trading ticker symbol. For example "AAPL" for Apple Inc. We largely follow the [Yahoo Finance ticker format](https://help.yahoo.com/kb/SLN2310.html)(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.
        - `raw_symbol` string, required — The raw symbol is `symbol` with the exchange suffix removed. For example, if `symbol` is "VAB.TO", then `raw_symbol` is "VAB".
        - `description` string, nullable — A human-readable description of the security. This is usually the company name or ETF name.
        - `currency` Currency, required — Describes a currency object.
          - `id` string, uuid — Unique identifier for the currency. This is the UUID used to reference the currency in SnapTrade.
          - `code` string — The ISO-4217 currency code for the currency.
          - `name` string — A human-friendly name of the currency.
        - `exchange` Exchange — Describes a single stock or crypto exchange.
          - `id` string, uuid — Unique ID for the exchange in SnapTrade.
          - `code` string — A short name for the exchange. For standardized exchange code, please use the `mic_code` field.
          - `mic_code` string, nullable — The [Market Identifier Code](https://en.wikipedia.org/wiki/Market_Identifier_Code) (MIC) for the exchange.
          - `name` string — The full name of the exchange.
          - `timezone` string — The timezone for the trading hours (`start_time` and `close_time`) of the exchange.
          - `start_time` string — The time when the exchange opens for trading.
          - `close_time` string — The time when the exchange closes for trading.
          - `suffix` string, nullable — The suffix to be appended to the symbol when trading on this exchange. For example, the suffix for the Toronto Stock Exchange is `.TO`. See `UniversalSymbol->symbol` and `UniversalSymbol->raw_symbol` for more detail.
        - `type` SecurityType, required — The type of security. For example, "Common Stock" or "ETF".
          - `id` string, uuid — Unique identifier for the security type within SnapTrade. This is the ID used to reference the security type in SnapTrade API calls.
          - `code` string — A short code representing the security type. For example, "cs" for Common Stock. Here are some common values: - `ad` - ADR - `bnd` - Bond - `cs` - Common Stock - `cef` - Closed End Fund - `crypto` - Cryptocurrency - `et` - ETF - `oef` - Open Ended Fund - `pm` - Precious Metals - `ps` - Preferred Stock - `rt` - Right - `struct` - Structured Product - `ut` - Unit - `wi` - When Issued - `wt` - Warrant
          - `description` string — A human-readable description of the security type. For example, "Common Stock" or "ETF".
          - `is_supported` boolean — This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this.
        - `figi_code` string, nullable — This identifier is unique per security per trading venue. See section 1.4.1 of the [FIGI Standard](https://www.openfigi.com/assets/local/figi-allocation-rules.pdf) for more information. This value should be the same as the `figi_code` in the `figi_instrument` child property.
        - `figi_instrument` FigiInstrument — Financial Instrument Global Identifier (FIGI) information for the security. See [OpenFIGI](https://www.openfigi.com/) for more information.
          - `figi_code` string, nullable — This identifier is unique per security per trading venue. See section 1.4.1 of the [FIGI Standard](https://www.openfigi.com/assets/local/figi-allocation-rules.pdf) for more information.
          - `figi_share_class` string, nullable — This enables users to link multiple FIGIs for the same security in order to obtain an aggregated view across all countries and all exchanges. For example, `AAPL` has a different FIGI for each exchange/trading venue it is traded on. The `figi_share_class` is the same for all of these FIGIs. See section 1.4.3 of the [FIGI Standard](https://www.openfigi.com/assets/local/figi-allocation-rules.pdf) for more information.
        - `currencies` Currency[], required — This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this.
          - `id` string, uuid — Unique identifier for the currency. This is the UUID used to reference the currency in SnapTrade.
          - `code` string — The ISO-4217 currency code for the currency.
          - `name` string — A human-friendly name of the currency.
      - `id` string, uuid — A unique ID for the security within SnapTrade, scoped to the brokerage account that the security belongs to. This is a legacy field and should not be used. Do not rely on this being a stable ID as it can change.
      - `description` string — This field is deprecated and the caller should use the `symbol` child property's `description` instead.
      - `local_id` string, nullable — This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this.
      - `is_quotable` boolean — This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this.
      - `is_tradable` boolean — This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this.
    - `units` number, nullable — The number of shares of the position. This can be fractional or integer units. A positive number indicates a long position, while a negative number indicates a short position.
    - `price` number, nullable — Last known market price for the symbol. The freshness of this price depends on the brokerage. Some brokerages provide real-time prices, while others provide delayed prices. It is recommended that you rely on your own third-party market data provider for most up to date prices.
    - `open_pnl` number, nullable — The profit or loss on the position since it was opened. This is calculated as the difference between the current market value of the position and the total cost of the position. It is recommended to calculate this value using the average purchase price and the current market price yourself, instead of relying on this field.
    - `average_purchase_price` number, nullable — Cost basis _per share_ of this position.
    - `fractional_units` number, nullable — Deprecated, use the `units` field for both fractional and integer units going forward
    - `currency` Currency — Describes a currency object.
      - `id` string, uuid — Unique identifier for the currency. This is the UUID used to reference the currency in SnapTrade.
      - `code` string — The ISO-4217 currency code for the currency.
      - `name` string — A human-friendly name of the currency.
    - `cash_equivalent` boolean, nullable — If the position is a cash equivalent (usually a money market fund) that is also counted in account cash balance and buying power
    - `tax_lots` TaxLot[] — List of tax lots for the given position (disabled by default, only available on paid plans, contact support if needed)
      - `original_purchase_date` string, date-time, nullable — The date and time of the purchase.
      - `quantity` string, nullable — The number of shares in the tax lot. This can be fractional or integer units.
      - `purchased_price` string, nullable — The purchase price per share for the tax lot.
      - `cost_basis` string, nullable — The cost basis of the entire lot.
      - `current_value` string, nullable — The current market value of the entire lot.
      - `position_type` string, nullable — The type of position for the tax lot (e.g., LONG, SHORT).
      - `lot_id` string, nullable — The unique id for this specific tax lot
  - `total_value` SnapTradeHoldingsTotalValue — This field is deprecated. To get the brokerage reported total market value of the account, please refer to `account.balance.total`. The total market value of the account. Note that this field is calculated based on the sum of the values of account positions and cash balances known to SnapTrade. It may not be accurate if the brokerage account has holdings that SnapTrade is not aware of. For example, if the brokerage account holds assets that SnapTrade does not support, the total value may be underreported. In certain cases, this value may also be double-counting cash-equivalent assets if those assets are represented as both cash and positions in the account.
    - `value` number, nullable — Total value denominated in the currency of the `currency` field.
    - `currency` string, nullable — The ISO-4217 currency code for the amount.

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `425` — Too Early
- `500` — Unexpected Error

---

[API](https://skmtc.net/passiv/apis/snaptrade.md) · [All operations](https://skmtc.net/passiv/apis/snaptrade/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/passiv/snaptrade/revisions/993e058b557e/schema)
