> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wealthyhood.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get daily summaries

> Retrieve historical daily portfolio summaries with performance metrics and market insights.



## OpenAPI

````yaml GET /daily-summaries
openapi: 3.0.3
info:
  title: Wealthyhood Daily Summaries API
  version: 1.0.0
  description: >
    Daily summaries endpoints that provide historical portfolio snapshots with
    performance metrics,

    market data, and sentiment analysis.


    All requests require a bearer token with the scopes advertised in the
    primary specification,

    and must include the `x-user-id` header so the platform can resolve the
    acting investor.
servers:
  - url: https://{host}
    variables:
      host:
        default: api.wealthyhood.com
        description: Wealthyhood API host name.
security:
  - bearerAuth: []
tags:
  - name: Daily Summaries
    description: Historical daily portfolio summaries with performance and market insights.
paths:
  /daily-summaries:
    get:
      tags:
        - Daily Summaries
      summary: Get user daily summaries
      description: >
        Returns an array of daily summaries for the authenticated user. Each
        summary contains

        a snapshot of the user's portfolio (cash, savings, holdings, total
        value), performance

        metrics, market insights, sentiment scores, and other enriched data for
        that day.


        Historical data is limited to the last 30 days (plus today and yesterday
        when needed).

        Related data such as sundown digests, index prices, and savings tickers
        use the same window.


        The response also includes `maxValueDifferences` which represents the
        maximum difference

        in values across the time period for each portfolio component, useful
        for chart scaling.
      parameters:
        - $ref: '#/components/parameters/XUserId'
      responses:
        '200':
          description: Daily summaries retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DailySummariesResponse'
              example:
                data:
                  - chartLabel: |-
                      Mon
                      01
                    timestamp: 1704067200000
                    portfolio:
                      cash:
                        key: cash
                        displayValue: €500.00
                        value: 500
                      savings:
                        key: savings
                        displayValue: €1,500.00
                        value: 1500
                        unrealisedMonthlyInterest: €5.50
                        dailyInterest: €0.18
                      holdings:
                        key: holdings
                        displayValue: €3,000.00
                        value: 3000
                        upBy: €150.00
                      total:
                        key: total
                        displayValue: €5,000.00
                        value: 5000
                        upBy: €150.00
                    sentimentScore:
                      total:
                        score: 75
                        label: optimal
                      news:
                        score: 80
                        label: optimal
                      analyst:
                        score: 70
                        label: optimal
                      priceMomentum:
                        score: 75
                        label: optimal
                    performers:
                      all:
                        - assetId: APPLE
                          value: €1,200.00
                          weight: 40%
                          upBy: €50.00
                      best:
                        - assetId: APPLE
                          value: €1,200.00
                          weight: 40%
                          upBy: €50.00
                      worst:
                        - assetId: TESLA
                          value: €800.00
                          weight: 27%
                          downBy: €25.00
                maxValueDifferences:
                  cash: 100
                  savings: 500
                  holdings: 1000
                  total: 1500
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
components:
  parameters:
    XUserId:
      name: x-user-id
      in: header
      description: >
        User identifier for the M2M client to specify which user's data to
        access.
      required: true
      schema:
        type: string
        pattern: ^[a-f0-9]{24}$
  schemas:
    DailySummariesResponse:
      type: object
      required:
        - data
      properties:
        data:
          type: array
          description: Array of daily summaries ordered chronologically.
          items:
            oneOf:
              - $ref: '#/components/schemas/DailySummaryWithData'
              - $ref: '#/components/schemas/ChartLabelOnly'
        maxValueDifferences:
          type: object
          description: >-
            Maximum value differences for each portfolio component across the
            time period, in whole currency units.
          properties:
            cash:
              type: number
            savings:
              type: number
            holdings:
              type: number
            total:
              type: number
    DailySummaryWithData:
      type: object
      required:
        - chartLabel
        - timestamp
        - portfolio
        - performers
      properties:
        chartLabel:
          type: string
          description: Formatted date label for chart display (e.g. "Mon\n01").
          example: |-
            Mon
            01
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp in milliseconds.
          example: 1704067200000
        portfolio:
          $ref: '#/components/schemas/DailySummaryPortfolio'
        sentimentScore:
          $ref: '#/components/schemas/SentimentScore'
        todayMarkets:
          type: array
          description: Market performance indicators for the day.
          items:
            $ref: '#/components/schemas/TodayMarketEntry'
        performers:
          $ref: '#/components/schemas/Performers'
        marketSummary:
          $ref: '#/components/schemas/MarketSummary'
        isUninvested:
          type: boolean
          description: >-
            Whether the user had no activity on this day (including investments,
            savings, and cash activity).
        seeAllTopPerformersEnabled:
          type: boolean
          description: Whether the see all top performers feature is enabled.
    ChartLabelOnly:
      type: object
      required:
        - chartLabel
        - timestamp
        - isOnlyForChartLabel
      properties:
        chartLabel:
          type: string
          description: Formatted date label for chart display (e.g. "Mon\n01").
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp in milliseconds.
        isOnlyForChartLabel:
          type: boolean
          description: Indicates this entry is only for chart labeling purposes.
          enum:
            - true
    ApiErrorResponse:
      type: object
      properties:
        status:
          type: integer
        error:
          type: object
          properties:
            message:
              type: string
            description:
              type: string
              nullable: true
        responseId:
          type: string
          format: uuid
    DailySummaryPortfolio:
      type: object
      required:
        - cash
        - savings
        - holdings
        - total
      properties:
        cash:
          $ref: '#/components/schemas/PortfolioComponent'
        savings:
          allOf:
            - $ref: '#/components/schemas/PortfolioComponent'
            - $ref: '#/components/schemas/SavingsInterestDetails'
        holdings:
          allOf:
            - $ref: '#/components/schemas/PortfolioComponent'
            - $ref: '#/components/schemas/Returns'
        total:
          allOf:
            - $ref: '#/components/schemas/PortfolioComponent'
            - $ref: '#/components/schemas/Returns'
    SentimentScore:
      type: object
      required:
        - total
      properties:
        total:
          $ref: '#/components/schemas/SentimentScoreEntry'
        news:
          $ref: '#/components/schemas/SentimentScoreEntry'
        analyst:
          $ref: '#/components/schemas/SentimentScoreEntry'
        priceMomentum:
          $ref: '#/components/schemas/SentimentScoreEntry'
    TodayMarketEntry:
      type: object
      required:
        - label
        - returns
      properties:
        label:
          type: string
          description: Market index or category label.
          example: S&P 500
        returns:
          $ref: '#/components/schemas/Returns'
    Performers:
      type: object
      required:
        - all
        - best
        - worst
      properties:
        all:
          type: array
          items:
            $ref: '#/components/schemas/InvestmentWithPerformance'
        best:
          type: array
          items:
            $ref: '#/components/schemas/InvestmentWithPerformance'
        worst:
          type: array
          items:
            $ref: '#/components/schemas/InvestmentWithPerformance'
    MarketSummary:
      type: object
      properties:
        overview:
          type: string
          description: Market overview text.
        sections:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
                description: Section title (asset name and ticker).
              tickerSymbol:
                type: string
                description: Ticker symbol.
              assetReturns:
                $ref: '#/components/schemas/Returns'
              content:
                type: string
                description: Section content.
              assetId:
                type: string
                description: Public asset identifier.
              tag:
                type: string
                description: Category tag when no ticker is available.
    PortfolioComponent:
      type: object
      required:
        - key
        - displayValue
        - value
      properties:
        key:
          type: string
          description: Component identifier.
          example: cash
        chartValue:
          type: number
          description: Value in whole currency units, used for chart rendering.
        displayValue:
          type: string
          description: Formatted value for display.
          example: €500.00
        value:
          type: number
          description: Value in whole currency units (e.g. 500 for €500.00).
          example: 500
    SavingsInterestDetails:
      type: object
      properties:
        estimated:
          type: boolean
          description: Whether the interest is estimated.
        unrealisedMonthlyInterest:
          type: string
          description: Formatted unrealised monthly interest.
          example: €5.50
        dailyInterest:
          type: string
          description: Formatted daily interest.
          example: €0.18
    Returns:
      type: object
      properties:
        upBy:
          type: string
          description: Formatted positive return amount.
          example: €150.00
        downBy:
          type: string
          description: Formatted negative return amount.
          example: €25.00
    SentimentScoreEntry:
      type: object
      required:
        - score
        - label
      properties:
        score:
          type: number
          description: Sentiment score value.
          example: 75
        label:
          type: string
          description: Sentiment label.
          enum:
            - optimal
            - suboptimal
            - underperforming
          example: optimal
    InvestmentWithPerformance:
      allOf:
        - type: object
          required:
            - assetId
            - value
            - weight
          properties:
            assetId:
              type: string
              description: Asset identifier.
              example: APPLE
            value:
              type: string
              description: Formatted investment value.
              example: €1,200.00
            weight:
              type: string
              description: Portfolio weight percentage.
              example: 40%
        - $ref: '#/components/schemas/Returns'
  responses:
    UnauthorizedError:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
          example:
            status: 401
            error:
              message: User not found
            responseId: 145f2b0d-1d5b-4e91-8d0d-7af0ae9ad13a
    ForbiddenError:
      description: Authenticated user cannot act on the requested resource or lacks scopes.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
          example:
            status: 403
            error:
              message: Access denied
            responseId: 5e467f79-c62c-4d83-9810-7a0f8529fd76
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Auth0-issued access token that includes the scopes listed for the
        endpoint.

````