{
  "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`, \\\n                                 OCC Option Symbol `AAPL  191004P00275000`, \\\n                                 TW Future Symbol `/ESZ9`, or \\\n                                 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"
  }
}