---
title: "Get account details"
method: GET
path: "/accounts/{accountId}/details"
tags: ["Account Information"]
---

# Get account details

`GET /accounts/{accountId}/details`

## Request

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

Returns the specified account for the authenticated user. The account can be an investment, deposit, line of credit, or annuity account. Use the `kind` discriminator to determine the schema for the account.

On Pay as you Go / Real-time, this endpoint refreshes the account's opening date and total net value (`net_value`) live from the institution on each call, along with funding date for `investment` accounts.

On Pay as you Go / Daily, this endpoint returns Daily data. Daily data is cached and refreshed once a day. Exact refresh timing may vary by institution. To force a refresh, use the [manual refresh endpoint](/reference/Connections/Connections_refreshBrokerageAuthorization).

Check your API key on the [Customer Dashboard billing page](https://dashboard.snaptrade.com/settings/billing) to see whether your plan includes real-time data.

If the connection has become disabled, it can no longer access the latest data from the institution, but will continue to return the last available cached state. Please see [this guide](/docs/fix-broken-connections) on how to fix a disabled connection.

## Path parameters

- `accountId` string, uuid, required: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

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

- 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
- `404`: The requested resource does not exist.
- `429`: Rate limit exceeded. Check `X-RateLimit-Remaining` (customer-level) and `X-RateLimit-Account-Remaining` (account-level) to see which limit you hit, then wait for the matching `*-Reset` value before retrying. Not every header listed below appears on every operation. The `X-RateLimit-Account-*` headers are sent only where the per-account limit is enforced, and OAuth-authenticated requests never receive the customer-level `X-RateLimit-Limit`, `X-RateLimit-Remaining` or `X-RateLimit-Reset`. A separate per-authenticated-user limit, reported in no `X-RateLimit-*` header, covers OAuth-authenticated requests and signed requests not governed by the customer-level limit; it does not stack on top of that limit. So a 429 can arrive with every reported counter above zero — or with no `X-RateLimit-*` headers at all. Honour `Retry-After` in that case.

## Changes

- **2026-10-23** `60be624d75b7`: 1 breaking, 1 info
  - added `#/components/schemas/AnnuityAccount` to the response body `oneOf` list for the response status `200`
  - added `annuity` mapping keys to the response discriminator for the response status `200`
- **2026-10-14** `efd73af6c911`: 7 breaking
  - the `code` response's property type changed from `string` to no type for status `429`
  - the `default_code` response's property type changed from `string` to no type for status `401`
  - the `default_code` response's property type changed from `string` to no type for status `404`
  - the `default_detail` response's property type changed from `string` to no type for status `401`
  - …3 more
- **2026-10-14** `07c9022b410a`: 7 breaking
  - the `code` response's property type changed from no type to `string` for status `429`
  - the `default_code` response's property type changed from no type to `string` for status `401`
  - the `default_code` response's property type changed from no type to `string` for status `404`
  - the `default_detail` response's property type changed from no type to `string` for status `401`
  - …3 more
- **2026-10-09** `0e8edf44a69b`: 2 info
  - api tag `Account Information` added
  - api tag `Experimental endpoints` removed
- …earlier changes not shown

[Operation history](https://skmtc.dev/passiv/apis/snaptrade/changes/accounts/:accountId/details/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)
