openapi: 3.0.3 info: title: Ally Invest Accounts API description: The Ally Invest REST API (originally developed from the TradeKing acquisition) provides programmatic access to self-directed brokerage account management, order placement, real-time and delayed market data, watchlist management, and member profile information. Authentication uses OAuth 1.0 with consumer and token credentials. Responses are available in JSON and XML formats. version: v1 contact: email: InvestAPI@ally.com termsOfService: https://www.ally.com/content/dam/pdf/invest/api-agreement.pdf x-logo: url: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg servers: - url: https://api.ally.com/v1 description: Ally Invest REST API - url: https://stream.ally.com/v1 description: Ally Invest Streaming API tags: - name: Accounts description: Account balances, holdings, history, and portfolio data paths: /accounts.json: get: operationId: getAccounts summary: Get all accounts description: Returns summary account information for all accounts associated with the authenticated member. tags: - Accounts responses: '200': description: Successful response with account list content: application/json: schema: $ref: '#/components/schemas/AccountsResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] /accounts/balances.json: get: operationId: getAccountsBalances summary: Get balances for all accounts description: Returns balance information for all accounts associated with the authenticated member. tags: - Accounts responses: '200': description: Successful response with balances for all accounts content: application/json: schema: $ref: '#/components/schemas/AccountsBalancesResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] /accounts/{id}.json: get: operationId: getAccount summary: Get account details description: Returns detailed account information for a specific account identified by account ID. tags: - Accounts parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: Successful response with account details content: application/json: schema: $ref: '#/components/schemas/AccountResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] /accounts/{id}/balances.json: get: operationId: getAccountBalances summary: Get balances for a specific account description: Returns balance information for a specific account identified by account ID. tags: - Accounts parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: Successful response with account balance content: application/json: schema: $ref: '#/components/schemas/AccountBalanceResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] /accounts/{id}/history.json: get: operationId: getAccountHistory summary: Get account transaction history description: Returns transaction history for a specific account including trades, dividends, and other account activity. tags: - Accounts parameters: - $ref: '#/components/parameters/AccountId' - name: range in: query description: Date range for history (e.g., all, today, current_week, current_month, last_month) schema: type: string enum: - all - today - current_week - current_month - last_month - name: transactions in: query description: Transaction type filter (e.g., all, bookkeeping, trade) schema: type: string enum: - all - bookkeeping - trade responses: '200': description: Successful response with account history content: application/json: schema: $ref: '#/components/schemas/AccountHistoryResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] /accounts/{id}/holdings.json: get: operationId: getAccountHoldings summary: Get account holdings description: Returns current holdings (positions) for a specific account. tags: - Accounts parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: Successful response with account holdings content: application/json: schema: $ref: '#/components/schemas/AccountHoldingsResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' security: - OAuth1: [] components: schemas: AccountsBalancesResponse: type: object properties: response: type: object properties: accountbalance: type: array items: $ref: '#/components/schemas/AccountBalance' elapsedtime: type: string id: type: string error: type: string AccountResponse: type: object properties: response: type: object properties: accountsummary: $ref: '#/components/schemas/AccountSummary' elapsedtime: type: string id: type: string error: type: string Holding: type: object properties: accounttype: type: string costbasis: type: string gainloss: type: string gainlosspct: type: string instrument: type: object properties: cusip: type: string desc: type: string factor: type: string matdt: type: string maturityvalue: type: string mult: type: string putcall: type: string sectyp: type: string sesn: type: string strkpx: type: string sym: type: string marketvalue: type: string marketvaluechange: type: string price: type: string purchaseprice: type: string qty: type: string quote: $ref: '#/components/schemas/Quote' underlying: type: string AccountsResponse: type: object properties: response: type: object properties: accounts: type: object properties: accountsummary: type: array items: $ref: '#/components/schemas/AccountSummary' elapsedtime: type: string id: type: string error: type: string ErrorResponse: type: object properties: response: type: object properties: error: type: string description: Error message elapsedtime: type: string id: type: string AccountHoldingsResponse: type: object properties: response: type: object properties: accountholdings: $ref: '#/components/schemas/AccountHoldings' elapsedtime: type: string id: type: string error: type: string AccountBalance: type: object properties: account: type: string description: Account number accountvalue: type: string description: Total account value buyingpower: type: object properties: cashavailableforwithdrawal: type: string daytrading: type: string equitypercentage: type: string options: type: string soddaytrading: type: string stock: type: string fedcall: type: string housecall: type: string money: type: object properties: accruedinterest: type: string cash: type: string cashavailable: type: string marginbalance: type: string mmf: type: string total: type: string uncleareddeposits: type: string unsettledfunds: type: string yield: type: string securities: type: object properties: longoptions: type: string longstocks: type: string options: type: string shortoptions: type: string shortstocks: type: string stocks: type: string total: type: string AccountBalanceResponse: type: object properties: response: type: object properties: accountbalance: $ref: '#/components/schemas/AccountBalance' elapsedtime: type: string id: type: string error: type: string AccountHistoryResponse: type: object properties: response: type: object properties: transactions: type: object properties: transaction: type: array items: type: object properties: accounttype: type: string activity: type: string amount: type: string date: type: string desc: type: string instrument: type: object properties: cusip: type: string desc: type: string factor: type: string matdt: type: string maturityvalue: type: string mult: type: string putcall: type: string sectyp: type: string sesn: type: string strkpx: type: string sym: type: string price: type: string qty: type: string settlementdate: type: string side: type: string source: type: string tradetime: type: string transactionid: type: string elapsedtime: type: string id: type: string error: type: string AccountHoldings: type: object properties: holding: type: array items: $ref: '#/components/schemas/Holding' totalholdings: type: object properties: accountvalue: type: string longoptions: type: string longstocks: type: string options: type: string shortoptions: type: string shortstocks: type: string stocks: type: string total: type: string Quote: type: object description: Market quote data for a security properties: adp_100: type: string description: Average daily price, 100-day adp_200: type: string description: Average daily price, 200-day adp_50: type: string description: Average daily price, 50-day adv_21: type: string description: Average daily volume, 21-day adv_30: type: string description: Average daily volume, 30-day adv_90: type: string description: Average daily volume, 90-day ask: type: string description: Ask price ask_time: type: string description: Time of ask price asksz: type: string description: Ask size (number of shares) basis: type: string description: Reported basis beta: type: string description: Beta coefficient bid: type: string description: Bid price bid_time: type: string description: Time of bid price bidsz: type: string description: Bid size (number of shares) bidtick: type: string description: Bid tick indicator chg: type: string description: Change from previous close chg_sign: type: string description: Sign of change (u=up, d=down, e=even) chg_t: type: string description: Change from previous close (text format) cl: type: string description: Previous close price contract_size: type: string description: Contract size (for options) cusip: type: string description: CUSIP identifier date: type: string description: Trade date datetime: type: string description: Date and time of last quote days_to_expiration: type: string description: Days until option expiration div: type: string description: Cash dividend amount divexdate: type: string description: Dividend ex-date divfreq: type: string description: Dividend frequency divpaydt: type: string description: Dividend pay date dollar_value: type: string description: Dollar value of trade eps: type: string description: Earnings per share exch: type: string description: Exchange code exch_desc: type: string description: Exchange description hi: type: string description: High price for the day iad: type: string description: Indicated annual dividend idelta: type: string description: Option delta igamma: type: string description: Option gamma imp_volatility: type: string description: Implied volatility incr_vl: type: string description: Incremental volume (volume of last trade) irho: type: string description: Option rho issue_desc: type: string description: Issue description itheta: type: string description: Option theta ivega: type: string description: Option vega last: type: string description: Last trade price lo: type: string description: Low price for the day name: type: string description: Company name op_delivery: type: string description: Option delivery type op_flag: type: string description: Options flag (1=optionable) op_style: type: string description: Option style (A=American, E=European) op_subclass: type: string description: Option subclass openinterest: type: string description: Open interest (options) opn: type: string description: Open price opt_val: type: string description: Option value pchg: type: string description: Percent change from previous close pchg_sign: type: string description: Sign of percent change pcls: type: string description: Previous close pe: type: string description: Price-to-earnings ratio phi: type: string description: Previous high plo: type: string description: Previous low popn: type: string description: Previous open pr_adp_100: type: string description: Prior period 100-day average daily price pr_adp_200: type: string description: Prior period 200-day average daily price pr_adp_50: type: string description: Prior period 50-day average daily price pr_date: type: string description: Prior trade date pr_openinterest: type: string description: Prior open interest prbook: type: string description: Book value per share prchg: type: string description: Prior change prem_mult: type: string description: Premium multiplier put_call: type: string description: Put/Call indicator (P=put, C=call) pvol: type: string description: Previous volume qcond: type: string description: Quote condition code rootsymbol: type: string description: Root symbol (for options) secclass: type: string description: Security class sesn: type: string description: Trading session sho: type: string description: Shares outstanding strikeprice: type: string description: Strike price (for options) symbol: type: string description: Ticker symbol tcond: type: string description: Trade condition code timestamp: type: string description: Unix timestamp of last trade tr_num: type: string description: Trade number tradetick: type: string description: Trade tick (U=up, D=down, E=even) trend: type: string description: Price trend indicator under_cusip: type: string description: Underlying security CUSIP undersymbol: type: string description: Underlying security symbol (for options) vl: type: string description: Volume volatility12: type: string description: 52-week price volatility vwap: type: string description: Volume weighted average price wk52hi: type: string description: 52-week high price wk52hidate: type: string description: Date of 52-week high wk52lo: type: string description: 52-week low price wk52lodate: type: string description: Date of 52-week low xdate: type: string description: Option expiration date (YYYYMMDD) xday: type: string description: Option expiration day xmonth: type: string description: Option expiration month xyear: type: string description: Option expiration year yield: type: string description: Dividend yield AccountSummary: type: object properties: account: type: string description: Account number accountbalance: $ref: '#/components/schemas/AccountBalance' accountholdings: $ref: '#/components/schemas/AccountHoldings' responses: Unauthorized: description: Authentication required or credentials invalid content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' NotFound: description: Requested resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' RateLimited: description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' parameters: AccountId: name: id in: path required: true description: The account ID (account number) schema: type: string securitySchemes: OAuth1: type: apiKey in: header name: Authorization description: OAuth 1.0 authentication using consumer key/secret and OAuth token/secret pairs. The Authorization header must include oauth_consumer_key, oauth_token, oauth_signature_method (HMAC-SHA1), oauth_timestamp, oauth_nonce, oauth_version, and oauth_signature. externalDocs: description: Ally Invest API Documentation url: https://www.ally.com/api/invest/documentation/getting-started/