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

# Get the dashboard overview

> Returns an aggregate figures object rather than a list: a seven-day send-volume series split by channel with the preceding week total, at most five recently active campaigns, and the insight rules that fired. The insights list is often empty, since only rules that trigger are returned. A campaign with no statistics reports null open and click rates rather than zero. Requires the `analytics:read` scope.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/user/dashboard/overview
openapi: 3.0.0
info:
  title: Brudcast API
  version: 1.0.0
servers:
  - url: https://core-service.prod.brudcast.com
    description: Production
security: []
tags:
  - name: Analytics
    x-displayName: Analytics
  - name: Campaigns
    x-displayName: Campaigns
  - name: Contacts
    x-displayName: Contacts
  - name: Mailboxes
    x-displayName: Mailboxes
  - name: Messages
    x-displayName: Messages
  - name: Sender Identities
    x-displayName: Sender Identities
  - name: Sending Domains
    x-displayName: Sending Domains
  - name: Templates
    x-displayName: Templates
  - name: Webhooks
    x-displayName: Webhooks
paths:
  /api/v1/user/dashboard/overview:
    get:
      tags:
        - Analytics
      summary: Get the dashboard overview
      description: >-
        Returns an aggregate figures object rather than a list: a seven-day
        send-volume series split by channel with the preceding week total, at
        most five recently active campaigns, and the insight rules that fired.
        The insights list is often empty, since only rules that trigger are
        returned. A campaign with no statistics reports null open and click
        rates rather than zero. Requires the `analytics:read` scope.
      parameters:
        - in: header
          name: X-Organization-Id
          required: false
          description: >-
            Required when authenticating with an access token. Optional with an
            API key, whose own organization binding is authoritative; a value
            contradicting it is refused with 403.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardOverviewResponse'
        '401':
          description: The credential is missing, malformed, revoked or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            The key lacks the scope the endpoint requires, or the organization
            does not match the credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: The payload or query string failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '429':
          description: >-
            Rate limit exceeded; retry after the number of seconds in
            `retryAfter`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
      security:
        - apiKey: []
        - apiKeyBearer: []
components:
  schemas:
    DashboardOverviewResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        message:
          type: string
        data:
          $ref: '#/components/schemas/DashboardOverview'
      required:
        - success
        - message
        - data
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Resource not found
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_ROW_NOT_FOUND
      required:
        - success
        - message
        - code
    ValidationErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: The payload is invalid
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_VALIDATION_ERROR
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
      required:
        - success
        - message
        - code
        - errors
    RateLimitErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Too many requests
        code:
          type: string
          enum:
            - E_VALIDATION_ERROR
            - E_UNAUTHORIZED_ACCESS
            - E_UNAUTHORIZED
            - E_FORBIDDEN
            - E_INSUFFICIENT_SCOPE
            - E_ROW_NOT_FOUND
            - E_TOO_MANY_REQUESTS
            - E_BUSINESS_RULE_VIOLATION
            - E_CAMPAIGN_NOT_SENDABLE
            - INSUFFICIENT_CREDITS
            - SUBSCRIPTION_REQUIRED
          example: E_TOO_MANY_REQUESTS
        retryAfter:
          type: number
          example: 60
      required:
        - success
        - message
        - code
        - retryAfter
    DashboardOverview:
      type: object
      properties:
        sendVolume:
          $ref: '#/components/schemas/DashboardSendVolume'
        recentCampaigns:
          type: array
          items:
            $ref: '#/components/schemas/DashboardRecentCampaign'
          description: At most five campaigns, most recently active first
        insights:
          type: array
          items:
            $ref: '#/components/schemas/DashboardInsight'
          description: Only the insight rules that fired, so the list is often empty
      required:
        - sendVolume
        - recentCampaigns
        - insights
    ValidationErrorItem:
      type: object
      properties:
        field:
          type: string
          example: emailAddress
        rule:
          type: string
          example: email
        message:
          type: string
          example: The emailAddress field must be a valid email address
      required:
        - field
        - rule
        - message
    DashboardSendVolume:
      type: object
      properties:
        series:
          type: array
          items:
            $ref: '#/components/schemas/DashboardSendVolumePoint'
          description: >-
            Seven points ending today, UTC, padded so days with no sends report
            zero
        channels:
          type: array
          items:
            type: string
            enum:
              - email
              - sms
              - whatsapp
              - push
          description: The channels the series spans, busiest first
        weekTotal:
          type: number
        previousWeekTotal:
          type: number
      required:
        - series
        - channels
        - weekTotal
        - previousWeekTotal
    DashboardRecentCampaign:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        status:
          type: string
          enum:
            - draft
            - scheduled
            - sending
            - sent
            - completed
            - paused
            - cancelled
        sentAt:
          type: string
          format: date-time
          nullable: true
        openRate:
          type: number
          nullable: true
          description: >-
            Null rather than zero when the campaign has no statistics or
            delivered nothing
        clickRate:
          type: number
          nullable: true
      required:
        - id
        - name
        - status
        - sentAt
        - openRate
        - clickRate
    DashboardInsight:
      type: object
      properties:
        key:
          type: string
          enum:
            - open_rate_trend
            - bounce_rate_high
            - unengaged_subscribers
        severity:
          type: string
          enum:
            - info
            - warning
            - suggestion
        title:
          type: string
          example: Campaign Performance
        message:
          type: string
          example: Open rates are up 6% vs last week.
        href:
          type: string
          nullable: true
          example: /reports/engagement
          description: >-
            Where the dashboard links the insight, relative to the application
            root
      required:
        - key
        - severity
        - title
        - message
        - href
    DashboardSendVolumePoint:
      type: object
      properties:
        date:
          type: string
          format: date
          example: '2026-07-28T00:00:00.000Z'
        byChannel:
          type: object
          additionalProperties:
            type: integer
          description: >-
            Sends that day keyed by channel, carrying only the channels that
            sent
        total:
          type: number
      required:
        - date
        - byChannel
        - total
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        An organization API key, prefixed `bk_live_`. Takes precedence over
        `Authorization` when both are sent. The key is bound to one
        organization, and the scopes it was issued with are enforced per
        endpoint.
    apiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: bk_live_...
      description: >-
        The same organization API key sent as `Authorization: Bearer
        bk_live_...`. Accepted only when the value begins with `bk_` and no
        `X-API-Key` header is present.

````