openapi: 3.2.0 info: description: 'Connect brokerage accounts to your app for live positions and trading. ## Rate limiting Two limits apply to requests signed with your `clientId`. The stricter one wins, and exceeding either returns `429 Too Many Requests`. - **Customer-level** — 250 requests/minute by default, scoped to your `clientId` and applied across all endpoints. Reported in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. - **Account-level** — 10 requests/minute per account, scoped to (`clientId`, `accountId`). All covered operations for one account draw on the same bucket — reading balances and reading positions share it — and enforcement does not depend on the HTTP method, so updating an account consumes the same bucket as reading it. Only enforced for Personal users, and only for integrations it has been rolled out to — it is not yet in force for every Personal integration. It also does not apply on every operation that documents a 429 below. Where it applies it is reported in `X-RateLimit-Account-Limit`, `X-RateLimit-Account-Remaining` and `X-RateLimit-Account-Reset`. Do not read the absence of those headers as proof the limit is off — some configurations omit the rate limit headers while still enforcing the limit, so header absence tells you nothing about your allowance. On a 429, `X-RateLimit-Remaining: 0` means you hit the customer-level limit and `X-RateLimit-Account-Remaining: 0` means the account-level one. Wait for the corresponding `*-Reset` value (seconds) before retrying, or fall back to exponential backoff with jitter. Not every 429 is explained by those headers. A separate per-authenticated-user limit, reported in no `X-RateLimit-*` header, covers OAuth-authenticated requests and signed requests in configurations where the customer-level limit is not in effect — on the operations that use the default throttles. A few operations override those and are governed by the customer-level limit alone. The two do not stack: a signed request governed by the customer-level limit above is not additionally subject to the per-user one. If a 429 arrives with no header at zero — or with no `X-RateLimit-*` headers at all — honour `Retry-After` and back off. Treat the remaining counts as a hint, not a guarantee that the next request will succeed. Because the customer-level limit applies everywhere, any signed request can return 429. **OAuth-authenticated requests are an exception.** They are not subject to the customer-level limit and do not receive `X-RateLimit-Limit`, `X-RateLimit-Remaining` or `X-RateLimit-Reset` — do not wait on those headers or design around a customer-level allowance on this path. The account-level limit still applies to them on the account-data endpoints above, reported in the `X-RateLimit-Account-*` headers. On operations using the default throttles the per-user limit above applies to them as well, so an OAuth request can be rejected while the account headers still show capacity; on the few operations that override those throttles, OAuth callers have no per-user ceiling at all. Drive retries from `Retry-After` and exponential backoff with jitter rather than from the headers. See https://docs.snaptrade.com/docs/ratelimiting.' version: 1.0.0 title: SnapTrade Account Information API termsOfService: N/A contact: email: api@snaptrade.com x-konfig-ignore: potential-incorrect-type: true x-readme: explorer-enabled: false servers: - description: SnapTrade Production API url: https://api.snaptrade.com security: - PartnerSignature: [] PartnerClientId: [] PartnerTimestamp: [] tags: - name: Account Information description: Retrieve account information, such as positions, balances, etc. paths: /accounts/all: get: tags: - Account Information summary: List all user accounts description: '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, and line of credit 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. Customers on Pay as you Go / Daily can force a refresh with the manual refresh endpoint.' operationId: AccountInformation_listAllUserAccounts parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AllUserAccountsResponse' '401': description: Unauthorized, invalid credentials for this resource content: application/json: schema: $ref: '#/components/schemas/401FailedRequestResponse' /accounts/{accountId}/details: get: tags: - Account Information summary: Get account details description: 'Returns the specified account for the authenticated user. The account can be an investment, deposit, or line of credit 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. Check your API key on the Customer Dashboard billing page 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 on how to fix a disabled connection.' operationId: AccountInformation_getAccountDetails parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: path required: true name: accountId schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ConnectionAccount' '401': description: Unauthorized, invalid credentials for this resource content: application/json: schema: $ref: '#/components/schemas/401FailedRequestResponse' '404': description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/404FailedRequestResponse' '429': $ref: '#/components/responses/TooManyRequests' /accounts/{accountId}/balances: get: tags: - Account Information summary: List account balances operationId: AccountInformation_getUserAccountBalance description: '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. Check your API key on the Customer Dashboard billing page to see if you have real-time data access: - If you do, this endpoint returns real-time data. - If you don''t, Daily data is cached and refreshed once a day. Exact refresh timing may vary by brokerage. If you need real-time, use the manual refresh endpoint. 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.' parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Balance' '429': $ref: '#/components/responses/TooManyRequests' '503': description: Service Unavailable - the brokerage connection is busy syncing (sync lock held) or the brokerage API is temporarily unavailable, and no cached fallback was available. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/503BrokerageRequestResponse' default: description: Unexpected error /accounts/{accountId}/positions/all: get: tags: - Account Information summary: List all account positions operationId: AccountInformation_getAllAccountPositions description: 'Returns 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.' parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AllAccountPositionsResponse' '429': $ref: '#/components/responses/TooManyRequests' '503': description: Service Unavailable - the brokerage connection is busy syncing (sync lock held) or the brokerage API is temporarily unavailable, and no cached fallback was available. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/503BrokerageRequestResponse' default: description: Unexpected error /accounts/{accountId}/orders: get: tags: - Account Information summary: List account orders operationId: AccountInformation_getUserAccountOrders description: 'Returns a list of recent orders in the specified account. Check your API key on the Customer Dashboard billing page to see if you have real-time data access: - If you do, this endpoint returns real-time data. - If you don''t, Daily data is cached and refreshed once a day. Exact refresh timing may vary by brokerage. If you need real-time, use the manual refresh endpoint. 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.' parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: query name: state description: defaults to "all" schema: type: string enum: - all - open - executed - in: query name: days description: Number of days in the past to fetch the most recent orders. Defaults to the last 30 days if no value is passed in. Values greater than 90 will be capped at 90. schema: type: integer format: int32 minimum: 1 maximum: 90 example: 30 - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/AccountOrderRecord' '429': $ref: '#/components/responses/TooManyRequests' '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/500UnexpectedExceptionResponse' '501': description: Not Implemented - orders are not supported for this brokerage content: application/json: schema: $ref: '#/components/schemas/501NotImplementedResponse' '503': description: Service Unavailable - the brokerage connection is busy syncing (sync lock held) or the brokerage API is temporarily unavailable. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/503BrokerageRequestResponse' /accounts/{accountId}/balanceHistory: get: tags: - Account Information summary: List historical account total value operationId: AccountInformation_getAccountBalanceHistory description: 'Beta operation. An experimental endpoint that returns estimated historical total account value for the specified account. Total account value is the sum of the market value of all positions and cash in the account at a given time. This endpoint is experimental, disabled by default, and has a maximum lookback of 1 year. Because the data is dynamically generated, we recommend replacing your dataset with each request as opposed to combining data from multiple requests. Enable this feature for free in the Add-on page of the Customer Dashboard The data may contain gaps and is best used for charting account value trends. It should not be relied on as a complete or exact record of historical account values.' parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountValueHistoryResponse' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/403FeatureNotEnabledResponse' x-beta: true /accounts/{accountId}/recentOrders: get: tags: - Account Information summary: List account recent orders (last 24 hours only) operationId: AccountInformation_getUserAccountRecentOrders description: 'A lightweight endpoint that returns the latest page of orders placed in the last 24 hours in the specified account. For most brokerages, the default page size is 100 meaning the endpoint will return a max of 100 orders. This endpoint is realtime and can be used to quickly check if account state has recently changed due to an execution, or check status of recently placed orders Differs from /orders in that it is always realtime, and only checks the last 24 hours By default only returns executed orders, but that can be changed by setting *only_executed* to false' parameters: - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' - in: query name: only_executed description: Defaults to true. Indicates if request should fetch only executed orders. Set to false to retrieve non executed orders as well schema: type: boolean - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RecentOrdersResponse' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/403FeatureNotEnabledResponse' '429': $ref: '#/components/responses/TooManyRequests' '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/500UnexpectedExceptionResponse' '501': description: Not Implemented - recent orders are not supported for this brokerage content: application/json: schema: $ref: '#/components/schemas/501NotImplementedResponse' '503': description: Service Unavailable - the brokerage connection is busy syncing (sync lock held) or the brokerage API is temporarily unavailable. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/503BrokerageRequestResponse' /accounts/{accountId}/activities: get: tags: - Account Information summary: List account activities operationId: AccountInformation_getAccountActivities description: 'This endpoint is not deprecated and has no planned sunset. Responses to requests using the legacy `/api/v1` path prefix include `Deprecation: @1781222400` (June 12, 2026); that header applies only to the path prefix. Use the canonical root path `/accounts/{accountId}/activities`. Returns all historical transactions for the specified account. This endpoint is paginated with a default page size of 1000. The endpoint will return a maximum of 1000 transactions per request. See the query parameters for pagination options. Transaction are returned in reverse chronological order, using the `trade_date` field. This endpoint returns Daily data. Daily data is cached and refreshed once a day. Exact refresh timing may vary by brokerage. 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.' parameters: - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' - in: query required: false name: startDate description: 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`. schema: $ref: '#/components/schemas/ReportingDate' - in: query required: false name: endDate description: 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`. schema: $ref: '#/components/schemas/ReportingDate' - in: query required: false name: offset description: An integer that specifies the starting point of the paginated results. Default is 0. schema: type: integer format: int32 minimum: 0 - in: query required: false name: limit description: An integer that specifies the maximum number of transactions to return. Default of 1000. schema: type: integer format: int32 minimum: 1 - in: query required: false name: type description: "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:\n - `BUY` - Asset bought.\n - `SELL` - Asset sold.\n - `DIVIDEND` - Dividend payout.\n - `SUBSTITUTE_DIVIDEND` - Payment in lieu of a dividend.\n - `CONTRIBUTION` - Cash contribution.\n - `WITHDRAWAL` - Cash withdrawal.\n - `REI` - Dividend reinvestment.\n - `STOCK_DIVIDEND` - A type of dividend where a company distributes shares instead of cash\n - `INTEREST` - Interest deposited into the account.\n - `FEE` - Fee withdrawn from the account.\n - `TAX` - A tax related fee.\n - `OPTIONEXPIRATION` - Option expiration event.\n - `OPTIONASSIGNMENT` - Option assignment event.\n - `OPTIONEXERCISE` - Option exercise event.\n - `TRANSFER` - Transfer of assets from one account to another.\n - `SPLIT` - A stock share split.\n" schema: type: string example: BUY,SELL,DIVIDEND - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedUniversalActivity' '429': $ref: '#/components/responses/TooManyRequests' default: description: Unexpected error /accounts/{accountId}/orders/details: post: tags: - Account Information summary: Get account order detail operationId: AccountInformation_getUserAccountOrderDetail description: 'Returns the detail of a single order using the external order ID provided in the request body. This endpoint only works for single-leg orders at this time. Support for multi-leg orders will be added in the future. This endpoint is always realtime and does not rely on cached data. This endpoint only returns orders placed through SnapTrade. In other words, orders placed outside of the SnapTrade network are not returned by this endpoint.' parameters: - in: path name: accountId required: true schema: $ref: '#/components/schemas/AccountID' - in: query required: true name: userId schema: $ref: '#/components/schemas/UserID' - in: query required: true name: userSecret schema: $ref: '#/components/schemas/UserSecret' requestBody: $ref: '#/components/requestBodies/OrderDetailRequestBody' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountOrderRecord' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/400FailedRequestResponse' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/404FailedRequestResponse' '429': $ref: '#/components/responses/TooManyRequests' '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/500UnexpectedExceptionResponse' '503': description: Service Unavailable - the brokerage connection is busy syncing (sync lock held) or the brokerage API is temporarily unavailable. Safe to retry. content: application/json: schema: $ref: '#/components/schemas/503BrokerageRequestResponse' components: schemas: LineOfCreditAccountSyncStatus: description: '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). ' type: object properties: transactions: $ref: '#/components/schemas/TransactionsStatus' balances: description: The last time balances were successfully synced by SnapTrade. allOf: - $ref: '#/components/schemas/HoldingsSyncStatusDate' AccountPosition: description: Describes a single position. type: object properties: instrument: $ref: '#/components/schemas/Instrument' units: type: - string - 'null' format: decimal description: The number of units held in the position. Positive numbers indicate long positions and negative numbers indicate short positions. example: '10.5' price: type: - string - 'null' format: decimal description: Last known market price _per share_. 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. example: '123.45' cost_basis: type: - string - 'null' format: decimal description: Book price or average purchase price for the position. For options, this is per-share. example: '118.2' currency: type: - string - 'null' description: ISO-4217 currency code for the position `price` and `cost_basis`. example: USD cash_equivalent: type: boolean description: Present for mutual fund positions and for other instrument kinds when true. A true value means the position is also counted in cash balance or buying power. example: false tax_lots: type: array description: List of tax lots for the given position. Disabled by default; enable via the Customer Dashboard Add-ons page. When enabled, this field is included only for stocks, ADRs, ETFs, mutual funds, and crypto positions. For these positions, an empty list means no tax lot data is available. Availability varies by brokerage and position. This field is omitted for all other instrument kinds or when the feature is disabled. items: $ref: '#/components/schemas/TaxLot' required: - instrument UniversalSymbolID: description: Unique identifier for the symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls. type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 400FailedRequestResponse: description: Example for failed request response type: object properties: default_detail: example: Unable to verify data sent default_code: example: 1076 503BrokerageRequestResponse: description: Example for a response that failed because of an upstream brokerage API failure type: object properties: detail: example: Unable to sync with brokerage account. Invalid response from Brokerage API. status_code: example: 503 code: example: 3002 SyncStatusDate: description: Date in YYYY-MM-DD format or null type: - string - 'null' example: '2022-01-24' format: date AccountOrderRecordStatus: description: "Indicates the status of an order. SnapTrade does a best effort to map brokerage statuses to statuses in this enum.\nPossible values include:\n - NONE\n - PENDING\n - ACCEPTED\n - FAILED\n - REJECTED\n - CANCELED\n - PARTIAL_CANCELED\n - CANCEL_PENDING\n - EXECUTED\n - PARTIAL\n - REPLACE_PENDING\n - REPLACED\n - EXPIRED\n - QUEUED\n - TRIGGERED\n - ACTIVATED\n" type: string enum: - NONE - PENDING - ACCEPTED - FAILED - REJECTED - CANCELED - PARTIAL_CANCELED - CANCEL_PENDING - EXECUTED - PARTIAL - REPLACE_PENDING - REPLACED - STOPPED - SUSPENDED - EXPIRED - QUEUED - TRIGGERED - ACTIVATED - PENDING_RISK_REVIEW - CONTINGENT_ORDER AccountValueHistoryResponse: description: The response to the account value history endpoint, containing a list of estimated account values at different points in time. type: object properties: history: type: array description: List of estimated account values over time returned by the endpoint. The data may contain gaps and is best used for charting trends, rather than as a complete or exact record of historical account values. items: $ref: '#/components/schemas/AccountValueHistoryItem' currency: type: string description: The ISO-4217 currency code for the account values. example: USD BrokerageSymbolID: deprecated: true description: 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. type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 Id: type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 FigiInstrument: description: Financial Instrument Global Identifier (FIGI) information for the security. See [OpenFIGI](https://www.openfigi.com/) for more information. type: object properties: figi_code: description: 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. type: - string - 'null' example: BBG000B9Y5X2 figi_share_class: description: 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. type: - string - 'null' example: BBG001S5N8V8 UnderlyingTokenizedAssetInstrument: description: The listed stock or ETF underlying a tokenized asset. oneOf: - $ref: '#/components/schemas/StockInstrument' - $ref: '#/components/schemas/EtfInstrument' discriminator: propertyName: kind mapping: stock: '#/components/schemas/StockInstrument' etf: '#/components/schemas/EtfInstrument' OptionsSymbol: description: Uniquely describes an option security + exchange combination across all brokerages. type: object required: - id - ticker - option_type - strike_price - expiration_date - underlying_symbol properties: id: $ref: '#/components/schemas/OptionSymbolID' ticker: description: The [OCC symbol](https://en.wikipedia.org/wiki/Option_symbol) for the option. type: string example: AAPL 261218C00240000 option_type: description: The type of option. Either "CALL" or "PUT". type: string enum: - CALL - PUT example: CALL strike_price: description: The option strike price. type: number example: 240 expiration_date: description: The option expiration date. type: string format: date example: '2026-12-18' is_mini_option: description: Whether the option is a mini option. Mini options have 10 underlying shares per contract instead of the standard 100. type: boolean example: false underlying_symbol: $ref: '#/components/schemas/UnderlyingSymbol' OtherInstrument: description: Security instrument metadata for bonds and other mapped security positions. type: object properties: kind: type: string description: Type of security instrument. enum: - bond - other example: other id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: AAPL raw_symbol: type: string description: The raw symbol without any exchange suffix. example: AAPL description: type: - string - 'null' description: Human-readable description of the security. example: Apple Inc. currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNAS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol 401FailedRequestResponse: description: Example for failed request response type: object properties: default_detail: example: Unable to verify signature sent default_code: example: 1076 ConnectionAccount: description: '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`, and `line_of_credit` are implemented today. ' oneOf: - $ref: '#/components/schemas/InvestmentAccount' - $ref: '#/components/schemas/DepositAccount' - $ref: '#/components/schemas/LineOfCreditAccount' discriminator: propertyName: kind mapping: investment: '#/components/schemas/InvestmentAccount' deposit: '#/components/schemas/DepositAccount' line_of_credit: '#/components/schemas/LineOfCreditAccount' 500UnexpectedExceptionResponse: description: Example for a response that failed for unexpected reasons type: object properties: detail: example: Encountered an unexpected exception. status_code: example: 500 code: example: 1000 AccountUniversalActivity: description: A transaction or activity from an institution type: object properties: id: description: 'Unique identifier for the transaction. This is the ID used to reference the transaction in SnapTrade. Please note that this ID _can_ change if the transaction is deleted and re-added. Under normal circumstances, SnapTrade does not delete transactions. The only time this would happen is if SnapTrade re-fetches and reprocesses the data from the brokerage, which is rare. If you require a stable ID, please let us know and we can work with you to provide one. ' type: string example: 2f7dc9b3-5c33-4668-3440-2b31e056ebe6 symbol: description: The security for the transaction. The field is `null` if the transaction is not related to a security (like a deposit, withdrawal, fee, etc). SnapTrade does a best effort to map the brokerage's symbol. In cases where the brokerage symbol is not recognized, the field will be set to `null`. allOf: - $ref: '#/components/schemas/Symbol' currency_universal_symbol: description: The quote security for the transaction when `price`, `amount`, and `fee` are denominated in a security instead of a fiat currency. This is most common for cryptocurrency trades. The field is `null` when the transaction is denominated in `currency`. allOf: - $ref: '#/components/schemas/Symbol' option_symbol: description: The option security for the transaction. The field is `null` if the transaction is not related to an option security (like a deposit, withdrawal, fee, etc). SnapTrade does a best effort to map the brokerage's option symbol. In cases where the brokerage option symbol is not recognized, the field will be set to `null`. allOf: - $ref: '#/components/schemas/OptionsSymbol' price: description: The price of the security for the transaction. This is mostly applicable to `BUY`, `SELL`, and `DIVIDEND` transactions. For option transactions, this represents the price per share of the option contract. type: number example: 0.4 units: description: The number of units of the security for the transaction. This is mostly applicable to `BUY`, `SELL`, and `DIVIDEND` transactions. type: number example: 5.2 amount: description: The amount of the transaction denominated in `currency`. This can be positive or negative. In general, transactions that positively affect the account balance (like sell, deposits, dividends, etc) will have a positive amount, while transactions that negatively affect the account balance (like buy, withdrawals, fees, etc) will have a negative amount. type: - number - 'null' example: 263.82 currency: description: The currency in which the transaction `price`, `amount`, and `fee` are denominated. This is `null` when those values are denominated in `currency_universal_symbol`. allOf: - $ref: '#/components/schemas/Currency' type: type: string description: "A string representing the type of transaction. SnapTrade does a best effort to categorize the brokerage transaction types into a common set of values. Here are some of the most popular values:\n - `BUY` - Asset bought.\n - `SELL` - Asset sold.\n - `DIVIDEND` - Dividend payout.\n - `SUBSTITUTE_DIVIDEND` - Payment in lieu of a dividend.\n - `CONTRIBUTION` - Cash contribution.\n - `WITHDRAWAL` - Cash withdrawal.\n - `REI` - Dividend reinvestment.\n - `STOCK_DIVIDEND` - A type of dividend where a company distributes shares instead of cash\n - `INTEREST` - Interest deposited into the account.\n - `FEE` - Fee withdrawn from the account.\n - `TAX` - A tax related fee.\n - `OPTIONEXPIRATION` - Option expiration event.\n - `OPTIONASSIGNMENT` - Option assignment event.\n - `OPTIONEXERCISE` - Option exercise event.\n - `TRANSFER` - Transfer of asset(s) from one account to another.\n - `EXTERNAL_ASSET_TRANSFER_IN` - Incoming transfer of an asset from an external account to this account.\n - `EXTERNAL_ASSET_TRANSFER_OUT` - Outgoing transfer of an asset from this account to an external account.\n - `SPLIT` - A stock share split.\n - `ADJUSTMENT` - A one time adjustment of the account's cash balance or shares of an asset\n" example: BUY option_type: type: string example: BUY_TO_OPEN description: 'If an option `BUY` or `SELL` transaction, this further specifies the type of action. The possible values are: - BUY_TO_OPEN - BUY_TO_CLOSE - SELL_TO_OPEN - SELL_TO_CLOSE ' description: description: A human-readable description of the transaction. This is usually the brokerage's description of the transaction. When a transaction has an otherwise unresolved brokerage symbol with a long name, SnapTrade appends that name to make the activity identifiable. type: string example: WALT DISNEY UNIT DIST ON 21 SHS REC 12/31/21 PAY 01/06/22 trade_date: description: The recorded time for the transaction. The granularity of this timestamp depends on the brokerage. Some brokerages provide the exact time of the transaction, while others provide only the date. Please check the [integrations page](https://support.snaptrade.com/brokerages-table?v=6fab8012ade6441fa0c6d9af9c55ce3a) for the specific brokerage to see the granularity of the timestamps. Note that even though the field is named `trade_date`, it can represent any type of transaction, not just trades. type: - string - 'null' format: date-time example: '2024-03-22T16:27:55.000Z' settlement_date: description: The date on which the transaction is settled. type: string format: date-time example: '2024-03-26T00:00:00.000Z' fee: description: Any fee associated with the transaction if provided by the brokerage. type: number example: 0 fx_rate: type: - number - 'null' example: 1.032 description: The forex conversion rate involved in the transaction if provided by the brokerage. Used in cases where securities of one currency are purchased in a different currency, and the forex conversion is automatic. In those cases, price, amount and fee will be in the top level currency (activity -> currency) institution: description: The institution that the transaction is associated with. This is usually the brokerage name. type: string example: Robinhood external_reference_id: type: - string - 'null' description: Reference ID from brokerage used to identify related transactions. For example if an order comprises of several transactions (buy, fee, fx), they can be grouped if they share the same `external_reference_id` example: 2f7dc9b3-5c33-4668-3440-2b31e056ebe6 MutualFundInstrument: description: Security instrument metadata for mutual fund positions. type: object properties: kind: type: string description: Type of security instrument. enum: - mutualfund example: mutualfund id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: VFIAX raw_symbol: type: string description: The raw symbol without any exchange suffix. example: VFIAX description: type: - string - 'null' description: Human-readable description of the security. example: Vanguard 500 Index Fund Admiral Shares currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNAS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol AccountID: description: Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade. type: string format: uuid example: 917c8734-8470-4a3e-a18f-57c3f2ee6631 UniversalSymbol: description: Uniquely describes a single security + exchange combination across all brokerages. type: object properties: id: $ref: '#/components/schemas/UniversalSymbolID' symbol: description: 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. Share classes and preferred series use SnapTrade's canonical dotted form, for example `HBND.U.TO`, `FTN.PR.A.TO`, and `ECF.PRA`. type: string example: VAB.TO raw_symbol: description: The raw symbol is `symbol` with the exchange suffix removed. For example, if `symbol` is "VAB.TO", then `raw_symbol` is "VAB". type: string example: VAB description: description: A human-readable description of the security. This is usually the company name or ETF name. type: - string - 'null' example: VANGUARD CDN AGGREGATE BOND INDEX ETF currency: description: The currency in which the security is traded. allOf: - $ref: '#/components/schemas/Currency' exchange: description: The exchange on which the security is listed and traded. allOf: - $ref: '#/components/schemas/Exchange' type: $ref: '#/components/schemas/SecurityType' figi_code: description: 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. type: - string - 'null' example: BBG000B9XRY4 figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' currencies: deprecated: true description: This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this. type: array items: $ref: '#/components/schemas/Currency' required: - id - symbol - raw_symbol - currency - type - currencies 429TooManyRequestsResponse: description: Example for a rate-limited request response type: object properties: detail: example: Connection refreshed too recently. Please try again later. status_code: example: 429 code: example: throttled UnderlyingSymbol: description: Symbol object for the underlying security of an option. type: object properties: id: $ref: '#/components/schemas/UniversalSymbolID' symbol: description: 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. type: string example: SPY raw_symbol: description: The raw symbol is `symbol` with the exchange suffix removed. For example, if `symbol` is "VAB.TO", then `raw_symbol` is "VAB". type: string example: VAB description: description: A human-readable description of the security. This is usually the company name or ETF name. type: - string - 'null' example: SPDR S&P 500 ETF Trust currency: description: The currency in which the security is traded. allOf: - $ref: '#/components/schemas/Currency' exchange: description: The exchange on which the security is listed and traded. allOf: - $ref: '#/components/schemas/USExchange' type: description: The type of security. For example, "Common Stock" or "ETF". allOf: - $ref: '#/components/schemas/SecurityType' figi_code: description: 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. type: - string - 'null' example: BBG000B9XRY4 figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' currencies: deprecated: true description: This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this. type: array items: $ref: '#/components/schemas/Currency' Currency: description: Describes a currency object. type: object properties: id: $ref: '#/components/schemas/CurrencyID' code: type: string description: The ISO-4217 currency code for the currency. example: USD name: type: string description: A human-friendly name of the currency. example: US Dollar UserSecret: description: 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). type: string example: adf2aa34-8219-40f7-a6b3-60156985cc61 AdrInstrument: description: Security instrument metadata for ADR positions. type: object properties: kind: type: string description: Type of security instrument. enum: - adr example: adr id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: BABA raw_symbol: type: string description: The raw symbol without any exchange suffix. example: BABA description: type: - string - 'null' description: Human-readable description of the security. example: Alibaba Group Holding Ltd ADR currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNYS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol TaxLot: description: Describes a single tax lot for a position. type: object properties: original_purchase_date: type: - string - 'null' format: date-time description: The date and time of the purchase. example: '2022-01-15T10:30:00Z' quantity: type: - string - 'null' description: The number of shares in the tax lot. This can be fractional or integer units. example: '10' purchased_price: type: - string - 'null' description: The purchase price per share for the tax lot. example: '100.50' cost_basis: type: - string - 'null' description: The cost basis of the entire lot. example: '1005.00' current_value: type: - string - 'null' description: The current market value of the entire lot. example: '1200.00' position_type: type: - string - 'null' description: The type of position for the tax lot (e.g., LONG, SHORT). example: LONG lot_id: type: - string - 'null' description: The unique id for this specific tax lot example: '12345678' EtfInstrument: description: Security instrument metadata for ETF positions. type: object properties: kind: type: string description: Type of security instrument. enum: - etf example: etf id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: AAPL raw_symbol: type: string description: The raw symbol without any exchange suffix. example: AAPL description: type: - string - 'null' description: Human-readable description of the security. example: Apple Inc. currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNAS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol PaginationDetails: description: Details about the pagination of the results. type: object properties: offset: type: integer example: 0 description: The starting point of the paginated results. limit: type: integer example: 100 description: The maximum number of items to return in the response. total: type: integer example: 1000 description: The total number of items available to be returned over the API. ReportingDate: description: Date used to specify timeframe for a reporting call (in YYYY-MM-DD format). These dates are inclusive. type: string example: '2022-01-24' format: date Instrument: description: Instrument metadata for a V2 position. Use `kind` to determine which schema is present. oneOf: - $ref: '#/components/schemas/StockInstrument' - $ref: '#/components/schemas/OptionInstrument' - $ref: '#/components/schemas/CryptoInstrument' - $ref: '#/components/schemas/FutureInstrument' - $ref: '#/components/schemas/FutureOptionInstrument' - $ref: '#/components/schemas/EtfInstrument' - $ref: '#/components/schemas/MutualFundInstrument' - $ref: '#/components/schemas/CefInstrument' - $ref: '#/components/schemas/AdrInstrument' - $ref: '#/components/schemas/CfdInstrument' - $ref: '#/components/schemas/TokenizedAssetInstrument' - $ref: '#/components/schemas/OtherInstrument' discriminator: propertyName: kind mapping: stock: '#/components/schemas/StockInstrument' option: '#/components/schemas/OptionInstrument' crypto: '#/components/schemas/CryptoInstrument' future: '#/components/schemas/FutureInstrument' future_option: '#/components/schemas/FutureOptionInstrument' etf: '#/components/schemas/EtfInstrument' mutualfund: '#/components/schemas/MutualFundInstrument' cef: '#/components/schemas/CefInstrument' adr: '#/components/schemas/AdrInstrument' cfd: '#/components/schemas/CfdInstrument' tokenized_asset: '#/components/schemas/TokenizedAssetInstrument' bond: '#/components/schemas/OtherInstrument' other: '#/components/schemas/OtherInstrument' RecentOrdersResponse: description: List of orders executed within the last 24 hours type: object properties: orders: type: array description: List of orders executed in the last 24 hours items: $ref: '#/components/schemas/AccountOrderRecord' Symbol: description: Uniquely describes a single security + exchange combination across all brokerages. type: object properties: id: $ref: '#/components/schemas/UniversalSymbolID' symbol: description: 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. Share classes and preferred series use SnapTrade's canonical dotted form, for example `HBND.U.TO`, `FTN.PR.A.TO`, and `ECF.PRA`. type: string example: VAB.TO raw_symbol: description: The raw symbol is `symbol` with the exchange suffix removed. For example, if `symbol` is "VAB.TO", then `raw_symbol` is "VAB". type: string example: VAB description: description: A human-readable description of the security. This is usually the company name or ETF name. type: - string - 'null' example: VANGUARD CDN AGGREGATE BOND INDEX ETF currency: description: The currency in which the security is traded. allOf: - $ref: '#/components/schemas/Currency' exchange: description: The exchange on which the security is listed and traded. allOf: - $ref: '#/components/schemas/Exchange' type: $ref: '#/components/schemas/SecurityType' figi_code: description: 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. type: - string - 'null' example: BBG000B9XRY4 figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' TransactionsStatus: description: '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. ' properties: initial_sync_completed: description: 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. type: boolean example: true last_successful_sync: description: All transactions up to this date have been successfully synced. Please note that this is not the date of the last transaction, nor the last time SnapTrade attempted to sync transactions. allOf: - $ref: '#/components/schemas/SyncStatusDate' first_transaction_date: description: The date of the first transaction in the account known to SnapTrade. It's possible that the account has transactions before this date, but they are not known to SnapTrade. allOf: - $ref: '#/components/schemas/SyncStatusDate' HoldingsSyncStatusDate: description: Date in ISO 8601 format or null (YYYY-MM-DD HH:MM:SS.mmmmmmTZ) type: - string - 'null' example: '2024-06-28 18:42:46.561408+00:00' format: date-time UserID: description: 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. type: string example: snaptrade-user-123 ConnectionAccountSyncStatus: description: '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. ' type: object properties: transactions: $ref: '#/components/schemas/TransactionsStatus' orders: description: The last time orders were successfully synced by SnapTrade. allOf: - $ref: '#/components/schemas/HoldingsSyncStatusDate' positions: description: The last time positions were successfully synced by SnapTrade. allOf: - $ref: '#/components/schemas/HoldingsSyncStatusDate' balances: description: The last time balances were successfully synced by SnapTrade. allOf: - $ref: '#/components/schemas/HoldingsSyncStatusDate' 501NotImplementedResponse: description: Example for a response where the endpoint is not implemented for the brokerage type: object properties: error: example: The orders endpoint is not yet implemented for brokerage some-brokerage Balance: description: Holds balance information for a single currency in an account. type: object properties: currency: description: The currency of the balance. This applies to both `cash` and `buying_power`. allOf: - $ref: '#/components/schemas/Currency' cash: type: - number - 'null' description: 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 example: 300.71 buying_power: type: - number - 'null' description: 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. example: 410.71 Exchange: description: Describes a single stock or crypto exchange. type: object properties: id: $ref: '#/components/schemas/ExchangeID' code: description: A short name for the exchange. For standardized exchange code, please use the `mic_code` field. type: string example: TSX mic_code: description: The [Market Identifier Code](https://en.wikipedia.org/wiki/Market_Identifier_Code) (MIC) for the exchange. type: - string - 'null' example: XTSE name: description: The full name of the exchange. type: string example: Toronto Stock Exchange timezone: description: The timezone for the trading hours (`start_time` and `close_time`) of the exchange. type: string example: America/New_York start_time: description: The time when the exchange opens for trading. type: string example: 09:30:00 close_time: description: The time when the exchange closes for trading. type: string example: '16:00:00' suffix: description: 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: - string - 'null' example: .TO OptionSymbolID: description: Unique identifier for the option symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls. type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 403FeatureNotEnabledResponse: description: Example for failed request response type: object properties: detail: example: Feature is not enabled for this customer or this connection default_code: example: 1141 AllAccountPositionsResponse: description: Information about all account positions. type: object properties: results: type: array description: Positions returned for the request. items: $ref: '#/components/schemas/AccountPosition' data_freshness: type: object description: Metadata describing freshness of the returned positions data. properties: as_of: type: string format: date-time description: The time the returned positions data was fetched from the brokerage. example: '2026-06-02T14:30:00.000Z' required: - as_of required: - results - data_freshness InvestmentAccount: description: '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`. ' type: object required: - kind - id - connection_id - masked_account_number - sync_status - is_paper properties: kind: type: string description: Discriminator for the account kind. enum: - investment example: investment id: description: Unique identifier for the connected institution account. This is the UUID used to reference the account in SnapTrade. allOf: - $ref: '#/components/schemas/AccountID' connection_id: $ref: '#/components/schemas/BrokerageAuthID' display_name: type: - string - 'null' description: A display name for the account. Either assigned by the user or by the institution itself. example: Robinhood Individual masked_account_number: type: string example: '****8443' description: The account number assigned by the institution, masked to the last 4 characters (e.g. `****8443`). institution_account_id: type: - string - 'null' example: '54953432' description: 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: type: string format: uuid description: Unique identifier for the institution that holds the account. example: b6e1a9f0-6e2a-4c37-9b0a-6f1e2d3c4b5a opening_date: type: - string - 'null' format: date-time description: 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. example: '2024-07-20T09:30:00.000Z' funding_date: type: - string - 'null' format: date-time description: 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. example: '2024-07-25T12:00:00.000Z' sync_status: $ref: '#/components/schemas/ConnectionAccountSyncStatus' raw_type: type: - string - 'null' description: The account type as provided by the institution. example: Margin cash_or_margin: type: string description: '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. ' enum: - cash - margin - unknown example: margin is_paper: type: boolean description: Indicates whether the account is a paper (simulated) trading account. example: false net_value: type: - object - 'null' description: 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). properties: amount: type: - number - 'null' currency: type: - string - 'null' example: amount: 84213.55 currency: USD OptionInstrument: description: Option instrument metadata for a V2 position. type: object properties: kind: type: string description: Type of security instrument. enum: - option example: option id: type: string format: uuid description: Unique identifier for the option instrument. example: 899e2697-1d38-4c07-91ee-c16a2b1ce5c9 symbol: type: string description: OCC symbol for the option contract. example: AAPL 261218C00240000 option_type: type: string description: Whether the contract is a call or put. enum: - CALL - PUT example: CALL strike_price: type: string format: decimal description: Strike price for the option contract. example: '240' expiration_date: type: string format: date description: Expiration date of the option contract. example: '2026-12-18' multiplier: type: string format: decimal description: Number of underlying shares per contract. Standard options are 100, mini options are 10. example: '100' description: type: - string - 'null' description: Human-readable description of the option contract. example: AAPL Dec 18 2026 240 CALL underlying: $ref: '#/components/schemas/UnderlyingOptionInstrument' required: - kind - id - symbol - option_type - strike_price - expiration_date - multiplier - underlying Action: type: string description: "The action describes the intent or side of a trade. This is usually `BUY` or `SELL` but can include other potential values like the following depending on the specific brokerage.\n - BUY\n - SELL\n - BUY_COVER\n - SELL_SHORT\n - BUY_OPEN\n - BUY_CLOSE\n - SELL_OPEN\n - SELL_CLOSE\n" SecurityType: type: object description: The type of security. For example, "Common Stock" or "ETF". properties: id: $ref: '#/components/schemas/SecurityTypeID' code: description: "A short code representing the security type. For example, \"cs\" for Common Stock. Here are some common values:\n - `ad` - ADR\n - `bnd` - Bond\n - `cs` - Common Stock\n - `cef` - Closed End Fund\n - `crypto` - Cryptocurrency\n - `et` - ETF\n - `oef` - Open Ended Fund\n - `pm` - Precious Metals\n - `ps` - Preferred Stock\n - `rt` - Right\n - `struct` - Structured Product\n - `ut` - Unit\n - `wi` - When Issued\n - `wt` - Warrant\n" type: string example: cs description: description: A human-readable description of the security type. For example, "Common Stock" or "ETF". type: string example: Common Stock is_supported: deprecated: true description: This field is deprecated and should not be used. Please reach out to SnapTrade support if you have a valid use case for this. type: boolean example: true FutureOptionInstrument: description: 'Future option (option on a futures contract) instrument metadata for a V2 position. **Beta:** currently returned only for tastytrade and Interactive Brokers connections, and only for partners it has been enabled for. This schema may change. ' type: object properties: kind: type: string description: Type of security instrument. enum: - future_option example: future_option id: type: string format: uuid description: Unique identifier for the future option instrument. example: 5f1c9a76-2c1e-4bfb-9d18-3a2f0f5b6c41 symbol: type: string description: Display symbol for the future option contract. example: ZBZ25 P105 option_type: type: string description: Whether the contract is a call or put. enum: - CALL - PUT example: PUT strike_price: type: string format: decimal description: Strike price for the option contract. example: '105' expiration_date: type: string format: date description: Expiration date of the option contract. example: '2025-11-21' multiplier: type: - string - 'null' format: decimal description: Notional multiplier for the option contract. example: '1000' description: type: - string - 'null' description: Human-readable description of the option contract. example: 30 Year U.S. Treasury Bond Dec 2025 105 PUT currency: type: - string - 'null' description: ISO-4217 currency code for the contract. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the contract. example: XCBT underlying: $ref: '#/components/schemas/FutureInstrument' required: - kind - id - symbol - option_type - strike_price - expiration_date - underlying CurrencyID: type: string format: uuid description: Unique identifier for the currency. This is the UUID used to reference the currency in SnapTrade. example: 87b24961-b51e-4db8-9226-f198f6518a89 StockInstrument: description: Security instrument metadata for stock positions. type: object properties: kind: type: string description: Type of security instrument. enum: - stock example: stock id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: AAPL raw_symbol: type: string description: The raw symbol without any exchange suffix. example: AAPL description: type: - string - 'null' description: Human-readable description of the security. example: Apple Inc. currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNAS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol CefInstrument: description: Security instrument metadata for closed-end fund positions. type: object properties: kind: type: string description: Type of security instrument. enum: - cef example: cef id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: BST raw_symbol: type: string description: The raw symbol without any exchange suffix. example: BST description: type: - string - 'null' description: Human-readable description of the security. example: BlackRock Science and Technology Trust currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the security. example: XNYS figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol CryptoInstrument: description: Security instrument metadata for crypto positions. type: object properties: kind: type: string description: Type of security instrument. enum: - crypto example: crypto id: type: string format: uuid description: Unique identifier for the instrument. example: 1ef3a5d3-4a9b-40b2-b8d1-cc35f74d6324 symbol: type: string description: The formatted trading symbol for the security. example: AAPL raw_symbol: type: string description: The raw symbol without any exchange suffix. example: AAPL description: type: - string - 'null' description: Human-readable description of the security. example: Apple Inc. currency: type: - string - 'null' description: ISO-4217 currency code for the security listing. example: USD exchange: type: - string - 'null' deprecated: true description: Deprecated. Crypto instruments are not tied to a listing exchange, so this field is no longer populated and is omitted from responses. It will be removed in a future version. figi_instrument: allOf: - $ref: '#/components/schemas/FigiInstrument' required: - kind - id - symbol - raw_symbol SecurityTypeID: description: Unique identifier for the security type within SnapTrade. This is the ID used to reference the security type in SnapTrade API calls. type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 DepositAccount: description: 'A deposit account (checking, savings) under a connection. ' type: object required: - kind - id - connection_id - masked_account_number - sync_status properties: kind: type: string description: Discriminator for the account kind. enum: - deposit example: deposit id: description: Unique identifier for the connected institution account. This is the UUID used to reference the account in SnapTrade. allOf: - $ref: '#/components/schemas/AccountID' connection_id: $ref: '#/components/schemas/BrokerageAuthID' display_name: type: - string - 'null' description: A display name for the account. Either assigned by the user or by the institution itself. example: Chase Total Checking masked_account_number: type: string example: '****4821' description: The account number assigned by the institution, masked to the last 4 characters (e.g. `****4821`). institution_account_id: type: - string - 'null' example: '88213092' description: 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: type: string format: uuid description: Unique identifier for the institution that holds the account. example: a7f0c9d1-2b3e-4f5a-8c6d-9e0f1a2b3c4d opening_date: type: - string - 'null' format: date-time description: 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. example: '2018-06-04T00:00:00.000Z' sync_status: $ref: '#/components/schemas/DepositAccountSyncStatus' raw_type: type: - string - 'null' description: The account type as provided by the institution. example: CHECKING net_value: type: - object - 'null' description: 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). properties: amount: type: - number - 'null' currency: type: - string - 'null' example: amount: 3120.44 currency: USD AccountOrderRecord: description: Describes a single recent order in an account. Each record here represents a single order leg. For multi-leg orders, there will be multiple records. type: object properties: brokerage_order_id: $ref: '#/components/schemas/BrokerageOrderID' brokerage_group_order_id: description: 'The brokerage-assigned identifier that links all orders within a complex order (OCO, OTO, OTOCO) together. Null for non-complex orders or when the brokerage does not return a group identifier. ' type: - string - 'null' example: '1234567890' order_role: description: 'The role of this order within a complex order group (OCO, OTO, OTOCO). Null for non-complex orders. ' type: - string - 'null' enum: - TRIGGER - CONDITIONAL - PEER example: TRIGGER status: $ref: '#/components/schemas/AccountOrderRecordStatus' universal_symbol: description: Contains information about the security that the order is for. This field is only present for stock/ETF/crypto/mutual fund orders. For option orders, this field will be null and the `option_symbol` field will be populated. allOf: - $ref: '#/components/schemas/UniversalSymbol' option_symbol: description: Contains information about the option contract that the order is for. This field is only present for option orders. For stock/ETF/crypto/mutual fund orders, this field will be null and the `universal_symbol` field will be populated. allOf: - $ref: '#/components/schemas/OptionsSymbol' quote_universal_symbol: description: Quote cryptocurrency. This field is only present for cryptocurrency pair orders with a cryptocurrency as quote. allOf: - $ref: '#/components/schemas/UniversalSymbol' quote_currency: description: Quote currency. This field is only present for cryptocurrency pair orders with a fiat currency as quote. allOf: - $ref: '#/components/schemas/Currency' action: $ref: '#/components/schemas/Action' total_quantity: description: The total number of shares or contracts of the order. This should be the sum of the filled, canceled, and open quantities. Can be a decimal number for fractional shares. type: - string - 'null' example: '100' open_quantity: description: The number of shares or contracts that are still open (waiting for execution). Can be a decimal number for fractional shares. type: - string - 'null' example: '10' canceled_quantity: description: The number of shares or contracts that have been canceled. Can be a decimal number for fractional shares. type: - string - 'null' example: '10' filled_quantity: description: The number of shares or contracts that have been filled. Can be a decimal number for fractional shares. type: - string - 'null' example: '80' execution_price: description: The price at which the order was executed. For option orders, this represents the price per share. type: - string - 'null' format: decimal example: '12.34' limit_price: description: The limit price is maximum price one is willing to pay for a buy order or the minimum price one is willing to accept for a sell order. Should only apply to `Limit` and `StopLimit` orders. For option orders, this represents the price per share. type: - string - 'null' format: decimal example: '12.34' stop_price: description: The stop price is the price at which a stop order is triggered. Should only apply to `Stop` and `StopLimit` orders. For option orders, this represents the price per share. type: - string - 'null' format: decimal example: '12.50' trailing_stop: description: For trailing stop orders, contains the trail configuration. Null for all other order types. allOf: - $ref: '#/components/schemas/TrailingStop' order_type: description: The type of order placed. The most common values are `Market`, `Limit`, `Stop`, and `StopLimit`. We try our best to map brokerage order types to these values. When mapping fails, we will return the brokerage's order type value. type: - string - 'null' example: Market time_in_force: description: "The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. We try our best to map brokerage time in force values to the following. When mapping fails, we will return the brokerage's time in force value.\n - `Day` - Day. The order is valid only for the trading day on which it is placed.\n - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled.\n - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely.\n - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.\n - `GTD` - Good Til Date. The order is valid until the specified date.\n - `MOO` - Market On Open. The order is to be executed at the day's opening price.\n - `EHP` - Extended Hours P.M. The order is to be placed during extended hour trading, after markets close.\n" type: string time_placed: description: The time the order was placed. This is the time the order was submitted to the brokerage. type: string format: date-time example: '2024-07-30T22:51:49.746Z' time_updated: description: The time the order was last updated in the brokerage system. This value is not always available from the brokerage. type: - string - 'null' format: date-time example: '2024-08-05T00:05:57.409Z' time_executed: description: The time the order was executed in the brokerage system. This value is not always available from the brokerage. type: - string - 'null' format: date-time example: '2024-08-05T00:05:57.409Z' expiry_date: description: The time the order expires. This value is not always available from the brokerage. type: - string - 'null' format: date-time example: '2024-08-05T00:05:57.409Z' symbol: $ref: '#/components/schemas/BrokerageSymbolID' child_brokerage_order_ids: allOf: - $ref: '#/components/schemas/ChildBrokerageOrderIDs' CfdInstrument: description: Canonical CFD wrapper instrument metadata for a V2 position. type: object properties: kind: type: string description: Type of security instrument. enum: - cfd example: cfd id: type: string format: uuid description: Unique identifier for the canonical CFD instrument wrapper. example: 8cbb2a60-236e-4b67-9e25-a8cf299839f5 symbol: type: string description: Formatted symbol of the instrument underlying the CFD wrapper. example: AAPL raw_symbol: type: string description: Raw symbol of the instrument underlying the CFD wrapper. example: AAPL description: type: - string - 'null' description: Human-readable description of the instrument underlying the CFD wrapper. example: Apple Inc. currency: type: - string - 'null' description: ISO-4217 currency code for the instrument underlying the CFD wrapper. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the instrument underlying the CFD wrapper. example: XNAS underlying_instrument: $ref: '#/components/schemas/UnderlyingCfdInstrument' required: - kind - id - symbol - raw_symbol - underlying_instrument FutureInstrument: description: Future instrument metadata for a V2 position. type: object properties: kind: type: string description: Type of security instrument. enum: - future example: future id: type: string format: uuid description: Unique identifier for the future instrument. example: 2fef6a3c-4d3f-4a0a-b1fe-8c45a9c7da7f symbol: type: string description: Display symbol for the future contract. example: ESM26 root_symbol: type: string description: Root symbol for the future contract. example: ES expiration_code: type: string description: Exchange expiration code for the contract. example: M26 expiration_date: type: - string - 'null' format: date description: Expiration date of the contract. example: '2024-09-20' multiplier: type: - string - 'null' format: decimal description: Multiplier for the future contract. example: '50' currency: type: - string - 'null' description: ISO-4217 currency code for the contract. example: USD exchange: type: - string - 'null' description: Exchange MIC code or exchange code for the contract. example: XCME required: - kind - id - symbol - root_symbol - expiration_code USExchange: description: US Stock Exchange type: object properties: id: $ref: '#/components/schemas/Id' code: type: string example: ARCX mic_code: type: - string - 'null' example: ARCA name: type: string example: NYSE ARCA timezone: type: string example: America/New_York start_time: type: string example: 09:30:00 close_time: type: string example: '16:00:00' suffix: type: - string - 'null' example: None allows_cryptocurrency_symbols: type: boolean example: false DepositAccountSyncStatus: description: '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). ' type: object properties: transactions: $ref: '#/components/schemas/TransactionsStatus' balances: description: The last time balances were successfully synced by SnapTrade. allOf: - $ref: '#/components/schemas/HoldingsSyncStatusDate' BrokerageOrderID: description: Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system. type: string example: 66a033fa-da74-4fcf-b527-feefdec9257e PaginatedUniversalActivity: description: A paginated list of UniversalActivity objects. type: object properties: data: type: array items: $ref: '#/components/schemas/AccountUniversalActivity' pagination: $ref: '#/components/schemas/PaginationDetails' AccountValueHistoryItem: description: The estimated account value at a specific point in time. type: object properties: date: description: The date of the estimated account value type: string format: date example: '2026-01-01' total_value: description: Estimate of the total market value of this account (includes cash, equity, fixed income, etc) at the given date. type: string example: '15363.23' BrokerageAuthID: description: Unique identifier for the connection (brokerage_authorization_id). This is the UUID used to reference the connection in SnapTrade. type: string format: uuid example: 87b24961-b51e-4db8-9226-f198f6518a89 TokenizedAssetInstrument: description: 'Canonical tokenized asset wrapper for a V2 position. Symbol and description duplicate the listed underlying''s display metadata for convenience; they are not token-specific identifiers or labels. Currency and exchange metadata are provided only in underlying_instrument. ' type: object properties: kind: type: string description: Type of security instrument. enum: - tokenized_asset example: tokenized_asset id: type: string format: uuid description: Unique identifier for the canonical tokenized asset wrapper. example: 95a57747-46c6-4c9a-a6cc-b79a491fb95a symbol: type: string description: Display symbol of the underlying stock or ETF, not a token-specific ticker. example: AAPL description: type: string description: Display name of the underlying stock or ETF, when available. example: Apple Inc. underlying_instrument: $ref: '#/components/schemas/UnderlyingTokenizedAssetInstrument' required: - kind - id - symbol - underlying_instrument ChildBrokerageOrderIDs: type: object properties: take_profit_order_id: type: string description: The brokerage order ID for the take profit leg of the bracket order example: '12345678' stop_loss_order_id: type: string description: The brokerage order ID for the stop loss leg of the bracket order example: '12345678' 404FailedRequestResponse: description: Example for failed request response type: object properties: default_detail: example: The requested resource does not exist. default_code: example: 1011 TrailingStop: description: Trail configuration for trailing stop orders. type: object required: - amount - type properties: amount: description: The trail amount. Interpreted as dollars if `type` is `DOLLAR`, or a percentage if `type` is `PERCENT`. type: string example: '0.60' type: description: Whether the trail `amount` is a dollar amount (`DOLLAR`) or a percentage (`PERCENT`). For example, if `amount` is "0.60" and `type` is `DOLLAR`, the stop price will trail the market price by $0.60. If `amount` is "5" and `type` is `PERCENT`, the stop price will trail the market price by 5%. type: string enum: - DOLLAR - PERCENT LineOfCreditAccount: description: 'A line-of-credit account (e.g. a credit card) under a connection. ' type: object required: - kind - id - connection_id - masked_account_number - sync_status properties: kind: type: string description: Discriminator for the account kind. enum: - line_of_credit example: line_of_credit id: description: Unique identifier for the connected institution account. This is the UUID used to reference the account in SnapTrade. allOf: - $ref: '#/components/schemas/AccountID' connection_id: $ref: '#/components/schemas/BrokerageAuthID' display_name: type: - string - 'null' description: A display name for the account. Either assigned by the user or by the institution itself. example: Chase Sapphire Preferred masked_account_number: type: string example: '****1881' description: The account number assigned by the institution, masked to the last 4 characters (e.g. `****1881`). institution_account_id: type: - string - 'null' example: '77102934' description: 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: type: string format: uuid description: Unique identifier for the institution that holds the account. example: c8f1d0e2-3c4f-5a6b-9d7e-0f2a3b4c5d6e opening_date: type: - string - 'null' format: date-time description: 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. example: '2019-11-15T00:00:00.000Z' sync_status: $ref: '#/components/schemas/LineOfCreditAccountSyncStatus' raw_type: type: - string - 'null' description: The account type as provided by the institution. example: CREDIT_CARD net_value: type: - object - 'null' description: 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). properties: amount: type: - number - 'null' currency: type: - string - 'null' example: amount: -842.17 currency: USD minimum_payment_amount: type: - object - 'null' description: The minimum payment due on the account's next statement. Omitted when no such data is available. properties: amount: type: - number - 'null' currency: type: - string - 'null' example: amount: 40 currency: USD available_credit: type: - object - 'null' description: The remaining credit available to spend on the account (credit limit less the current balance). Omitted when no such data is available. properties: amount: type: - number - 'null' currency: type: - string - 'null' example: amount: 4157.83 currency: USD next_payment_date: type: - string - 'null' format: date description: The date the account's next payment is due, in `YYYY-MM-DD` format. Omitted when no such data is available. example: '2026-09-25' UnderlyingOptionInstrument: description: The underlying instrument for an option. oneOf: - $ref: '#/components/schemas/StockInstrument' - $ref: '#/components/schemas/CryptoInstrument' - $ref: '#/components/schemas/EtfInstrument' - $ref: '#/components/schemas/MutualFundInstrument' - $ref: '#/components/schemas/CefInstrument' - $ref: '#/components/schemas/AdrInstrument' - $ref: '#/components/schemas/OtherInstrument' discriminator: propertyName: kind mapping: stock: '#/components/schemas/StockInstrument' crypto: '#/components/schemas/CryptoInstrument' etf: '#/components/schemas/EtfInstrument' mutualfund: '#/components/schemas/MutualFundInstrument' cef: '#/components/schemas/CefInstrument' adr: '#/components/schemas/AdrInstrument' bond: '#/components/schemas/OtherInstrument' other: '#/components/schemas/OtherInstrument' AllUserAccountsResponse: description: Accounts across all of the user's connections. type: object properties: results: type: array description: Accounts returned for the request. items: $ref: '#/components/schemas/ConnectionAccount' required: - results UnderlyingCfdInstrument: description: The underlying instrument referenced by a CFD contract. oneOf: - $ref: '#/components/schemas/StockInstrument' - $ref: '#/components/schemas/CryptoInstrument' - $ref: '#/components/schemas/EtfInstrument' - $ref: '#/components/schemas/MutualFundInstrument' - $ref: '#/components/schemas/CefInstrument' - $ref: '#/components/schemas/AdrInstrument' - $ref: '#/components/schemas/OtherInstrument' discriminator: propertyName: kind mapping: stock: '#/components/schemas/StockInstrument' crypto: '#/components/schemas/CryptoInstrument' etf: '#/components/schemas/EtfInstrument' mutualfund: '#/components/schemas/MutualFundInstrument' cef: '#/components/schemas/CefInstrument' adr: '#/components/schemas/AdrInstrument' bond: '#/components/schemas/OtherInstrument' other: '#/components/schemas/OtherInstrument' ExchangeID: description: Unique ID for the exchange in SnapTrade. type: string format: uuid example: 2bcd7cc3-e922-4976-bce1-9858296801c3 headers: X-RateLimit-Account-Limit: description: Per-account request allowance for the current window. Only sent on account-data endpoints where the account-level limit applies. schema: type: integer example: 10 X-RateLimit-Limit: description: Customer-level request allowance for the current window. schema: type: integer example: 250 X-RateLimit-Remaining: description: Customer-level requests left in the current window. 0 on a 429 means this is the limit you hit. schema: type: integer example: 249 X-RateLimit-Account-Reset: description: Seconds until the per-account window resets. schema: type: integer example: 60 X-RateLimit-Account-Remaining: description: Per-account requests left in the current window. 0 on a 429 means this is the limit you hit. schema: type: integer example: 9 X-RateLimit-Reset: description: Seconds until the customer-level window resets. schema: type: integer example: 60 responses: TooManyRequests: description: '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. ' headers: Retry-After: description: Seconds to wait before retrying. schema: type: integer example: 7 X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' X-RateLimit-Account-Limit: $ref: '#/components/headers/X-RateLimit-Account-Limit' X-RateLimit-Account-Remaining: $ref: '#/components/headers/X-RateLimit-Account-Remaining' X-RateLimit-Account-Reset: $ref: '#/components/headers/X-RateLimit-Account-Reset' content: application/json: schema: $ref: '#/components/schemas/429TooManyRequestsResponse' requestBodies: OrderDetailRequestBody: required: true content: application/json: schema: type: object required: - brokerage_order_id properties: brokerage_order_id: $ref: '#/components/schemas/BrokerageOrderID' securitySchemes: PartnerSignature: type: apiKey in: header name: Signature PartnerClientId: type: apiKey in: query name: clientId PartnerTimestamp: type: apiKey in: query name: timestamp