Alpaca Reporting API

The Reporting API from Alpaca — 3 operation(s) for reporting.

Operations 3

GET /v1/reporting/eod/aggregate_positions Retrieve Aggregate Positions #
GET /v1/reporting/eod/positions Retrieve EOD Positions #
GET /v1/reporting/eod/cash_interest Retrieve EOD Cash Interest Details #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-account-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-order-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-position-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-option-contract-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-assets-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-create-order-request-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-trade-account-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-account-extended-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-account-creation-request-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-trade-update-event-v2-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-ipoevent-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-corporate-action-event-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-movers-resp-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-fixed-income-latest-quotes-resp-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-most-actives-resp-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-fixed-income-latest-prices-resp-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-stock-auctions-resp-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-token-request-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-token-response-schema.json
📊
JSONSchema
https://artifacts.apis.io/alpaca/json-schema/alpaca-corporate-actions-resp-schema.json

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/alpaca:alpaca-reporting-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

alpaca-reporting-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Alpaca Reporting API
  version: 1.1.1
  contact:
    email: support@alpaca.markets
    name: Alpaca Support
    url: https://alpaca.markets/support
  description: 'Operations tagged Reporting across 2 of this provider''s published API definitions: alpaca-eu-broker-api-openapi.json, alpaca-us-broker-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- description: Sandbox endpoint
  url: https://broker-api.sandbox.eu.alpaca.markets
- description: Production endpoint
  url: https://broker-api.eu.alpaca.markets
- description: Sandbox endpoint
  url: https://broker-api.sandbox.alpaca.markets
- description: Production endpoint
  url: https://broker-api.alpaca.markets
