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

# Workflow Campaign Report API

> Aggregated campaign report: execution counts by status, termination reasons, and a per-node funnel keyed by your definition's node ids.

<Note>
  For completed executions the `termination_reasons` keys are the `label` values of your end nodes, so the report maps directly onto the endings you designed.
</Note>


## OpenAPI

````yaml GET /workflow-campaigns/{campaign_id}/report
openapi: 3.1.0
info:
  title: Bolna API
  description: >-
    Use and leverage Bolna Voice AI using APIs through HTTP requests from any
    language in your applications and workflows.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.bolna.ai
    description: Production server
security:
  - bearerAuth: []
paths:
  /workflow-campaigns/{campaign_id}/report:
    get:
      description: >-
        Aggregated campaign report — execution counts by status, termination
        reasons, and a per-node funnel keyed by the node ids in your definition.
      parameters:
        - in: path
          name: campaign_id
          required: true
          schema:
            type: string
            format: uuid
          description: The unique `id` of the campaign
      responses:
        '200':
          description: Campaign report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowCampaignReport'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowError'
components:
  schemas:
    WorkflowCampaignReport:
      type: object
      required:
        - executions
        - termination_reasons
        - funnel
      properties:
        executions:
          type: object
          additionalProperties:
            type: integer
          description: Execution counts keyed by status.
          example:
            completed: 240
            running: 12
        termination_reasons:
          type: object
          additionalProperties:
            type: integer
          description: >-
            Counts keyed by termination reason — for completed executions this
            is the end-node `label`, so the keys map onto your definition's
            endings.
          example:
            reached: 180
            unreachable: 60
        funnel:
          type: array
          description: >-
            Node-attempt counts grouped by node and status — the per-node funnel
            of the pinned definition.
          items:
            type: object
            properties:
              node_id:
                type: string
              status:
                type: string
              count:
                type: integer
    WorkflowError:
      type: object
      description: >-
        Error envelope returned by every workflow endpoint. `detail.code` is a
        stable machine-readable code; extra keys (such as `current_revision` on
        `revision_conflict`, `execution_id` on `duplicate_run`, or `issues` on
        `invalid_definition`) ride alongside it.
      required:
        - detail
      properties:
        detail:
          type: object
          additionalProperties: true
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error code.
              example: revision_conflict
            message:
              type: string
              description: Human-readable explanation.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````