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

# List all metrics available.



## OpenAPI

````yaml https://megastream25-api.closebot.com/swagger/v1/swagger.json get /analytics/metrics
openapi: 3.0.4
info:
  title: CloseBot API
  version: v1
servers:
  - url: https://api.closebot.com
    description: CloseBot API Endpoint
security:
  - Key: []
tags:
  - name: Account
  - name: AccountNotification
  - name: Agency
  - name: Analytics
  - name: Billing
  - name: Bot
  - name: BotMetric
  - name: BotSourceVariable
  - name: BotTemplate
  - name: BotTesting
  - name: Dashboard
  - name: Hierarchy
  - name: Lead
  - name: Leaderboard
  - name: Library
  - name: LiveDemo
  - name: Notification
  - name: Persona
  - name: Report
  - name: SmartFAQ
  - name: Source
  - name: SourceChannel
  - name: Webhook
paths:
  /analytics/metrics:
    get:
      tags:
        - Analytics
      summary: List all metrics available.
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalyticsMetricDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalyticsMetricDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnalyticsMetricDto'
components:
  schemas:
    AnalyticsMetricDto:
      required:
        - aggregation
        - category
        - description
        - dimensions
        - distinctCount
        - format
        - icon
        - key
        - label
        - locked
        - supportsSourceSplit
      type: object
      properties:
        key:
          type: string
          description: Wire key to pass as `metric` on POST /analytics/query.
          nullable: true
        label:
          type: string
          description: Display name.
          nullable: true
        description:
          type: string
          description: What the metric counts, and anything it deliberately excludes.
          nullable: true
        category:
          type: string
          description: >-
            Group heading for the metric picker. Categories should be rendered
            in the order they

            first appear in this response rather than sorted.
          nullable: true
        icon:
          type: string
          description: >-
            Semantic icon name (e.g. "clock", "currency"). Clients map it to
            their own icon set

            and should fall back to a generic icon for an unrecognised name.
          nullable: true
        format:
          type: string
          description: >-
            How to render the value: integer, decimal, duration (milliseconds),
            currency (USD), or score (0-100).
          nullable: true
        aggregation:
          type: string
          description: >-
            How buckets combine: "sum" for counts, "average" for metrics that
            are already a

            per-bucket average, "endingBalance" for a running balance whose
            range value is the

            last bucket's, "distinct" for a count of distinct things. Only "sum"
            may be folded

            from buckets the client already has — for the others, re-query the
            whole range as a

            single bucket instead.
          nullable: true
        supportsSourceSplit:
          type: boolean
          description: >-
            False for agency-wide metrics. The query endpoint rejects
            groupBy/source filters

            and the source resolution for these.
        dimensions:
          type: array
          items:
            $ref: '#/components/schemas/AnalyticsDimensionDto'
          description: >-
            What this metric can be filtered and segmented by. Build the filter
            chips from this —

            the endpoint rejects any dimension not listed, so offering more
            would surface as a

            400 rather than an ignored filter.
          nullable: true
        minResolution:
          type: string
          description: >-
            Finest time bucket this metric can answer, or null for no limit.
            Contact counts are

            daily facts, so their finer resolutions must be disabled rather than
            requested.
          nullable: true
        distinctCount:
          type: boolean
          description: >-
            True when the value counts contacts rather than events. Segmenting
            one of these gives

            series that sum to more than the unsegmented total — a contact
            active on two channels

            belongs to both — which is worth saying in the UI rather than
            hiding.
        locked:
          type: boolean
          description: >-
            True when this agency cannot query the metric. Analytics add-on
            metrics are locked

            without `HasAnalytics`; rebilled spend is locked off an agency plan.
            The query

            endpoint rejects a locked metric.
      additionalProperties: false
    AnalyticsDimensionDto:
      required:
        - key
        - label
        - valueSource
      type: object
      properties:
        key:
          type: string
          description: Wire name to send in `filters.dimensions[].dimension` or `groupBy`.
          nullable: true
        label:
          type: string
          description: >-
            What to call it in the UI. The detail dimensions are named per
            metric — "Tool",

            "Document Type", "AI Provider" — which is the point of them.
          nullable: true
        valueSource:
          type: string
          description: >-
            Where to load the value list: "channel", "bot", "persona" or
            "endpoint". All of them

            are served by GET /analytics/dimensions/{key}/values; the hint just
            lets a client

            cache the shared ones across metrics.
          nullable: true
        minResolution:
          type: string
          description: >-
            Set when slicing by this dimension coarsens the finest bucket
            available, beyond the

            metric's own `minResolution`. Page Views is recorded every 15
            minutes, but only

            daily once broken down by page.
          nullable: true
      additionalProperties: false
  securitySchemes:
    Key:
      type: apiKey
      description: CloseBot API Key Authorization
      name: X-CB-KEY
      in: header

````