openapi: 3.1.0
info:
  title: Balances and Positions
  version: 4.38.2
  description: tastytrade Balances and Positions API.
  contact:
    name: tastytrade API support
    email: api.support@tastytrade.com
    url: https://developer.tastytrade.com
tags:
  - name: positions
  - name: accounts
  - name: balance-snapshots
paths:
  /accounts/{account_number}/positions:
    get:
      description: Returns the account's positions. A position with a quantity of 0 is
        considered closed and is purged overnight, so by default only open
        positions are returned; pass include-closed-positions to include them.
        Filter by symbol, underlying-symbol, instrument-type, or
        underlying-product-code, and use net-positions to group by instrument
        type and symbol. The endpoint does not return live profit/loss or a mark
        unless include-marks is set; for up-to-date P/L, combine the cost-basis
        fields here with live quote data from streaming market data.
      parameters:
        - in: query
          name: underlying-symbol
          description: "An array of Underlying symbol(s) for positions (example:
            underlying-symbol[]={value1}&underlying-symbol[]={value2})"
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
          example:
            - AAPL
        - in: query
          name: symbol
          description: >-
            A single symbol. Stock Ticker Symbol `AAPL`, \
                                             OCC Option Symbol `AAPL  191004P00275000`, \
                                             TW Future Symbol `/ESZ9`, or \
                                             TW Future Option Symbol `./ESZ9 EW4U9 190927P2975`
          required: false
          schema:
            type: string
          example: AAPL
        - in: query
          name: instrument-type
          description: The type of Instrument
          required: false
          schema:
            type: string
            enum:
              - Bond
              - Cryptocurrency
              - Currency Pair
              - Equity
              - Equity Offering
              - Equity Option
              - Future
              - Future Option
              - Index
              - Unknown
              - Warrant
          example: Bond
        - in: query
          name: include-closed-positions
          description: If closed positions should be included in the query
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - in: query
          name: underlying-product-code
          description: The underlying Future's Product code. i.e `ES`
          required: false
          schema:
            type: string
          example: ES
        - in: query
          name: partition-keys
          description: "Account partition keys (example:
            partition-keys[]={value1}&partition-keys[]={value2})"
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - in: query
          name: net-positions
          description: Returns net positions grouped by instrument type and symbol
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - in: query
          name: include-marks
          description: "Include current quote mark (note: can decrease performance)"
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - in: path
          name: account_number
          required: true
          schema:
            type: string
          example: 5WX01234
      responses:
        "200":
          description: A list of the account's positions, wrapped in a data.items array.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: "#/components/schemas/CurrentPosition"
                    required:
                      - items
                  context:
                    type: string
                    example: /accounts/{account_number}/positions
                  pagination:
                    type: object
                    description: Paging metadata, present on paginated list responses.
                    properties:
                      per-page:
                        type: integer
                      page-offset:
                        type: integer
                      item-offset:
                        type: integer
                      total-items:
                        type: integer
                      total-pages:
                        type: integer
                      current-item-count:
                        type: integer
                required:
                  - data
                  - context
        "401":
          description: "Missing or invalid access token, or a missing/malformed User-Agent
            header. Access tokens last 15 minutes; send Authorization: Bearer
            <token> and a User-Agent like my-app/1.0 on every request."
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: unauthorized
                    message: No valid access token was provided; access tokens expire after 15
                      minutes.
        "403":
          description: Authenticated, but the token's scope or the account's authority
            level does not permit reading positions for this account.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: not_permitted
                    message: User not permitted access
        "404":
          description: Account not found. Verify the account_number and confirm you are
            hitting the correct environment (sandbox api.cert.tastyworks.com vs
            production api.tastyworks.com).
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
        "429":
          description: Request rate exceeded. Back off exponentially and reduce request
            rate.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
      tags:
        - positions
      operationId: getAccountsAccountNumberPositions
      x-tt-class: read
      x-money-moving: false
      x-idempotent: true
      x-rate-limit-bucket: read
      summary: List Account Positions
  /accounts/{account_number}/balances:
    get:
      description: "Returns the single current balance object for an account: cash,
        position values broken out by instrument type and side (for example
        long-equity-value, long-derivative-value, long-futures-value,
        long-cryptocurrency-value), buying power, margin requirements, and
        net-liquidating-value. Defaults to USD; pass currency to request a
        different currency balance."
      parameters:
        - in: query
          name: currency
          description: Currency balance to get for account
          required: false
          schema:
            type: string
            default: USD
        - in: path
          name: account_number
          required: true
          schema:
            type: string
          example: 5WX01234
      responses:
        "200":
          description: The current balance object for the account, wrapped in data.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: "#/components/schemas/AccountBalance"
                  context:
                    type: string
                    example: /accounts/{account_number}/balances
                required:
                  - data
                  - context
        "401":
          description: "Missing or invalid access token, or a missing/malformed User-Agent
            header. Access tokens last 15 minutes; send Authorization: Bearer
            <token> and a User-Agent like my-app/1.0 on every request."
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: unauthorized
                    message: No valid access token was provided; access tokens expire after 15
                      minutes.
        "403":
          description: Authenticated, but the token's scope or the account's authority
            level does not permit reading balances for this account.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: not_permitted
                    message: User not permitted access
        "404":
          description: Account not found. Verify the account_number and confirm you are
            hitting the correct environment (sandbox api.cert.tastyworks.com vs
            production api.tastyworks.com).
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
        "429":
          description: Request rate exceeded. Back off exponentially and reduce request
            rate.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
      tags:
        - accounts
      operationId: getAccountsAccountNumberBalances
      x-tt-class: read
      x-money-moving: false
      x-idempotent: true
      x-rate-limit-bucket: read
      summary: Get Account Balances
  /accounts/{account_number}/balances/{currency}:
    get:
      description: Returns the current balance object for an account in a specific
        currency. Use this when an account holds more than one currency and you
        need the balance for one of them; for the default USD balance, the
        plural balances endpoint is sufficient.
      parameters:
        - in: path
          name: currency
          required: true
          schema:
            type: string
        - in: path
          name: account_number
          required: true
          schema:
            type: string
          example: 5WX01234
      responses:
        "200":
          description: The current balance object for the account in the requested
            currency, wrapped in data.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: "#/components/schemas/AccountBalance"
                  context:
                    type: string
                    example: /accounts/{account_number}/balances/{currency}
                required:
                  - data
                  - context
        "401":
          description: "Missing or invalid access token, or a missing/malformed User-Agent
            header. Access tokens last 15 minutes; send Authorization: Bearer
            <token> and a User-Agent like my-app/1.0 on every request."
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: unauthorized
                    message: No valid access token was provided; access tokens expire after 15
                      minutes.
        "403":
          description: Authenticated, but the token's scope or the account's authority
            level does not permit reading balances for this account.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: not_permitted
                    message: User not permitted access
        "404":
          description: Account or currency not found. Verify the account_number and
            currency, and confirm you are hitting the correct environment
            (sandbox vs production).
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
        "429":
          description: Request rate exceeded. Back off exponentially and reduce request
            rate.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
      tags:
        - accounts
      operationId: getAccountsAccountNumberBalancesCurrency
      x-tt-class: read
      x-money-moving: false
      x-idempotent: true
      x-rate-limit-bucket: read
      summary: Get Account Balance By Currency
  /accounts/{account_number}/balance-snapshots:
    get:
      description: "Returns balance snapshots for an account; the response also
        includes the account's current balance object alongside the historical
        snapshots. A snapshot is captured twice a day: once in the morning (BOD)
        and once after the equities market closes (EOD). The required
        time-of-day parameter selects which snapshot. Optionally pass
        snapshot-date for a specific day, or start-date and end-date for a
        range; if no dates are given, the most recent snapshot is returned.
        Results are paginated via per-page and page-offset."
      parameters:
        - in: query
          name: per-page
          required: false
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 2000
            default: 250
          example: 10
        - in: query
          name: page-offset
          required: false
          schema:
            type: integer
            format: int32
            default: 0
          example: 10
        - in: query
          name: currency
          description: Currency
          required: false
          schema:
            type: string
            default: USD
        - in: query
          name: snapshot-date
          description: The day of the balance snapshot to retrieve
          required: false
          schema:
            type: string
            format: date
          example: 2024-01-15
        - in: query
          name: time-of-day
          description: The abbreviation for the time of day.
          required: true
          schema:
            type: string
            enum:
              - EOD
              - BOD
          example: EOD
        - in: query
          name: start-date
          description: The first date in a range of dates to retrieve
          required: false
          schema:
            type: string
            format: date
          example: 2024-01-15
        - in: query
          name: end-date
          description: The last date in a range of dates to retrieve
          required: false
          schema:
            type: string
            format: date
          example: 2024-01-15
        - in: path
          name: account_number
          required: true
          schema:
            type: string
          example: 5WX01234
      responses:
        "200":
          description: A list of balance snapshots wrapped in a data.items array. The list
            also includes the account's current balance object alongside the
            historical snapshots.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: "#/components/schemas/AccountBalanceSnapshot"
                    required:
                      - items
                  context:
                    type: string
                    example: /accounts/{account_number}/balance-snapshots
                  pagination:
                    type: object
                    description: Paging metadata, present on paginated list responses.
                    properties:
                      per-page:
                        type: integer
                      page-offset:
                        type: integer
                      item-offset:
                        type: integer
                      total-items:
                        type: integer
                      total-pages:
                        type: integer
                      current-item-count:
                        type: integer
                required:
                  - data
                  - context
        "401":
          description: "Missing or invalid access token, or a missing/malformed User-Agent
            header. Access tokens last 15 minutes; send Authorization: Bearer
            <token> and a User-Agent like my-app/1.0 on every request."
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: unauthorized
                    message: No valid access token was provided; access tokens expire after 15
                      minutes.
        "403":
          description: Authenticated, but the token's scope or the account's authority
            level does not permit reading balance snapshots for this account.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: not_permitted
                    message: User not permitted access
        "404":
          description: Account not found. Verify the account_number and confirm you are
            hitting the correct environment (sandbox vs production).
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
        "422":
          description: The query is invalid in context, for example a missing required
            time-of-day, or an invalid date or date range. Provide a valid
            time-of-day (BOD or EOD) and well-formed dates.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
                example:
                  error:
                    code: preflight_check_failure
                    message: One or more preflight checks failed
                    errors:
                      - code: preflight_check_failure
                        message: A specific validation failed for this order.
        "429":
          description: Request rate exceeded. Back off exponentially and reduce request
            rate.
          content:
            application/json:
              schema:
                type: object
                description: Standard tastytrade error envelope. Branch on error.code, not the
                  message text.
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                        description: Machine-readable error code (see the Error reference).
                      message:
                        type: string
                        description: Human-readable explanation.
                      errors:
                        type: array
                        description: Present for multi-error / validation failures; one entry per
                          problem.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            domain:
                              type: string
                required:
                  - error
      tags:
        - balance-snapshots
      operationId: getAccountsAccountNumberBalanceSnapshots
      x-tt-class: read
      x-money-moving: false
      x-idempotent: true
      x-rate-limit-bucket: read
      summary: List Account Balance Snapshots
