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

# Campaign Stats

> Get aggregated campaign counts grouped by a chosen dimension.

- **group_by**: Grouping dimension — `status` (default), `source`, or `campaignType`.
- **statuses**: Repeat to filter by multiple statuses: `?statuses=completed&statuses=processing`.
- **tags**: Filter tag-grouped results by substring match.
- **start** / **end**: ISO 8601 date range filter applied to campaign creation date.



## OpenAPI

````yaml https://api-prod.interactly.ai/api-docs/campaigns/api.json get /campaigns/v1/stats/campaigns
openapi: 3.1.0
info:
  title: Interactly API
  description: API for building interactly.ai services
  version: 1.1.0
  contact:
    name: Interactly
    url: https://interactly.ai
    email: developers@interactly.ai
servers:
  - url: https://api-prod.interactly.ai
    description: API Server
security: []
paths:
  /campaigns/v1/stats/campaigns:
    get:
      tags:
        - Campaign Stats
        - Stats
      summary: Campaign Stats
      description: >-
        Get aggregated campaign counts grouped by a chosen dimension.


        - **group_by**: Grouping dimension — `status` (default), `source`, or
        `campaignType`.

        - **statuses**: Repeat to filter by multiple statuses:
        `?statuses=completed&statuses=processing`.

        - **tags**: Filter tag-grouped results by substring match.

        - **start** / **end**: ISO 8601 date range filter applied to campaign
        creation date.
      operationId: campaigns_service_get_campaign_stats_v1_stats_campaigns_get
      parameters:
        - name: group_by
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/StatsGroupBy'
            description: 'Grouping criteria: status, source, campaignType'
            default: status
          description: 'Grouping criteria: status, source, campaignType'
        - name: statuses
          in: query
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter by one or more campaign statuses
            title: Statuses
          description: Filter by one or more campaign statuses
        - name: tags
          in: query
          required: false
          schema:
            anyOf:
              - items:
                  type: string
                type: array
              - type: 'null'
            description: Filter tag stats by tag strings (substring match)
            title: Tags
          description: Filter tag stats by tag strings (substring match)
        - name: size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: Number of items per page
            default: 300
            title: Size
          description: Number of items per page
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: Page number
            default: 1
            title: Page
          description: Page number
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Search keywords
            title: Search
          description: Search keywords
        - name: start
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: Filter by start time (ISO 8601 format)
            title: Start
          description: Filter by start time (ISO 8601 format)
        - name: end
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: Filter by end time (ISO 8601 format)
            title: End
          description: Filter by end time (ISO 8601 format)
      responses:
        '200':
          description: Aggregated campaign counts grouped by the chosen dimension
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatsResponse'
        '400':
          description: Bad request — invalid input or constraint violation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Requested resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearer: []
components:
  schemas:
    StatsGroupBy:
      type: string
      enum:
        - outcome
        - status
        - status_outcome
        - tag
        - source
        - campaignType
      title: StatsGroupBy
    StatsResponse:
      properties:
        message:
          type: string
          title: Message
          description: Result description
          examples:
            - Stats fetched successfully.
        data:
          items:
            $ref: '#/components/schemas/StatEntry'
          type: array
          title: Data
          description: >-
            Aggregated counts grouped by the requested dimension ('outcome',
            'status', 'status_outcome', 'tag', 'source', 'campaignType'). Each
            entry contains a 'count' field and a group key field named after the
            dimension.
      type: object
      required:
        - message
        - data
      title: StatsResponse
    ErrorResponse:
      properties:
        message:
          type: string
          title: Message
          description: Human-readable error description
          examples:
            - Resource not found.
      type: object
      required:
        - message
      title: ErrorResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    StatEntry:
      properties:
        count:
          type: integer
          title: Count
          description: Number of items in this group
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
          description: Call/campaign status (group_by=status or status_outcome)
        outcome:
          anyOf:
            - type: string
            - type: 'null'
          title: Outcome
          description: Call outcome label (group_by=outcome or status_outcome)
        tag:
          anyOf:
            - type: string
            - type: 'null'
          title: Tag
          description: Tag string (group_by=tag)
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
          description: Campaign source (group_by=source; campaigns endpoint only)
        campaignType:
          anyOf:
            - type: string
            - type: 'null'
          title: Campaigntype
          description: Campaign type (group_by=campaignType; campaigns endpoint only)
      additionalProperties: true
      type: object
      required:
        - count
      title: StatEntry
      description: >-
        A single aggregation bucket returned by stats endpoints.


        Exactly one group-key field is present per entry — which field depends
        on the group_by parameter:
          - group_by=outcome       → outcome
          - group_by=status        → status
          - group_by=status_outcome → status + outcome
          - group_by=tag           → tag
          - group_by=source        → source  (campaigns only)
          - group_by=campaignType  → campaignType  (campaigns only)
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: Bearer
      type: http
      description: >-
        Retrieve your API Key from [Dashboard API Keys
        Section](https://dashboard.interactly.ai/api-keys).

````