> ## Documentation Index
> Fetch the complete documentation index at: https://lightdash-mintlify-cccf65ca.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get dashboard pre-aggregate audit

> Audits pre-aggregate hit/miss coverage for every tile on a dashboard
without executing the queries. Returns a per-tile breakdown grouped
by tab, suitable for CI coverage checks and pre-aggregate tuning.



## OpenAPI

````yaml https://raw.githubusercontent.com/lightdash/lightdash/refs/heads/main/packages/backend/src/generated/swagger.json get /api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit
openapi: 3.0.0
info:
  title: Lightdash API
  version: 0.3233.0
  description: >
    Open API documentation for all public Lightdash API endpoints. #
    Authentication Before you get started, you might need to create a Personal
    Access Token to authenticate via the API. You can create a token by
    following this guide: https://docs.lightdash.com/references/personal_tokens
  license:
    name: MIT
  contact:
    name: Lightdash Support
    email: support@lightdash.com
    url: https://docs.lightdash.com/help-and-contact/contact/contact_info/
servers:
  - url: /
security: []
tags:
  - name: My Account
    description: These routes allow users to manage their own user account.
  - name: Organizations
    description: >-
      Each user is a member of a single organization. These routes allow users
      to manage their organization. Most actions are only available to admin
      users.
  - name: Projects
    description: >-
      Projects belong to a single organization. These routes allow users to
      manage their projects, browse content, and execute queries. Users inside
      an organization might have access to a project from an organization-level
      role or they might be granted access to a project directly.
  - name: Spaces
    description: >-
      Spaces allow you to organize charts and dashboards within a project. They
      also allow granular access to content by allowing you to create private
      spaces, which are only accessible to the creator and admins.
  - name: Roles & Permissions
    description: >-
      These routes allow users to manage roles and permissions for their
      organization.
    externalDocs:
      url: https://docs.lightdash.com/references/roles
  - name: Query
    description: >-
      These routes allow users to execute and manage queries against their data
      warehouse. This includes metric queries, SQL queries, and retrieving query
      results.