servers:
  - url: https://api.cert.tastyworks.com
    description: Sandbox
  - url: https://api.tastyworks.com
    description: Production
components:
  schemas:
    CurrentPosition:
      type: object
      properties:
        account-number:
          description: The account number that holds this position.
          type: string
          example: 5WX01234
        symbol:
          description: Symbol of the position in tastytrade symbology. Covers equities
            (AAPL), OCC options, futures (/ESZ4), future options (./ESZ4 EW3U4
            240920P5650), and crypto pairs.
          type: string
          example: AAPL
        instrument-type:
          description: The instrument type of the position, for example Equity, Equity
            Option, Future, Future Option, or Cryptocurrency.
          type: string
          example: Equity
        underlying-symbol:
          description: The symbol of the underlying instrument, if applicable.
          type: string
          example: AAPL
        quantity:
          description: The quantity held. Some stocks can be traded in fractional
            quantities. A quantity of 0 indicates a closed position. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "100"
        quantity-direction:
          description: The side of the position. Zero means the position is closed.
          type: string
          example: Long
        close-price:
          description: Price of the instrument at market close yesterday. Decimal value
            serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "282.48"
        average-open-price:
          description: A running average of the open price of the position. Cost basis for
            the unrealized gain since open calculation. Decimal value serialized
            as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "288.7"
        average-yearly-market-close-price:
          description: Cost basis for the unrealized year gain calculation (one unit since
            the end of last year). Decimal value serialized as a JSON string
            (e.g. "150.25").
          type: string
          format: decimal
          example: "123.18"
        average-daily-market-close-price:
          description: Cost basis for the unrealized day gain calculation (one unit since
            yesterday). Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "282.48"
        mark:
          description: Current quote mark. Populated when the include-marks query
            parameter is set. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "285.10"
        mark-price:
          description: Current quote mark price. Populated when the include-marks query
            parameter is set. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "285.10"
        multiplier:
          description: The notional multiplier delivered if the position is exercised or
            assigned. Equity options usually have a multiplier of 100, meaning
            the contract delivers 100 shares.
          type: integer
          format: int32
          example: 1
        cost-effect:
          description: "A tastytrade-specific value categorizing the cost of the position:
            Credit, Debit, or None."
          type: string
          example: Credit
        is-suppressed:
          description: This field is no longer in use and can be ignored.
          type: boolean
          example: false
        is-frozen:
          description: Indicates the rare case where an admin has frozen this position to
            protect a compromised account. Frozen positions are not adjustable
            or tradeable.
          type: boolean
          example: false
        restricted-quantity:
          description: The quantity that cannot be traded or modified, for example due to
            an expected assignment. Decimal value serialized as a JSON string
            (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        expires-at:
          description: The date and time at which the position expires. Applies to futures
            and options.
          type: string
          format: date-time
          example: 2024-12-20T21:15:00.000+00:00
        fixing-price:
          description: The fixing price for the instrument, where applicable. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        deliverable-type:
          description: The type of deliverable for the position, where applicable.
          type: string
          example: Equity
        realized-day-gain:
          description: Aggregate profit or loss on a realized (already closed) position
            for the current trading day, based on the position's opening mark
            for the day. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "0.0"
        realized-day-gain-effect:
          description: Direction of the realized day gain. Credit means positive gain,
            Debit means loss, None means neither.
          type: string
          example: None
        realized-day-gain-date:
          description: The date of the realized day gain. If it is not today's date,
            ignore realized-day-gain.
          type: string
          format: date
          example: 2026-06-08
        realized-today:
          description: Total profit or loss realized from the position since it was
            opened. Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        realized-today-effect:
          description: Direction of the realized today value. Credit means positive gain,
            Debit means loss, None means neither.
          type: string
          example: None
        realized-today-date:
          description: The date the realized today value occurred. If it is not today's
            date, ignore realized-today.
          type: string
          format: date
          example: 2026-06-08
        created-at:
          description: Timestamp when the position was created.
          type: string
          format: date-time
          example: 2022-08-22T17:56:51.872+00:00
        updated-at:
          description: Timestamp when the position was last updated.
          type: string
          format: date-time
          example: 2026-06-08T21:49:54.095+00:00
        order-id:
          description: Identifier of an associated order, where applicable.
          type: integer
          format: int32
          example: 123456
      description: A single holding in an account. A quantity of 0 means the position
        is closed; closed positions are purged overnight. The model carries
        cost-basis fields (average-open-price, average-daily-market-close-price,
        average-yearly-market-close-price) used to compute profit/loss against a
        live mark, but no live P/L figure itself.
    AccountBalance:
      type: object
      properties:
        account-number:
          description: The account number this balance belongs to.
          type: string
          example: 5WX01234
        currency:
          description: The currency of the balance. Defaults to USD.
          type: string
          example: USD
        cash-balance:
          description: Settled cash in the account. May be positive or negative. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "7218.997"
        long-equity-value:
          description: Total value of long equity positions. Decimal value serialized as a
            JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "24629.746"
        short-equity-value:
          description: Total value of short equity positions. Decimal value serialized as
            a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        long-derivative-value:
          description: Total value of long derivative (options) positions. Decimal value
            serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        short-derivative-value:
          description: Total value of short derivative (options) positions. Decimal value
            serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        long-futures-value:
          description: Total value of long futures positions. Decimal value serialized as
            a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        short-futures-value:
          description: Total value of short futures positions. Decimal value serialized as
            a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        long-futures-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-futures-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-margineable-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-margineable-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        margin-equity:
          description: The account's margin equity. Decimal value serialized as a JSON
            string (e.g. "150.25").
          type: string
          format: decimal
          example: "32520.734"
        equity-buying-power:
          description: Funds available to open equity positions. Decimal value serialized
            as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "45657.048"
        derivative-buying-power:
          description: Funds available to open derivative (options) positions. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "22828.524"
        day-trading-buying-power:
          description: Funds available for day trades. Decimal value serialized as a JSON
            string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        futures-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        available-trading-funds:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        maintenance-requirement:
          description: Margin the account must maintain against its current positions.
            Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "9692.211"
        maintenance-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        reg-t-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        day-trading-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        day-equity-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        net-liquidating-value:
          description: Total current value of the account, roughly the cash you would end
            up with if you closed every position. Decimal value serialized as a
            JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "32520.734"
        cash-available-to-withdraw:
          description: Cash that can be withdrawn right now. Decimal value serialized as a
            JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "22828.53"
        day-trade-excess:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        pending-cash:
          description: Cash mid-transfer that has not cleared. Usually 0.0. Check
            pending-cash-effect for direction. Decimal value serialized as a
            JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "0.0"
        pending-cash-effect:
          description: Direction of pending-cash. Credit is an incoming deposit, Debit is
            an outgoing withdrawal, None means no pending cash.
          type: string
          example: None
        long-cryptocurrency-value:
          description: Total value of long cryptocurrency positions. Decimal value
            serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "671.991"
        short-cryptocurrency-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        cryptocurrency-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        unsettled-cryptocurrency-fiat-amount:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        unsettled-cryptocurrency-fiat-effect:
          description: ""
          type: string
        closed-loop-available-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        equity-offering-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-bond-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        bond-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        used-derivative-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        special-memorandum-account-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        special-memorandum-account-apex-adjustment:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        total-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        margin-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        cash-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        sma-equity-option-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        snapshot-date:
          description: The date this balance reflects.
          type: string
          format: date
          example: 2026-06-08
        time-of-day:
          description: ""
          type: string
        reg-t-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        futures-overnight-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        futures-intraday-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        maintenance-excess:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        pending-margin-interest:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        apex-starting-day-margin-equity:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        buying-power-adjustment:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        buying-power-adjustment-effect:
          description: ""
          type: string
        effective-cryptocurrency-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        updated-at:
          description: Timestamp when the balance was last updated.
          type: string
          format: date-time
          example: 2026-06-08T01:10:30.928+00:00
      description: The single current balance object for an account. Describes
        monetary values such as cash-balance, net-liquidating-value, buying
        power, position values broken out by instrument type and side, and
        margin requirements.
    AccountBalanceSnapshot:
      type: object
      properties:
        account-number:
          description: The account number this snapshot belongs to.
          type: string
          example: 5WX01234
        currency:
          description: The currency of the snapshot. Defaults to USD.
          type: string
          example: USD
        cash-balance:
          description: Settled cash in the account at the time of the snapshot. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "7218.997"
        long-equity-value:
          description: Total value of long equity positions at the time of the snapshot.
            Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "24629.746"
        short-equity-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-futures-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-futures-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-futures-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-futures-derivative-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-margineable-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-margineable-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        margin-equity:
          description: The account's margin equity at the time of the snapshot. Decimal
            value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "32520.734"
        equity-buying-power:
          description: Funds available to open equity positions at the time of the
            snapshot. Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "45657.048"
        derivative-buying-power:
          description: Funds available to open derivative (options) positions at the time
            of the snapshot. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "22828.524"
        day-trading-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        futures-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        available-trading-funds:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        maintenance-requirement:
          description: Margin the account must maintain against its positions at the time
            of the snapshot. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "9692.211"
        maintenance-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        reg-t-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        day-trading-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        day-equity-call-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        net-liquidating-value:
          description: Total current value of the account at the time of the snapshot.
            Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
          example: "32520.734"
        cash-available-to-withdraw:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        day-trade-excess:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        pending-cash:
          description: Cash mid-transfer that had not cleared at the time of the snapshot.
            Usually 0.0. Decimal value serialized as a JSON string (e.g.
            "150.25").
          type: string
          format: decimal
          example: "0.0"
        pending-cash-effect:
          description: Direction of pending-cash. Credit is an incoming deposit, Debit is
            an outgoing withdrawal, None means no pending cash.
          type: string
          example: None
        long-cryptocurrency-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        short-cryptocurrency-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        cryptocurrency-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        unsettled-cryptocurrency-fiat-amount:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        unsettled-cryptocurrency-fiat-effect:
          description: ""
          type: string
        closed-loop-available-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        equity-offering-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        long-bond-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        bond-margin-requirement:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        used-derivative-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        special-memorandum-account-value:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        special-memorandum-account-apex-adjustment:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        total-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        margin-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        cash-settle-balance:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        sma-equity-option-buying-power:
          description: Decimal value serialized as a JSON string (e.g. "150.25").
          type: string
          format: decimal
        snapshot-date:
          description: The date on which the snapshot was captured.
          type: string
          format: date
          example: 2026-06-08
        time-of-day:
          description: "Which daily snapshot this is: BOD (beginning of day) or EOD (end
            of day)."
          type: string
          example: EOD
      description: "A point-in-time copy of an account's balance. Captured twice a
        day: once in the morning (time-of-day BOD) and once after the equities
        market closes (EOD). Carries a subset of AccountBalance's monetary
        fields, identified by snapshot-date and time-of-day."
x-tastytrade-service:
  serviceName: account-positions-api
  group: balances-and-positions
  title: Balances and Positions
