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

# Get dashboard analytics

> 
> **Alpha API** - This endpoint is in active development. Schema may change without notice.

Retrieve dashboard-level KPIs and performance metrics for a date range.

**Includes:**
- Total calls, shows, and closes
- Show rate and close rate
- Total revenue and cash collected
- Per-closer performance breakdown

**Use Cases:**
- External dashboards displaying key metrics
- Commission platforms calculating team performance
- Reporting tools aggregating sales data
  

> **Alpha API** - This endpoint is in active development. Schema may change without notice.

Retrieve dashboard-level KPIs and performance metrics for a date range.

**Includes:**

* Total calls, shows, and closes
* Show rate and close rate
* Total revenue and cash collected
* Per-closer performance breakdown

**Use Cases:**

* External dashboards displaying key metrics
* Commission platforms calculating team performance
* Reporting tools aggregating sales data


## OpenAPI

````yaml openapi.json GET /v1/analytics/dashboard
openapi: 3.1.0
info:
  contact:
    email: support@aura-app.ai
    name: Aura Support
  description: >-
    # Aura Partner Integrations API


    > **Alpha Release** - This API is under active development. Endpoints,
    request/response schemas, and behaviors may change without prior notice. We
    recommend pinning to specific response fields you need and handling unknown
    fields gracefully.


    Enterprise REST API for external partner integrations including

    commission platforms, external mobile apps, and client booking widgets.


    ## MCP Connector


    Aura also exposes a **Model Context Protocol** server at `/mcp` so AI

    assistants (Claude, ChatGPT) can answer questions about a user's own sales
    data.

    If you are building an assistant integration rather than a server-to-server
    one,

    that is almost certainly the surface you want — it is task-shaped ("prep me
    for

    my next call") rather than resource-shaped, and it handles auth per-user.


    Read-only. OAuth 2.1 + PKCE, with Clerk as the authorization server;
    discover it

    from `/.well-known/oauth-protected-resource`. Setup guide:

    https://docs.api.aura-app.ai/mcp-connector


    ## Authentication


    Authenticated endpoints support two authentication methods:


    **1. API Key (for partners and integrations):**

    ```

    Authorization: Bearer aura_pk_live_xxxxxxxxxxxxxxxx

    ```

    Get your API key from the Aura dashboard at Settings > API Keys.


    **2. Clerk JWT (for mobile and web apps):**

    ```

    Authorization: Bearer <clerk_jwt_token>

    ```

    Use Clerk's authentication SDK to obtain a JWT token with org claims.


    ## Rate Limiting


    - **Per API Key:** 100 requests/minute

    - **Per Organization:** 1000 requests/minute


    Rate limit headers are included in all responses:

    - `X-RateLimit-Limit`: Maximum requests allowed

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: Unix timestamp when limit resets


    These counters are held per serving instance, so under concurrency the

    effective ceiling is higher than the number above and the headers describe
    one

    instance's view rather than a global total. Treat a 429 as backpressure to
    obey

    and pace your client to the documented rate — but do not rely on us to
    reject

    your 101st request, and do not derive a global remaining-quota figure from
    the

    headers. The limit may become globally enforced without notice, so a client

    that stays within it will not be affected when that happens.


    ## Pagination


    List endpoints support cursor-based pagination:

    - `limit`: Number of results per page (default: 50, max: 100)

    - `cursor`: Opaque cursor for next page


    ## Error Handling


    All errors follow a standard format:


    ```json

    {
      "success": false,
      "error": "Error message",
      "code": "ERROR_CODE"
    }

    ```


    Common HTTP status codes:

    - **400** Bad Request - Invalid input (`VALIDATION_ERROR`)

    - **401** Unauthorized - Missing or invalid API key (`AUTHENTICATION_ERROR`)

    - **402** Payment Required - The key is valid, but the organization's
    subscription is not active (`PAYMENT_REQUIRED`). Every authenticated
    endpoint can return this. Retrying will not help until the account's payment
    method is updated in Aura; surface it to the account owner rather than
    treating it as an auth failure.

    - **403** Forbidden - Insufficient permissions (`AUTHORIZATION_ERROR`)

    - **404** Not Found - Resource not found (`NOT_FOUND`)

    - **409** Conflict - Resource state prevents the operation (`CONFLICT`)

    - **413** Payload Too Large - Request body exceeds 256KB
    (`PAYLOAD_TOO_LARGE`)

    - **429** Too Many Requests - Rate limit exceeded (`RATE_LIMIT_EXCEEDED`)

    - **500** Internal Server Error - Server error (`INTERNAL_ERROR`)


    ## Webhooks


    Subscribe to real-time events using the Webhooks API. All webhook payloads

    are signed with HMAC-SHA256 for security verification.


    Delivery is at-least-once. Every payload carries an `idempotency_key` that

    is stable across retries of the same event, so you can enforce exactly-once

    with a `(subscription_id, idempotency_key)` unique constraint on your side.


    For full documentation, visit
    [docs.aura-app.ai/api](https://docs.aura-app.ai/api)
  license:
    name: Proprietary
  title: Aura Partner Integrations API
  version: 1.0.0-alpha
servers:
  - description: Production
    url: https://api.aura-app.ai
  - description: Staging
    url: https://staging-api.aura-app.ai
  - description: Local Development
    url: http://localhost:3001
security:
  - bearerAuth: []
tags:
  - description: Lead management operations
    name: Leads
  - description: Call booking and management
    name: Calls
  - description: Booking link configuration (read-only)
    name: Booking Links
  - description: Product catalog (read-only)
    name: Products
  - description: Payment tracking (read-only)
    name: Payments
  - description: Public booking creation
    name: Bookings
  - description: Real-time event subscriptions and webhook management
    name: Webhooks
  - description: >-
      Team member information for commission attribution. **Alpha** - schema may
      change without notice.
    name: Team (Alpha)
  - description: >-
      Dashboard analytics, lead source attribution, and objection analysis.
      **Alpha** - schema may change without notice.
    name: Analytics (Alpha)
  - description: System endpoints (health checks)
    name: System
paths:
  /v1/analytics/dashboard:
    get:
      tags:
        - Analytics (Alpha)
      summary: Get dashboard analytics
      description: >-

        > **Alpha API** - This endpoint is in active development. Schema may
        change without notice.


        Retrieve dashboard-level KPIs and performance metrics for a date range.


        **Includes:**

        - Total calls, shows, and closes

        - Show rate and close rate

        - Total revenue and cash collected

        - Per-closer performance breakdown


        **Use Cases:**

        - External dashboards displaying key metrics

        - Commission platforms calculating team performance

        - Reporting tools aggregating sales data
          
      parameters:
        - description: ISO 8601 start date (defaults to all time)
          in: query
          name: start_date
          required: false
          schema:
            description: ISO 8601 start date (defaults to all time)
            example: '2026-01-01T00:00:00Z'
            type: string
        - description: ISO 8601 end date (defaults to now)
          in: query
          name: end_date
          required: false
          schema:
            description: ISO 8601 end date (defaults to now)
            example: '2026-03-19T23:59:59Z'
            type: string
        - description: Filter by product ID
          in: query
          name: product_id
          required: false
          schema:
            description: Filter by product ID
            example: prod_abc123
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardAnalyticsSuccessResponse'
          description: Successfully retrieved dashboard analytics
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: Request validation failed
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsErrorResponse'
          description: Invalid or missing API key
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: The organization's subscription is not active
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: The API key does not have the required scope
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
        '408':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: >-
            The request exceeded its processing time limit. Check the outcome
            before retrying a write
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: The request body exceeds 256KB
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsErrorResponse'
          description: >-
            Currency is missing or more than one currency is present. Use
            /v1/analytics/revenue for grouped amounts.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsErrorResponse'
          description: Rate limit exceeded
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MiddlewareErrorResponse'
          description: >-
            Unexpected server failure. Include the request identifier when
            contacting support
          headers:
            X-Request-Id:
              description: Request identifier for support
              schema:
                type: string
      security:
        - bearerAuth: []
components:
  schemas:
    DashboardAnalyticsSuccessResponse:
      properties:
        data:
          $ref: '#/components/schemas/DashboardAnalytics'
        success:
          enum:
            - true
          type: boolean
      required:
        - success
        - data
      type: object
    MiddlewareErrorResponse:
      properties:
        code:
          type: string
        error:
          type: string
        requestId:
          type: string
        success:
          enum:
            - false
          type: boolean
      required:
        - success
        - error
        - code
      type: object
    AnalyticsErrorResponse:
      properties:
        code:
          description: Error code for programmatic handling
          example: DATABASE_ERROR
          type: string
        error:
          description: Human-readable error message
          example: Failed to fetch analytics
          type: string
        requestId:
          description: Request ID for support debugging
          example: req_abc123
          type: string
        success:
          enum:
            - false
          type: boolean
      required:
        - success
        - error
        - code
      type: object
    DashboardAnalytics:
      properties:
        all_bookings_close_rate:
          description: >-
            Closed deals over every booking in the period, cancelled and
            declined calls included, as a percentage (0-100). close_rate divides
            by shows instead. Null when nothing was booked.
          example: 6.67
          nullable: true
          type: number
        all_bookings_show_rate:
          description: >-
            Shows over every booking in the period, cancelled and declined calls
            included, as a percentage (0-100). show_rate leaves those calls out,
            so this is never higher than show_rate. Null when nothing was
            booked.
          example: 42.22
          nullable: true
          type: number
        canceled_calls:
          description: >-
            Calls cancelled in the period. Not counted in total_calls, show_rate
            or close_rate.
          example: 12
          type: number
        cash_collected:
          description: >-
            Cash collected in dollars (numeric, two-decimal precision). NOT
            cents.
          example: 95000
          type: number
        close_rate:
          description: Close rate as percentage (0-100). Null when no shows in the period.
          example: 32.87
          nullable: true
          type: number
        currency:
          description: Currency code
          example: USD
          type: string
        declined_calls:
          description: >-
            Calls declined in the period. Not counted in total_calls, show_rate
            or close_rate.
          example: 11
          type: number
        first_call_booked_calls:
          description: >-
            Booked calls whose call stage is 'first' — the lead's first meeting
            attempt (rebooks after a no-show included)
          example: 130
          type: number
        first_call_show_rate:
          description: >-
            Show rate over first-stage calls (0-100). Null when none in the
            period. Together with follow_up_show_rate it decomposes show_rate
            exactly.
          example: 80.77
          nullable: true
          type: number
        first_call_shows:
          description: Shows among first-stage calls
          example: 105
          type: number
        follow_up_booked_calls:
          description: >-
            Booked calls whose call stage is 'follow_up' — the lead had already
            attended a meeting
          example: 20
          type: number
        follow_up_show_rate:
          description: >-
            Show rate over follow-up-stage calls (0-100). Null when none in the
            period.
          example: 75
          nullable: true
          type: number
        follow_up_shows:
          description: Shows among follow-up-stage calls
          example: 15
          type: number
        no_show_rate:
          description: >-
            No-show rate as percentage (0-100). Null when no past booked calls
            in the period. Denominator excludes future and rescheduled calls.
          example: 15
          nullable: true
          type: number
        past_booked_calls:
          description: >-
            Past, non-cancelled calls in the period (eligible to show or
            no-show)
          example: 120
          type: number
        rep_performance:
          description: Per-closer performance breakdown
          items:
            $ref: '#/components/schemas/RepPerformance'
          type: array
        revenue_summary:
          $ref: '#/components/schemas/RevenueSummary'
        show_rate:
          description: Show rate as percentage (0-100). Null when no calls in the period.
          example: 49.03
          nullable: true
          type: number
        total_calls:
          description: Total calls in the period
          example: 150
          type: number
        total_closes:
          description: Total closed deals
          example: 48
          type: number
        total_no_shows:
          description: Total no-show calls in the period
          example: 18
          type: number
        total_revenue:
          description: >-
            Total revenue in dollars (numeric, two-decimal precision). NOT
            cents.
          example: 120000.5
          type: number
        total_shows:
          description: Total attended calls
          example: 120
          type: number
      required:
        - revenue_summary
        - total_calls
        - past_booked_calls
        - total_shows
        - total_closes
        - total_no_shows
        - show_rate
        - close_rate
        - no_show_rate
        - canceled_calls
        - declined_calls
        - all_bookings_show_rate
        - all_bookings_close_rate
        - first_call_booked_calls
        - first_call_shows
        - follow_up_booked_calls
        - follow_up_shows
        - first_call_show_rate
        - follow_up_show_rate
        - total_revenue
        - cash_collected
        - currency
        - rep_performance
      type: object
    RepPerformance:
      properties:
        call_count:
          description: Number of calls
          example: 25
          type: number
        close_rate:
          description: Close rate as percentage (0-100). Null when no shows in the period.
          example: 40
          nullable: true
          type: number
        closer_id:
          description: Closer user ID
          example: user_2abc123xyz
          type: string
        closer_name:
          description: Closer display name
          example: John Smith
          nullable: true
          type: string
        closes:
          description: Number of closes
          example: 8
          type: number
        revenue:
          description: Revenue in dollars (numeric, two-decimal precision). NOT cents.
          example: 25000.5
          type: number
        revenue_summary:
          $ref: '#/components/schemas/RevenueSummary'
        show_rate:
          description: Show rate as percentage (0-100). Null when no calls in the period.
          example: 80
          nullable: true
          type: number
        shows:
          description: Number of shows
          example: 20
          type: number
      required:
        - revenue_summary
        - closer_id
        - closer_name
        - call_count
        - shows
        - closes
        - close_rate
        - show_rate
        - revenue
      type: object
    RevenueSummary:
      description: >-
        Unique sales grouped by recorded currency. Missing or conflicting
        currency amounts are separate. No exchange rate is applied.
      properties:
        by_currency:
          items:
            properties:
              booked_amount:
                type: number
              collected_amount:
                type: number
              currency:
                type: string
              sale_count:
                minimum: 0
                type: integer
            required:
              - booked_amount
              - collected_amount
              - sale_count
              - currency
            type: object
          type: array
        missing_currency:
          properties:
            booked_amount:
              type: number
            collected_amount:
              type: number
            sale_count:
              minimum: 0
              type: integer
          required:
            - booked_amount
            - collected_amount
            - sale_count
          type: object
      required:
        - by_currency
        - missing_currency
      type: object

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.