paths:
  /api/v2/projects/{projectUuid}/pre-aggregates/dashboards/{dashboardUuidOrSlug}/audit:
    get:
      tags:
        - v2
        - Pre-Aggregates
      summary: Get dashboard pre-aggregate audit
      description: |-
        Audits pre-aggregate hit/miss coverage for every tile on a dashboard
        without executing the queries. Returns a per-tile breakdown grouped
        by tab, suitable for CI coverage checks and pre-aggregate tuning.
      operationId: getDashboardPreAggregateAudit
      parameters:
        - in: path
          name: projectUuid
          required: true
          schema:
            type: string
        - in: path
          name: dashboardUuidOrSlug
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiGetDashboardPreAggregateAuditResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      security: []
components:
  schemas:
    ApiGetDashboardPreAggregateAuditResponse:
      properties:
        results:
          $ref: '#/components/schemas/DashboardPreAggregateAudit'
        status:
          type: string
          enum:
            - ok
          nullable: false
      required:
        - results
        - status
      type: object
    ApiErrorPayload:
      properties:
        error:
          properties:
            data:
              $ref: '#/components/schemas/AnyType'
              description: Optional data containing details of the error
            message:
              type: string
              description: A friendly message summarising the error
            name:
              type: string
              description: Unique name for the type of error
            statusCode:
              type: number
              format: integer
              description: HTTP status code
          required:
            - name
            - statusCode
          type: object
        status:
          type: string
          enum:
            - error
          nullable: false
      required:
        - error
        - status
      type: object
      description: |-
        The Error object is returned from the api any time there is an error.
        The message contains
    DashboardPreAggregateAudit:
      properties:
        summary:
          $ref: '#/components/schemas/DashboardPreAggregateAuditSummary'
        tabs:
          items:
            $ref: '#/components/schemas/TabAuditGroup'
          type: array
        dashboardName:
          type: string
        dashboardSlug:
          type: string
        dashboardUuid:
          type: string
      required:
        - summary
        - tabs
        - dashboardName
        - dashboardSlug
        - dashboardUuid
      type: object
    AnyType:
      description: |-
        This AnyType is an alias for any
        The goal is to make it easier to identify any type in the codebase
        without having to eslint-disable all the time
        These are only used on legacy `any` types, don't use it for new types.
        This is added on a separate file to avoid circular dependencies.
    DashboardPreAggregateAuditSummary:
      properties:
        ineligibleCount:
          type: number
          format: double
        missCount:
          type: number
          format: double
        hitCount:
          type: number
          format: double
      required:
        - ineligibleCount
        - missCount
        - hitCount
      type: object
    TabAuditGroup:
      properties:
        tiles:
          items:
            $ref: '#/components/schemas/TilePreAggregateAuditStatus'
          type: array
        tabName:
          type: string
          nullable: true
        tabUuid:
          type: string
          nullable: true
      required:
        - tiles
        - tabName
        - tabUuid
      type: object
    TilePreAggregateAuditStatus:
      anyOf:
        - $ref: '#/components/schemas/TilePreAggregateAuditHit'
        - $ref: '#/components/schemas/TilePreAggregateAuditMiss'
        - $ref: '#/components/schemas/TilePreAggregateAuditIneligible'
    TilePreAggregateAuditHit:
      properties:
        preAggregateName:
          type: string
        exploreName:
          type: string
        savedChartUuid:
          type: string
        tileType:
          $ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
        tileName:
          type: string
        tileUuid:
          type: string
        status:
          type: string
          enum:
            - hit
          nullable: false
      required:
        - preAggregateName
        - exploreName
        - savedChartUuid
        - tileType
        - tileName
        - tileUuid
        - status
      type: object
    TilePreAggregateAuditMiss:
      properties:
        missFieldLabel:
          type: string
          nullable: true
        miss:
          $ref: '#/components/schemas/PreAggregateMatchMiss'
        exploreName:
          type: string
        savedChartUuid:
          type: string
        tileType:
          $ref: '#/components/schemas/DashboardTileTypes.SAVED_CHART'
        tileName:
          type: string
        tileUuid:
          type: string
        status:
          type: string
          enum:
            - miss
          nullable: false
      required:
        - missFieldLabel
        - miss
        - exploreName
        - savedChartUuid
        - tileType
        - tileName
        - tileUuid
        - status
      type: object
    TilePreAggregateAuditIneligible:
      properties:
        ineligibleReason:
          $ref: '#/components/schemas/TileIneligibleReason'
        tileType:
          $ref: '#/components/schemas/DashboardTileTypes'
        tileName:
          type: string
        tileUuid:
          type: string
        status:
          type: string
          enum:
            - ineligible
          nullable: false
      required:
        - ineligibleReason
        - tileType
        - tileName
        - tileUuid
        - status
      type: object
    DashboardTileTypes.SAVED_CHART:
      enum:
        - saved_chart
      type: string
    PreAggregateMatchMiss:
      anyOf:
        - properties:
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.NO_PRE_AGGREGATES_DEFINED
          required:
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.DIMENSION_NOT_IN_PRE_AGGREGATE
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.METRIC_NOT_IN_PRE_AGGREGATE
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: '#/components/schemas/PreAggregateMissReason.NON_ADDITIVE_METRIC'
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: '#/components/schemas/PreAggregateMissReason.CUSTOM_SQL_METRIC'
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.FILTER_DIMENSION_NOT_IN_PRE_AGGREGATE
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.PRE_AGGREGATE_FILTER_NOT_SATISFIED
          required:
            - fieldId
            - reason
          type: object
        - properties:
            preAggregateTimeDimension:
              type: string
            preAggregateGranularity:
              $ref: '#/components/schemas/TimeFrames'
            queryGranularity:
              $ref: '#/components/schemas/TimeFrames'
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: '#/components/schemas/PreAggregateMissReason.GRANULARITY_TOO_FINE'
          required:
            - preAggregateTimeDimension
            - preAggregateGranularity
            - queryGranularity
            - fieldId
            - reason
          type: object
        - properties:
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.CUSTOM_DIMENSION_PRESENT
          required:
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.CUSTOM_METRIC_PRESENT
          required:
            - fieldId
            - reason
          type: object
        - properties:
            fieldId:
              $ref: '#/components/schemas/FieldId'
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.TABLE_CALCULATION_PRESENT
          required:
            - fieldId
            - reason
          type: object
        - properties:
            preAggregateName:
              type: string
            reason:
              $ref: '#/components/schemas/PreAggregateMissReason.USER_BYPASS'
          required:
            - preAggregateName
            - reason
          type: object
        - properties:
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.EXPLORE_RESOLUTION_ERROR
          required:
            - reason
          type: object
        - properties:
            reason:
              $ref: >-
                #/components/schemas/PreAggregateMissReason.NO_ACTIVE_MATERIALIZATION
          required:
            - reason
          type: object
    TileIneligibleReason:
      enum:
        - non_chart_tile
        - sql_chart
        - orphaned_chart
        - explore_resolution_error
      type: string
    DashboardTileTypes:
      enum:
        - saved_chart
        - sql_chart
        - markdown
        - loom
        - heading
        - data_app
      type: string
    PreAggregateMissReason.NO_PRE_AGGREGATES_DEFINED:
      enum:
        - no_pre_aggregates_defined
      type: string
    FieldId:
      type: string
    PreAggregateMissReason.DIMENSION_NOT_IN_PRE_AGGREGATE:
      enum:
        - dimension_not_in_pre_aggregate
      type: string
    PreAggregateMissReason.METRIC_NOT_IN_PRE_AGGREGATE:
      enum:
        - metric_not_in_pre_aggregate
      type: string
    PreAggregateMissReason.NON_ADDITIVE_METRIC:
      enum:
        - non_additive_metric
      type: string
    PreAggregateMissReason.CUSTOM_SQL_METRIC:
      enum:
        - custom_sql_metric
      type: string
    PreAggregateMissReason.FILTER_DIMENSION_NOT_IN_PRE_AGGREGATE:
      enum:
        - filter_dimension_not_in_pre_aggregate
      type: string
    PreAggregateMissReason.PRE_AGGREGATE_FILTER_NOT_SATISFIED:
      enum:
        - pre_aggregate_filter_not_satisfied
      type: string
    TimeFrames:
      enum:
        - RAW
        - YEAR
        - QUARTER
        - MONTH
        - WEEK
        - DAY
        - HOUR
        - MINUTE
        - SECOND
        - MILLISECOND
        - DAY_OF_WEEK_INDEX
        - DAY_OF_MONTH_NUM
        - DAY_OF_YEAR_NUM
        - WEEK_NUM
        - MONTH_NUM
        - QUARTER_NUM
        - YEAR_NUM
        - DAY_OF_WEEK_NAME
        - MONTH_NAME
        - QUARTER_NAME
        - HOUR_OF_DAY_NUM
        - MINUTE_OF_HOUR_NUM
      type: string
    PreAggregateMissReason.GRANULARITY_TOO_FINE:
      enum:
        - granularity_too_fine
      type: string
    PreAggregateMissReason.CUSTOM_DIMENSION_PRESENT:
      enum:
        - custom_dimension_present
      type: string
    PreAggregateMissReason.CUSTOM_METRIC_PRESENT:
      enum:
        - custom_metric_present
      type: string
    PreAggregateMissReason.TABLE_CALCULATION_PRESENT:
      enum:
        - table_calculation_present
      type: string
    PreAggregateMissReason.USER_BYPASS:
      enum:
        - user_bypass
      type: string
    PreAggregateMissReason.EXPLORE_RESOLUTION_ERROR:
      enum:
        - explore_resolution_error
      type: string
    PreAggregateMissReason.NO_ACTIVE_MATERIALIZATION:
      enum:
        - no_active_materialization
      type: string

````