# Create bulk call (/docs/api-reference/bulk-calls/createBulkCall)

> Create a new bulk-call campaign. Supports immediate, scheduled, and auto-retry modes.



**POST** `/calls/bulk_call/create`

Create a new bulk-call campaign. Supports immediate, scheduled, and auto-retry modes.

```yaml
operationId: createBulkCall
requestBody:
  required: true
  content:
    application/json:
      schema:
        type: object
        required:
          - name
          - contact_list
          - phone_number_id
        properties:
          name:
            type: string
            description: Name of the bulk call campaign.
            example: Customer Follow-up Campaign
          phone_number_id:
            type: string
            description: Your phone number id to use for making calls.
          contact_list:
            type: array
            minItems: 1
            description: |
              Array of contact objects. Each row needs `phone_number`.
              Any other key you add on the row (e.g. `customer_name`,
              `account_id`, `priority`) is passed to the agent as a
              context variable for that specific call, so the agent
              can reference it during the conversation.
            items:
              type: object
              required:
                - phone_number
              properties:
                phone_number:
                  type: string
                  description: Phone number in international format (e.g., +15551234567).
                  example: '+15551234567'
              additionalProperties: true
            example:
              - phone_number: '+15551234567'
                customer_name: John Doe
                account_id: ACC-12345
              - phone_number: '+15559876543'
                customer_name: Jane Smith
                account_id: ACC-67890
                priority: high
          is_scheduled:
            type: boolean
            default: false
            description: Whether the campaign should be scheduled for future execution.
          scheduled_datetime:
            type: string
            description: >-
              Scheduled execution time in format `YYYY-MM-DD HH:MM:SS` (required if `is_scheduled`
              is true).
            example: '2026-12-25 10:00:00'
          timezone:
            type: string
            default: UTC
            description: Timezone for scheduled execution.
            example: America/New_York
          concurrent_call_limit:
            type: integer
            default: 1
            minimum: 1
            description: Maximum number of concurrent calls allowed.
          enabled_reschedule_call:
            type: boolean
            default: false
            description: >-
              Enable automatic call rescheduling. When enabled the system can reschedule unreachable
              calls.
          retry_config:
            type: object
            description: Auto-retry configuration object containing retry settings.
            properties:
              auto_retry:
                type: boolean
                default: false
              auto_retry_schedule:
                type: string
                enum:
                  - immediately
                  - next_day
                  - scheduled_time
                description: When to retry failed calls.
              retry_schedule_days:
                type: integer
                default: 0
                minimum: 0
                description: Days to wait before a scheduled retry.
              retry_schedule_hours:
                type: integer
                default: 0
                minimum: 0
                description: Hours to wait before a scheduled retry.
              retry_limit:
                type: integer
                default: 0
                minimum: 0
                maximum: 5
                description: Maximum number of retry attempts (0–5).
responses:
  '200':
    description: |
      Bulk call campaign created. `current_status` is `scheduled`
      for `is_scheduled: true`, otherwise `pending` (the
      campaign starts dispatching to your concurrency limit
      immediately after creation).
    content:
      application/json:
        schema:
          type: object
          properties:
            status:
              type: string
            message:
              type: string
            id:
              type: integer
              description: New campaign ID.
            is_scheduled:
              type: boolean
            current_status:
              type: string
        example:
          status: success
          message: Bulk call created successfully
          id: 314
          is_scheduled: false
          current_status: pending
```

**Python SDK**

```python
from omnidimension import Client

client = Client(api_key)

response = client.bulk_call.create_bulk_call({
    "name": "Customer Follow-up Campaign",
    "contact_list": [
        {
            "phone_number": "+15551234567",
            "customer_name": "John Doe",   # optional context key
            "account_id": "ACC-12345",     # optional context key
        },
        {
            "phone_number": "+15559876543",
            "customer_name": "Jane Smith", # optional context key
            "account_id": "ACC-67890",     # optional context key
        },
    ],
    "phone_number_id": "1",                # required
    "is_scheduled": False,                 # optional
    "retry_config": {                      # optional
        "auto_retry": True,
        "auto_retry_schedule": "next_day",
        "retry_limit": 2,
    },
    "enabled_reschedule_call": True,       # optional
})

print(response)
```

**curl**

```bash
curl -X POST "https://backend.omnidim.io/api/v1/calls/bulk_call/create" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY"
```
