---
title: "List all user accounts"
method: GET
path: "/accounts/all"
tags: ["Account Information"]
---

# List all user accounts

`GET /accounts/all`

## Request

- Base URL: `https://api.snaptrade.com`
- URL: `https://api.snaptrade.com/accounts/all`
- Auth: API key in header `Signature` and API key in query parameter `clientId` and API key in query parameter `timestamp`

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

The `results` list can contain multiple account types in the same response, including investment, deposit, line of credit, and annuity accounts. Use the `kind` discriminator to determine the schema for each account.

This endpoint returns Daily data regardless of the customer's plan. Daily data is cached and refreshed once a day, which makes this endpoint fast and well-suited to listing accounts across all of a user's connections in a single call. Exact refresh timing may vary by institution. To get real-time data on Pay as you Go / Real-time, use the [list accounts for a connection endpoint](/reference/Connections/Connections_listConnectionAccounts). Customers on Pay as you Go / Daily can force a refresh with the [manual refresh endpoint](/reference/Connections/Connections_refreshBrokerageAuthorization).

## 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).

## Response `200`

OK

- AllUserAccountsResponse: Accounts across all of the user's connections.
  - `results` ConnectionAccount[], required: Accounts returned for the request.
    - union: A single account under a connection, from the `kind`-discriminated union used by `Connections_listConnectionAccounts` and `AccountInformation_listAllUserAccounts`. Use `kind` to determine which schema is present. `investment`, `deposit`, `line_of_credit`, and `annuity` are implemented today.
      - InvestmentAccount: An investment account under a connection. `opening_date`, `funding_date`, and `net_value` are real-time or cached depending on the caller's plan -- see `Connections_listConnectionAccounts` -- and always cached on `AccountInformation_listAllUserAccounts`.
        - `kind` 'investment', required: Discriminator for the account kind.
        - `id` string, uuid, required: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.
        - `connection_id` string, uuid, required: Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade.
        - `display_name` string, nullable: A display name for the account. Either assigned by the user or by the institution itself.
        - `masked_account_number` string, required: The account number assigned by the institution, masked to the last 4 characters (e.g. `****8443`).
        - `institution_account_id` string, nullable: A stable and unique account identifier provided by the institution. Will be set to null if not provided. When present, can be used to check if a user has connected the same institution account across multiple connections.
        - `institution_id` string, uuid: Unique identifier for the institution that holds the account.
        - `opening_date` string, date-time, nullable: Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format indicating when the account was opened at the institution. Only populated for institutions that expose this data; `null` for all other institutions. See [supported institutions](https://support.snaptrade.com/brokerages) for the full list.
        - `funding_date` string, date-time, nullable: Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format indicating when the account was funded. Only populated for institutions that expose this data; `null` for all other institutions. See [supported institutions](https://support.snaptrade.com/brokerages) for the full list.
        - `sync_status` ConnectionAccountSyncStatus, required: Contains status updates for the account sync process between SnapTrade and the institution, used by `InvestmentAccount` in `Connections_listConnectionAccounts`. Each property is optional -- an institution may not report sync status for every data type. `orders`/`positions`/`balances` are the timestamp of the last successful sync of that data type (null if never synced). See `DepositAccountSyncStatus`/`LineOfCreditAccountSyncStatus` for the deposit/line-of-credit counterparts, which omit `orders`/`positions` since those account kinds don't place orders or hold positions.
          - `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
          - `orders` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
          - `positions` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
          - `balances` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
        - `raw_type` string, nullable: The account type as provided by the institution.
        - `cash_or_margin` 'cash' | 'margin' | 'unknown': Whether the account is a cash or margin account, normalized across institutions. - `cash`: The account cannot borrow on margin. Includes registered, retirement and employer plan accounts that can't use margin (for example TFSA, RRSP, 401(k) or ISA). - `margin`: A margin account, including portfolio margin accounts. Some institutions also report retirement accounts with limited margin (for example, trading before funds settle) as margin accounts. - `unknown`: SnapTrade doesn't have enough information to tell, or the distinction doesn't apply to the account (for example crypto accounts). Coverage is limited for Fidelity because its API doesn't report it for every account; Fidelity accounts default to `unknown` where it can't be determined.
        - `is_paper` boolean, required: Indicates whether the account is a paper (simulated) trading account.
        - `net_value` object, nullable: Net value of the account -- total market value for investment accounts. Shared across all account kinds -- negative for `line_of_credit` accounts, representing money owed. Null when unknown (e.g. a real-time fetch failed and no cached value exists).
          - `amount` number, nullable
          - `currency` string, nullable
      - DepositAccount: A deposit account (checking, savings) under a connection.
        - `kind` 'deposit', required: Discriminator for the account kind.
        - `id` string, uuid, required: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.
        - `connection_id` string, uuid, required: Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade.
        - `display_name` string, nullable: A display name for the account. Either assigned by the user or by the institution itself.
        - `masked_account_number` string, required: The account number assigned by the institution, masked to the last 4 characters (e.g. `****4821`).
        - `institution_account_id` string, nullable: A stable and unique account identifier provided by the institution. Will be set to null if not provided. When present, can be used to check if a user has connected the same institution account across multiple connections.
        - `institution_id` string, uuid: Unique identifier for the institution that holds the account.
        - `opening_date` string, date-time, nullable: Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format indicating when the account was opened at the institution. Only populated for institutions that expose this data; `null` for all other institutions.
        - `sync_status` DepositAccountSyncStatus, required: Contains status updates for the account sync process between SnapTrade and the institution, used by `DepositAccount` in `Connections_listConnectionAccounts`. Each property is optional -- an institution may not report sync status for every data type. Deposit accounts don't place orders or hold positions, so unlike `ConnectionAccountSyncStatus` this type has no `orders` or `positions` field. `balances` is the timestamp of the last successful sync of that data type (null if never synced).
          - `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
          - `balances` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
        - `raw_type` string, nullable: The account type as provided by the institution.
        - `net_value` object, nullable: Net value of the account -- cash balance for deposit accounts. Shared across all account kinds -- negative for `line_of_credit` accounts, representing money owed. Null when unknown (e.g. a real-time fetch failed and no cached value exists).
          - `amount` number, nullable
          - `currency` string, nullable
      - LineOfCreditAccount: A line-of-credit account (e.g. a credit card) under a connection.
        - `kind` 'line_of_credit', required: Discriminator for the account kind.
        - `id` string, uuid, required: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.
        - `connection_id` string, uuid, required: Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade.
        - `display_name` string, nullable: A display name for the account. Either assigned by the user or by the institution itself.
        - `masked_account_number` string, required: The account number assigned by the institution, masked to the last 4 characters (e.g. `****1881`).
        - `institution_account_id` string, nullable: A stable and unique account identifier provided by the institution. Will be set to null if not provided. When present, can be used to check if a user has connected the same institution account across multiple connections.
        - `institution_id` string, uuid: Unique identifier for the institution that holds the account.
        - `opening_date` string, date-time, nullable: Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format indicating when the account was opened at the institution. Only populated for institutions that expose this data; `null` for all other institutions.
        - `sync_status` LineOfCreditAccountSyncStatus, required: Contains status updates for the account sync process between SnapTrade and the institution, used by `LineOfCreditAccount` in `Connections_listConnectionAccounts`. Each property is optional -- an institution may not report sync status for every data type. Line-of-credit accounts don't place orders or hold positions, so like `DepositAccountSyncStatus` this type has no `orders` or `positions` field. `balances` is the timestamp of the last successful sync of that data type (null if never synced).
          - `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
          - `balances` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
        - `raw_type` string, nullable: The account type as provided by the institution.
        - `net_value` object, nullable: Net value of the account -- negative, representing money owed. Shared across all account kinds. Null when unknown (e.g. a real-time fetch failed and no cached value exists).
          - `amount` number, nullable
          - `currency` string, nullable
        - `minimum_payment_amount` object, nullable: The minimum payment due on the account's next statement. Omitted when no such data is available.
          - `amount` number, nullable
          - `currency` string, nullable
        - `available_credit` object, nullable: The remaining credit available to spend on the account (credit limit less the current balance). Omitted when no such data is available.
          - `amount` number, nullable
          - `currency` string, nullable
        - `next_payment_date` string, date, nullable: The date the account's next payment is due, in `YYYY-MM-DD` format. Omitted when no such data is available.
      - AnnuityAccount: An annuity contract account under a connection. Akoya accounts returned in the `annuityAccount` category use this kind; investment accounts holding annuity products remain `investment` accounts. `net_value` is the contract's surrender/cash value (`netPresentValue` from Akoya), not available cash. It is real-time or cached depending on the caller's plan, and always cached on `AccountInformation_listAllUserAccounts`.
        - `kind` 'annuity', required: Discriminator for the account kind.
        - `id` string, uuid, required: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.
        - `connection_id` string, uuid, required: Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade.
        - `display_name` string, nullable: A display name for the account. Either assigned by the user or by the institution itself.
        - `masked_account_number` string, required: The account number assigned by the institution, masked to the last 4 characters (e.g. `****4821`).
        - `institution_account_id` string, nullable: A stable and unique account identifier provided by the institution. Will be set to null if not provided. When present, can be used to check if a user has connected the same institution account across multiple connections.
        - `institution_id` string, uuid: Unique identifier for the institution that holds the account.
        - `opening_date` string, date-time, nullable: Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format indicating when the account was opened at the institution. Only populated for institutions that expose this data; `null` for all other institutions.
        - `sync_status` AnnuityAccountSyncStatus, required: Contains sync status for an annuity contract's value. Akoya annuity accounts do not expose transactions, orders, or positions, so those fields are omitted. `balances` is derived from the last successful holdings sync and is null if never synced. It tracks the contract value, not available cash.
          - `balances` string, date-time, nullable: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ)
        - `raw_type` string, nullable: The account type as provided by the institution.
        - `net_value` object, nullable: Net value of the annuity contract -- its surrender/cash value, not available cash. Omitted when unknown (e.g. a real-time fetch failed and no cached value exists).
          - `amount` number, nullable
          - `currency` string, nullable

## Other responses

- `401`: Unauthorized, invalid credentials for this resource

## Changes

- **2026-10-23** `60be624d75b7`: 1 breaking, 1 info
  - added `#/components/schemas/AnnuityAccount` to the `results/items/` response property `oneOf` list for the response status `200`
  - added `annuity` discriminator mapping keys to the `results/items/` response property for the response status `200`
- **2026-10-14** `efd73af6c911`: 2 breaking
  - the `default_code` response's property type changed from `string` to no type for status `401`
  - the `default_detail` response's property type changed from `string` to no type for status `401`
- **2026-10-14** `07c9022b410a`: 2 breaking
  - the `default_code` response's property type changed from no type to `string` for status `401`
  - the `default_detail` response's property type changed from no type to `string` for status `401`
- **2026-10-09** `0e8edf44a69b`: 2 info
  - api tag `Account Information` added
  - api tag `Experimental endpoints` removed
- **2026-10-07** `24a278733b30`: 1 warning, 1 info
  - removed the optional property `results/items/oneOf[#/components/schemas/InvestmentAccount]/account_type` from the response with the `200` status
  - added the optional property `results/items/oneOf[#/components/schemas/InvestmentAccount]/cash_or_margin` to the response with the `200` status

[Operation history](https://skmtc.dev/passiv/apis/snaptrade/changes/accounts/all/get.md)

---

[API](https://skmtc.dev/passiv/apis/snaptrade.md) - [All operations](https://skmtc.dev/passiv/apis/snaptrade/llms.txt) - [OpenAPI document](https://skmtc.dev/passiv/apis/snaptrade/revisions/60be624d75b7?raw)
