# Bulk call details (/docs/api-reference/bulk-calls/getBulkCall)

> Get detailed information about a bulk-call campaign.



**GET** `/calls/bulk_call/{bulk_call_id}`

Get detailed information about a bulk-call campaign.

```yaml
operationId: getBulkCall
parameters:
  - name: bulk_call_id
    in: path
    required: true
    schema:
      type: integer
responses:
  '200':
    description: Bulk call details.
    content:
      application/json:
        schema:
          type: object
          properties:
            status:
              type: string
              example: success
            details:
              type: object
              description: >-
                A bulk-call campaign with configuration, execution stats, and the active number
                pool.
              properties:
                id:
                  type: integer
                  description: Campaign ID.
                name:
                  type: string
                  description: Campaign name.
                campaign_type:
                  type: string
                  description: Campaign type. Typically `ai_agent` for agent-driven campaigns.
                user_id:
                  type: integer
                  description: ID of the user who owns the campaign.
                user_name:
                  type: string
                  description: Display name of the owning user.
                bot_id:
                  type: integer
                  description: ID of the agent that handles calls for this campaign.
                bot_name:
                  type: string
                  description: Name of the agent.
                twilio_number:
                  type: string
                  description: Outbound number used for the campaign (E.164 format).
                status:
                  type: string
                  description: >-
                    Current campaign status (e.g. `draft`, `scheduled`, `in_progress`, `paused`,
                    `completed`, `cancelled`).
                is_scheduled:
                  type: boolean
                  description: True when the campaign is scheduled to start at a future time.
                is_dynamic:
                  type: boolean
                  description: True for dynamic campaigns that source contacts via webhook.
                scheduled_datetime:
                  oneOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    Scheduled start time, formatted in the campaign timezone. Null when not
                    scheduled.
                timezone:
                  type: string
                  description: IANA timezone the campaign was scheduled in.
                recording_file_id:
                  oneOf:
                    - type: integer
                    - type: 'null'
                  description: ID of the uploaded contact list file, if any.
                recording_file_name:
                  oneOf:
                    - type: string
                    - type: 'null'
                  description: Filename of the uploaded contact list, if any.
                failed_reason:
                  oneOf:
                    - type: string
                    - type: boolean
                  description: Reason the campaign failed to start, or `false` when there is none.
                auto_retry:
                  type: boolean
                  description: Whether failed calls are automatically retried.
                auto_retry_schedule:
                  type: string
                  description: When retries fire (e.g. `immediately`, `after_delay`).
                retry_schedule_days:
                  type: integer
                  description: Days to wait before retrying when `auto_retry_schedule` uses a delay.
                retry_schedule_hours:
                  type: integer
                  description: Hours to wait before retrying when `auto_retry_schedule` uses a delay.
                retry_count:
                  type: integer
                  description: Total retries already performed.
                retry_limit:
                  type: integer
                  description: Maximum retries allowed per contact.
                enabled_reschedule_call:
                  type: boolean
                  description: Whether contacts can request a reschedule mid-call.
                concurrent_call_limit:
                  type: integer
                  description: Maximum number of calls running in parallel.
                enable_daily_hard_stop:
                  type: boolean
                  description: Whether the campaign pauses each day at `daily_stop_time`.
                daily_stop_time:
                  type: number
                  description: Daily hard-stop time as a float-of-day (e.g. 18.5 = 18:30).
                daily_stop_time_formatted:
                  type: string
                  description: Daily hard-stop time formatted as `HH:MM`.
                daily_stop_timezone:
                  type: string
                  description: IANA timezone for the daily hard-stop.
                enable_daily_auto_start:
                  type: boolean
                  description: Whether the campaign auto-resumes each day at `daily_start_time`.
                daily_start_time:
                  type: number
                  description: Daily auto-start time as a float-of-day.
                daily_start_time_formatted:
                  type: string
                  description: Daily auto-start time formatted as `HH:MM`.
                daily_start_timezone:
                  type: string
                  description: IANA timezone for the daily auto-start.
                email_on_complete:
                  type: boolean
                  description: Whether to email a report when the campaign completes.
                email_on_hard_stop:
                  type: boolean
                  description: Whether to email a report when a daily hard-stop fires.
                email_report_recipients:
                  oneOf:
                    - type: string
                    - type: boolean
                  description: Comma-separated recipient list, or `false` when empty.
                variable_config:
                  type: array
                  description: Custom variables exposed to the agent for each contact.
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Variable ID.
                      variable_name:
                        type: string
                        description: Variable name as referenced in the agent prompt.
                      variable_type:
                        type: string
                        description: Variable data type (e.g. `text`, `number`, `enum`).
                      enum_values:
                        description: Allowed values when `variable_type` is `enum`; `false` otherwise.
                        oneOf:
                          - type: array
                            items:
                              type: string
                          - type: boolean
                rotation_strategy:
                  type: string
                  description: >-
                    How outbound numbers rotate across the pool (e.g. `none`, `round_robin`,
                    `health_aware`).
                calls_per_number:
                  type: integer
                  description: Calls placed on a single number before rotating.
                rotation_health_threshold:
                  type: number
                  description: Health-score threshold below which a number is skipped during rotation.
                rotation_fallback:
                  type: string
                  description: >-
                    Fallback behavior when no healthy number is available (e.g. `pause`,
                    `continue`).
                current_number_assignment_id:
                  oneOf:
                    - type: integer
                    - type: 'null'
                  description: ID of the number assignment currently dispatching calls. Null when idle.
                number_pool_size:
                  type: integer
                  description: Number of phone numbers configured in the rotation pool.
                number_pool:
                  type: array
                  description: Phone numbers available for outbound rotation.
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Pool assignment ID.
                      phone_number_id:
                        type: integer
                        description: Underlying phone-number record ID.
                      phone_number:
                        type: string
                        description: The phone number in E.164 format.
                      phone_number_name:
                        type: string
                        description: Display label for the number.
                      sequence:
                        type: integer
                        description: Position of the number in the rotation order.
                      is_active:
                        type: boolean
                        description: Whether the number is currently eligible for dispatch.
                      calls_dispatched:
                        type: integer
                        description: Calls dispatched on this number in this campaign.
                      calls_picked_up:
                        type: integer
                        description: Calls answered on this number in this campaign.
                      rolling_cpr:
                        oneOf:
                          - type: number
                          - type: 'null'
                        description: Rolling call-pickup rate. Null until enough calls have been dispatched.
                      health_score:
                        oneOf:
                          - type: number
                          - type: 'null'
                        description: Computed health score for the number. Null when not yet computed.
                total_calls:
                  type: integer
                  description: Total contacts in the campaign.
                total_calls_to_dispatch:
                  type: integer
                  description: Contacts still eligible for dispatch (excludes skipped).
                total_calls_made:
                  type: integer
                  description: >-
                    Calls dispatched so far (excludes pending, in-progress, skipped,
                    retry-scheduled).
                completed_calls:
                  type: integer
                  description: Calls that finished (any non-pending, non-skipped status).
                pending_calls:
                  type: integer
                  description: Calls in `Pending` or `In Progress` state.
                failed_calls:
                  type: integer
                  description: Calls that ended with status `Failed`.
                skipped_calls:
                  type: integer
                  description: Calls explicitly skipped (e.g. duplicates, opt-outs).
                low_interaction_calls:
                  type: integer
                  description: Calls flagged as `No/Low Interaction`.
                no_low_interaction_calls:
                  type: integer
                  description: Same as `low_interaction_calls`. Kept for backward compatibility.
                total_pending_calls:
                  type: integer
                  description: Pending plus in-progress count.
                total_not_reachable_calls:
                  type: integer
                  description: Calls that ended with `failed`, `no-answer`, or `busy`.
                total_skipped_calls:
                  type: integer
                  description: Skipped count (matches `skipped_calls`).
                total_reschedule_calls:
                  type: integer
                  description: Calls that completed with a reschedule request.
                total_call_transfer_count:
                  type: integer
                  description: Calls where the agent transferred to a human.
                total_call_cost:
                  type: number
                  description: Total campaign cost in the user's currency.
                total_voiceai_cost:
                  type: number
                  description: Voice-AI portion of the cost.
                total_telephony_cost:
                  type: number
                  description: Telephony portion of the cost.
                total_duration_seconds:
                  type: integer
                  description: Sum of call durations in seconds.
                avg_duration_seconds:
                  type: integer
                  description: Average call duration across picked-up calls.
                incoming_calls:
                  type: integer
                  description: Inbound calls received during the campaign window.
                total_lines:
                  type: integer
                  description: Total contact rows in the campaign list.
                calls_picked_up:
                  type: integer
                  description: Calls that were answered (completed or completed-with-reschedule).
                call_status_counts:
                  type: object
                  description: >-
                    Map of per-status counts. Keys are call statuses (e.g. `completed`, `Pending`,
                    `no-answer`, `busy`, `Failed`, `Skipped`); values are integer counts.
                  additionalProperties:
                    type: integer
                create_date:
                  type: string
                  description: Campaign creation timestamp in the user's timezone.
                write_date:
                  type: string
                  description: Last update timestamp in the user's timezone.
            contact_list:
              type: array
              description: Original recipient list submitted with the campaign.
              items:
                type: object
                properties:
                  to_number:
                    type: string
        example:
          status: success
          details:
            id: 314
            name: test
            campaign_type: ai_agent
            user_id: 1234
            user_name: Demo User
            twilio_number: '+15551234567'
            bot_id: 6337
            bot_name: Customer Support Agent
            recording_file_id: null
            recording_file_name: null
            status: completed
            total_calls: 1
            completed_calls: 1
            pending_calls: 0
            failed_calls: 0
            skipped_calls: 0
            low_interaction_calls: 0
            create_date: 04/22/2026 22:10:22
            write_date: 04/22/2026 22:10:48
            is_scheduled: false
            is_dynamic: false
            scheduled_datetime: null
            timezone: Asia/Kolkata
            failed_reason: false
            auto_retry: false
            auto_retry_schedule: immediately
            retry_schedule_days: 0
            retry_schedule_hours: 0
            retry_count: 0
            retry_limit: 1
            enabled_reschedule_call: false
            concurrent_call_limit: 1
            enable_daily_hard_stop: false
            daily_stop_time: 0
            daily_stop_time_formatted: '00:00'
            daily_stop_timezone: America/Los_Angeles
            enable_daily_auto_start: false
            daily_start_time: 0
            daily_start_time_formatted: '00:00'
            daily_start_timezone: America/Los_Angeles
            email_on_complete: false
            email_on_hard_stop: false
            email_report_recipients: ''
            variable_config:
              - id: 45
                variable_name: user_name
                variable_type: text
                enum_values: false
              - id: 46
                variable_name: agent_name
                variable_type: text
                enum_values: false
              - id: 47
                variable_name: company_name
                variable_type: text
                enum_values: false
            rotation_strategy: none
            calls_per_number: 50
            rotation_health_threshold: 30
            rotation_fallback: pause
            current_number_assignment_id: null
            number_pool_size: 1
            number_pool:
              - id: 200
                phone_number_id: 212
                phone_number: '+15551234567'
                phone_number_name: '+15551234567'
                sequence: 1
                is_active: true
                calls_dispatched: 1
                calls_picked_up: 0
                rolling_cpr: null
                health_score: null
            total_calls_to_dispatch: 1
            total_calls_made: 1
            calls_picked_up: 0
            total_pending_calls: 0
            total_not_reachable_calls: 1
            no_low_interaction_calls: 0
            total_skipped_calls: 0
            total_reschedule_calls: 0
            total_call_cost: 0
            total_voiceai_cost: 0
            total_telephony_cost: 0
            total_call_transfer_count: 0
            call_status_counts:
              no-answer: 1
            total_duration_seconds: 0
            avg_duration_seconds: 0
            incoming_calls: 0
            total_lines: 1
          contact_list:
            - to_number: '+15551234567'
```

**Python SDK**

```python
# Get detailed information about a bulk call
response = client.bulk_call.detail_bulk_call(bulk_call_id=123)
print(response)
```

**curl**

```bash
curl -X GET "https://backend.omnidim.io/api/v1/calls/bulk_call/{bulk_call_id}" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY"
```
