> ## 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.

# Get Workflow Campaign API

> Retrieve a campaign with a per-status count of its entries and per-code counts of upload validation failures.



## OpenAPI

````yaml GET /workflow-campaigns/{campaign_id}
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}:
    get:
      description: >-
        Retrieves a campaign with a count of entries per status and per-code
        counts of upload validation failures.
      parameters:
        - in: path
          name: campaign_id
          required: true
          schema:
            type: string
            format: uuid
          description: The unique `id` of the campaign
      responses:
        '200':
          description: Campaign detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowCampaignDetail'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowError'
components:
  schemas:
    WorkflowCampaignDetail:
      type: object
      required:
        - campaign
        - entry_counts
        - validation_errors
      properties:
        campaign:
          $ref: '#/components/schemas/WorkflowCampaign'
        entry_counts:
          type: object
          additionalProperties:
            type: integer
          description: >-
            Entry counts keyed by status (`pending`, `failed_validation`,
            `dispatched`, `completed`). Only non-zero statuses are present.
          example:
            pending: 120
            failed_validation: 3
        validation_errors:
          type: object
          additionalProperties:
            type: integer
          description: Counts of upload validation failures keyed by failure code.
          example:
            invalid_phone: 2
            missing_required_value: 1
    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.
    WorkflowCampaign:
      type: object
      required:
        - id
        - name
        - workflow_id
        - workflow_version
        - kind
        - status
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        workflow_id:
          type: string
          format: uuid
        workflow_version:
          type: integer
          description: The pinned published version.
        kind:
          type: string
          enum:
            - batch
            - continuous
            - api
          description: >-
            `batch` holds uploaded entries; `api` is the implicit campaign
            behind single runs.
        status:
          type: string
          enum:
            - draft
            - scheduled
            - running
            - paused
            - completed
            - aborted
          description: >-
            Lifecycle is `draft` → `scheduled` → `running` → (`paused` ↔
            `running`) → `completed` or `aborted`.
        scheduled_at:
          type: string
          format: date-time
          nullable: true
        entries_count:
          type: integer
        success_count:
          type: integer
        failure_count:
          type: integer
        neutral_count:
          type: integer
        terminal_count:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````