security:
- BasicAuth: []
tags:
- name: Reporting
paths:
  /v1/reporting/eod/aggregate_positions:
    get:
      description: This API endpoint provides reporting data to partners for aggregate common stock and crypto positions across their account base. Partners can view historical snapshots of their holding across their entire account base. Please note that this API utilizes an 8:00 pm (EST) cutoff which aligns with the end of the Securities extended hours trading session as well as Alpaca's 24 hour Crypto trading window. Additionally, the endpoint supports indexing to help the partner efficiently filter by key information including date and symbol while being able to include or remove firm accounts.
      operationId: get-v1-reporting-eod-aggregate_positions
      parameters:
      - description: '"YYYY-MM-DD" format'
        in: query
        name: date
        required: true
        schema:
          format: date
          type: string
      - description: Comma-separated symbols. If populated, then only the specified symbols will be returned. If null, then all symbols will be included in the response.
        in: query
        name: symbols
        schema:
          type: string
      - description: Defaults to True which includes firm accounts. Passing False will exclude all firm accounts.
        in: query
        name: firm_accounts
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AggregatePositionResponse'
                type: array
          description: 'Array of objects, each object pertains to the date specified in the request and a unique asset. See parameters below. Notes: Returns an empty array for non-trading days, assets with no positions are omitted.'
      summary: Retrieve Aggregate Positions
      tags:
      - Reporting
    servers:
    - description: Sandbox endpoint
      url: https://broker-api.sandbox.eu.alpaca.markets
    - description: Production endpoint
      url: https://broker-api.eu.alpaca.markets
  /v1/reporting/eod/positions:
    get:
      description: 'This API retrieves a comprehensive list of end-of-day positions for all accounts. End-of-day (EOD) positions are typically accessible after 4:00 am Eastern Time (ET) on the following day, providing a comprehensive view of the day''s closing positions across all accounts.

        This API currently only supports retrieving EOD positions for the last trading date.'
      operationId: get-v1-reporting-eod-positions
      parameters:
      - description: Filter the results by account_id (optional).
        in: query
        name: account_id
        schema:
          format: uuid
          type: string
      - description: Filter the results by asset ID or symbol (optional).
        in: query
        name: asset
        schema:
          type: string
      - description: 'The positions date in ''YYYY-MM-DD'' format. It''s recommended to provide this parameter when the ''page'' parameter is specified, to ensure precise data retrieval based on the desired date.

          Only previous trading date is supported.'
        in: query
        name: asof
        schema:
          format: date
          type: string
      - $ref: '#/components/parameters/PageToken'
      - description: The number of accounts to display per page (default=1000, max=10000).
        in: query
        name: limit
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  asof:
                    description: The date of the snapshot in the 'YYYY-MM-DD' format.
                    format: date
                    type: string
                  next_page_token:
                    $ref: '#/components/schemas/NextPageToken'
                  positions:
                    additionalProperties:
                      items:
                        $ref: '#/components/schemas/Position'
                      type: array
                    description: A detailed map of account IDs to their respective positions.
                    type: object
                type: object
          description: Successful response containing the end-of-day positions for the specified accounts.
        '422':
          description: This can be returned if the asof param does not match the latest snap available at Alpaca.
      summary: Retrieve EOD Positions
      tags:
      - Reporting
    servers:
    - description: Sandbox endpoint
      url: https://broker-api.sandbox.eu.alpaca.markets
    - description: Production endpoint
      url: https://broker-api.eu.alpaca.markets
  /v1/reporting/eod/cash_interest:
    get:
      description: This API retrieves a list of cash interest details for the given date(s) for a single account or all accounts. End-of-day (EOD) details are typically accessible after 8:00pm Eastern Time (ET) and reflect that day's ending state across cash balances, accrued interest, accrued fees, as well as additional ancillary details.
      operationId: get-v1-get-eod-cash-interest-report
      parameters:
      - description: Account globally unique identifier. If not provided, the report will be generated for all accounts.
        in: query
        name: account_id
        required: false
        schema:
          format: uuid
          type: string
      - description: A date in the format YYYY-MM-DD. If not provided, the report will be generated for the most recent date this report is available.
        in: query
        name: date
        required: false
        schema:
          format: date
          type: string
      - description: A date in the format YYYY-MM-DD, valid only if account_id is provided and date is not provided. If not provided, this will use `before` value. If neither is provided the most recent available date is used for both `before` and `after`.
        in: query
        name: after
        required: false
        schema:
          format: date
          type: string
      - description: A date in the format YYYY-MM-DD, valid only if account_id is provided and date is not provided. If not provided, this will use the most recent available date.
        in: query
        name: before
        required: false
        schema:
          format: date
          type: string
      - description: The direction to use for sorting responses, either `asc` or `desc`. Only valid for account_id queries, for which only sorting by date is supported. Defaults to `desc`.
        in: query
        name: direction
        required: false
        schema:
          type: string
      - description: The page size, used for paginating responses. Defaults to 1000, with a maximum of 10,000.
        in: query
        name: page_size
        required: false
        schema:
          default: 1000
          maximum: 10000
          minimum: 1
          type: integer
      - description: A token used to retrieve the next page for paginated queries. If provided the response will begin at the next page of the results for the response from which the `next_page_token` is used.
        in: query
        name: page_token
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EoDCashInterestReportResponse'
          description: Successful response, returns a list of daily interest accruals and an optional next page token.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: A client error occurred. Please check the provided request parameters and try again.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. Please check your API key and try again.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Too many requests. Please wait a moment and try again.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: A server error occurred. Please contact Alpaca.
      summary: Retrieve EOD Cash Interest Details
      tags:
      - Reporting
    servers:
    - description: Sandbox endpoint
      url: https://broker-api.sandbox.alpaca.markets
    - description: Production endpoint
      url: https://broker-api.alpaca.markets
components:
  schemas:
    Position:
      examples:
      - asset_class: us_equity
        asset_id: 93f58d0b-6c53-432d-b8ce-2bad264dbd94
        asset_marginable: false
        avg_entry_price: '172.08'
        change_today: '0.0189483657034581'
        cost_basis: '688.32'
        current_price: '172.08'
        exchange: NASDAQ
        lastday_price: '168.88'
        market_value: '688.32'
        qty: '4'
        qty_available: '4'
        side: long
        symbol: AAPL
        unrealized_intraday_pl: '0'
        unrealized_intraday_plpc: '0'
        unrealized_pl: '0'
        unrealized_plpc: '0'
      properties:
        asset_class:
          $ref: '#/components/schemas/AssetClass'
        asset_id:
          description: Asset ID (For options this represents the option contract ID)
          example: 904837e3-3b76-47ec-b432-046db621571b
          format: uuid
          type: string
        asset_marginable:
          description: Indicates if this asset is marginable
          type: boolean
        avg_entry_price:
          description: Average entry price of the position
          example: '100.0'
          type: string
        avg_entry_swap_rate:
          description: The average swap rate of the position. This is only returned for LCT accounts.
          example: '1.40'
          format: decimal
          type: string
        change_today:
          description: Percent change from last day price (by a factor of 1)
          example: '0.0084'
          format: decimal
          type: string
        cost_basis:
          description: Total cost basis
          example: '500.0'
          format: decimal
          type: string
        current_price:
          description: Current asset price per share
          example: '120.0'
          format: decimal
          type: string
        exchange:
          description: Exchange name of the asset
          example: NASDAQ
          type: string
        lastday_price:
          description: Last day's asset price per share based on the closing value of the last trading day
          example: '119.0'
          format: decimal
          type: string
        market_value:
          description: Total market value of the position
          example: '600.0'
          format: decimal
          type: string
        qty:
          description: The number of shares
          example: '5'
          type: string
        qty_available:
          description: Total number of shares available minus open orders / locked for options covered call
          example: '5'
          type: string
        side:
          enum:
          - long
          - short
          example: long
          type: string
        swap_rate:
          description: The latest swap rate. This is only returned for LCT accounts.
          example: '1.50'
          format: decimal
          type: string
        symbol:
          description: Asset symbol
          example: AAPL
          type: string
        unrealized_intraday_pl:
          description: Unrealized profit/loss for the day
          example: '10.0'
          format: decimal
          type: string
        unrealized_intraday_plpc:
          description: Unrealized interday profit/loss percent (by a factor of 1)
          example: '0.0084'
          format: decimal
          type: string
        unrealized_pl:
          description: Unrealized profit/loss
          example: '100.0'
          format: decimal
          type: string
        unrealized_plpc:
          description: Unrealized profit/loss percent (by a factor of 1)
          example: '0.20'
          format: decimal
          type: string
        usd:
          $ref: '#/components/schemas/USDPosition'
      required:
      - asset_id
      - symbol
      - exchange
      - asset_class
      - avg_entry_price
      - qty
      - qty_available
      - side
      - market_value
      - cost_basis
      - unrealized_pl
      - unrealized_plpc
      - unrealized_intraday_pl
      - unrealized_intraday_plpc
      - current_price
      - lastday_price
      - change_today
      type: object
    AssetClass:
      description: 'This represents the category to which the asset belongs to. It serves to identify the nature of the financial instrument, with options including "us_equity" for U.S. equities, "us_option" for U.S. options, "crypto" for cryptocurrencies, and "ipo" for IPO indications of interest. This `asset_class: ipo` value is distinct from the assets API `attributes: ["ipo"]` flag.'
      enum:
      - us_equity
      - us_option
      - us_index
      - crypto
      - crypto_perp
      - ipo
      type: string
    NextPageToken:
      description: 'Use this token in your next API call to paginate through the dataset and retrieve the next page of results. A null token indicates there are no more data to fetch.

        '
      example: MTAwMA==
      type:
      - string
      - 'null'
    USDPosition:
      description: Position values in USD. This is returned for LCT (non-USD) accounts only.
      properties:
        avg_entry_price:
          description: Average entry price of the position in USD
          example: '71.43'
          format: decimal
          type: string
        change_today:
          description: Percent change from last day price (by a factor of 1)
          example: '0.67'
          format: decimal
          type: string
        cost_basis:
          description: Total cost basis in USD
          example: '333.33'
          format: decimal
          type: string
        current_price:
          description: Current asset price per share in USD
          example: '80.0'
          format: decimal
          type: string
        lastday_price:
          description: Last day's asset price per share based on the closing value of the last trading day in USD
          example: '79.33'
          format: decimal
          type: string
        market_value:
          description: Total market value of the position in USD
          example: '400.00'
          format: decimal
          type: string
        unrealized_intraday_pl:
          description: Unrealized profit/loss in USD for the day
          example: '6.67'
          format: decimal
          type: string
        unrealized_intraday_plpc:
          description: Unrealized interday profit/loss percent (by a factor of 1)
          example: '0.0084'
          format: decimal
          type: string
        unrealized_pl:
          description: Unrealized profit/loss in USD
          example: '66.67'
          format: decimal
          type: string
        unrealized_plpc:
          description: Unrealized profit/loss percent (by a factor of 1)
          example: '0.2'
          format: decimal
          type: string
      title: USDPosition
      type: object
    AggregatePositionResponse:
      examples:
      - asset_type: us_equity
        closing_price: '148.4700'
        cusip: 037833100
        long_market_value: '148.4700'
        long_qty: '1'
        num_accounts: 1
        short_market_value: '0'
        short_qty: '0'
        symbol: AAPL
      properties:
        asset_type:
          $ref: '#/components/schemas/AssetClass'
        closing_price:
          description: EOD asset price per share at session close
          format: decimal
          type: string
        cusip:
          description: Cusip (9 digits, can start with 0's)
          format: decimal
          type: string
        long_market_value:
          description: Aggregate notional dollar amount of the partner's long positions
          format: decimal
          type: string
        long_qty:
          description: Aggregate number of shares that the partner is long
          format: decimal
          type: string
        num_accounts:
          description: Number of accounts that have a position in this asset (either long or short)
          format: decimal
          type: integer
        short_market_value:
          description: Aggregate notional dollar amount of the partner's short positions
          format: decimal
          type: string
        short_qty:
          description: Aggregate number of shares that the partner is short
          format: decimal
          type: string
        symbol:
          description: Symbol of asset
          type: string
      title: ''
      type: object
    Error:
      properties:
        code:
          description: Alpaca error code, such as `40310000`. Usually the HTTP status code followed by a five-digit suffix. Several errors can share the same code, so check `message` for the specific reason.
          type: number
        message:
          description: Human-readable reason for the rejection.
          type: string
      required:
      - code
      - message
      title: Error
      type: object
    DailyCashInterest:
      properties:
        account_accrued_interest:
          example: '1.2152'
          format: decimal
          type: string
        account_id:
          example: 02e5c5ba-36d2-467a-8699-81dc24271291
          format: uuid
          type: string
        account_rate_bps:
          example: 423
          type: integer
        apr_tier_id:
          example: 13d149c8-d620-43e0-978b-88af8abb2ef1
          format: uuid
          type: string
        apr_tier_name:
          example: gold
          type: string
        cash_balance:
          example: '10485.76'
          format: decimal
          type: string
        correspondent_fee:
          example: '0.0718'
          format: decimal
          type: string
        correspondent_rate_bps:
          example: 25
          type: integer
        currency:
          example: USD
          type: string
        date:
          example: '2024-09-27'
          format: date
          type: string
      type: object
    EoDCashInterestReportResponse:
      properties:
        interest:
          items:
            $ref: '#/components/schemas/DailyCashInterest'
          type: array
        next_page_token:
          example: 293639be-8807-423f-b00d-68c781e8bb56
          type:
          - string
          - 'null'
      type: object
  parameters:
    PageToken:
      description: Used for pagination, this token retrieves the next page of results. It is obtained from the response of the preceding page when additional pages are available.
      in: query
      name: page_token
      required: false
      schema:
        example: MA==
        type: string
  securitySchemes:
    BasicAuth:
      scheme: basic
      type: http
x-refined-from:
- alpaca-eu-broker-api-openapi.json
- alpaca-us-broker-api-openapi.json
x-readme:
  explorer-enabled: true
  proxy-enabled: false