---
title: "Create bulk of calls"
method: POST
path: "/calls/1/bulks"
tags: ["channels", "voice", "calls", "bulks", "bulk-call-management"]
---

# Create bulk of calls

`POST /calls/1/bulks`

## Request

- Base URL: `https://api.infobip.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.infobip.com/calls/1/bulks`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `Authorization`
  - HTTP basic
  - OAuth 2
    - Client credentials
    - Token URL: `https://api.infobip.com/auth/1/oauth2/token`

Create a bulk of outbound calls. Currently, only `PHONE` endpoints are supported.
When retry options are specified, bulk calls are retried if they meet internal or client retry criteria.
Client retry criteria are met when call reaches the end device and fails. Internal retry criteria are met when call fails before reaching the end device.

## Request body

- 2f1f086f3fbc952749e03dadc7759cfc932ca2898a0c5e5b77a8bc2d84bd5c48BulkRequest
  - `bulkId` string: Unique ID of the bulk request. If it's not set, a unique ID will be assigned to the bulk request.
  - `callsConfigurationId` string, required: Calls Configuration ID.
  - `platform` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611Platform: Platform options. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
    - `entityId` string: Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
    - `applicationId` string: Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
  - `items` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611BulkItem[], required: Bulk item list.
    - `from` string: Caller identifier. Must be a number in the [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - `callRequests` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611BulkCallRequest[], required: Call request list.
      - `externalId` string: Custom ID assigned by the client.
      - `endpoint` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611BulkEndpoint, required: Call endpoint. Represents the callee for a call.
        - `type` 'PHONE'
    - `recording` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611CallRecordingRequest
      - `recordingType` 'AUDIO' | 'AUDIO_AND_VIDEO', required: Recording type.
      - `customData` object
      - `filePrefix` string
      - `channels` 'MONO' | 'STEREO': Audio channel mode. If set to `STEREO`, incoming audio from the endpoint is recorded on the left channel and outgoing audio on the right channel.
    - `machineDetection` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611MachineDetectionRequest
      - `enabled` boolean, required: Indicates whether to enable answering machine detection. If set to true, answering machine detection will generate an event indicating if the call was answered by a human or a machine.
      - `messageDetectionTimeout` integer: Indicates maximum duration for detecting the end of the message when a answering machine is detected. If set to 0, no end of message detection will be done. Expressed in seconds.
      - `detectionTime` number, double: Indicates time in seconds during which answering machine detection will analyse the call before making a decision. Shorter detection time may come at the expense of accuracy. Must be lower than `messageDetectionTimeout` if `messageDetectionTimeout` is specified.
    - `maxDuration` integer: Maximum call duration in seconds. Once exceeded, the call terminates automatically.
    - `connectTimeout` integer: Time to wait, in seconds, before the called party answers the call. Once exceeded, the call terminates automatically.
    - `callRate` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611CallRate: Call rate defined in number of calls created per second, minute, hour, or day.
      - `maxCalls` integer: Defines the number of calls scheduled per specified time unit.
      - `timeUnit` 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS': Defines a time unit used for calculating call creation rate.
    - `validityPeriod` integer: The call validity period in minutes. Once expired, the call is not established.
    - `retryOptions` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611RetryOptions: Used to determine whether to retry the delivery of a bulk call if the initial attempt fails. Additional retries will occur based on the schedule defined by the _minWaitPeriod_ and _maxWaitPeriod_ parameters, as well as the platform's internal retry logic. If _minWaitPeriod_ differs from _maxWaitPeriod_, the delivery will be retried according to the following schedule: after 1 minute, 2 minutes, 5 minutes, 10 minutes, 20 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, and 24 hours, or until _maxWaitPeriod_ is reached. Once the retry attempt for _maxWaitPeriod_ is reached, _maxWaitPeriod_ will be used for all subsequent retries. If _minWaitPeriod_ and _maxWaitPeriod_ are defined as equal values, the period between retries will be equal to this value. Bulk call delivery will be retried until successful delivery, call validity expiration, or reaching the _maxAttempts_ value.
      - `minWaitPeriod` integer: Defines the minimum waiting time (in minutes) after the previous failed attempt before trying to establish the call again. Supported values are 1 minute, 2 minutes, 5 minutes, 10 minutes, 20 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, and 24 hours. If entered a value that is not in the list but is smaller than 24 hours, the next bigger value from the list will be used. If a value larger than 24 hours is entered, 24 hours will be used.
      - `maxWaitPeriod` integer: Defines the maximum waiting time (in minutes) after the previous failed attempt before trying to establish the call again. Supported values are 1 minute, 2 minutes, 5 minutes, 10 minutes, 20 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, and 24 hours. If entered a value that is not in the list but is smaller than 24 hours, the next bigger value from the list will be used. If a value larger than 24 hours is entered, 24 hours will be used.
      - `maxAttempts` integer: Defines the maximum number of retry attempts. The maximum value is `4`. If a value higher than `4` is entered, it will be set to `4`.
    - `schedulingOptions` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611SchedulingOptions: Scheduling object that allows setting up detailed time windows within which calls can be established. Note that calling time window is set in UTC timezone.
      - `startTime` string, date-time: Scheduling start date and time.
      - `callingTimeWindow` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611TimeWindow: Defines a scheduling object that allows setting up a detailed time window in which calls can be established. Consists of from, to and days properties. Days property is mandatory.
        - `from` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611TimeWindowPoint: Call establishment attempt end time.
          - `hour` integer
          - `minute` integer
        - `to` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611TimeWindowPoint: Call establishment attempt end time.
          - `hour` integer
          - `minute` integer
        - `days` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611DayOfWeek[], required: Days when scheduling call establishment will be attempted.
    - `customData` object: Client-defined, bulk-level custom data.

## Response `201`

Bulk created.

- 2f1f086f3fbc952749e03dadc7759cfc932ca2898a0c5e5b77a8bc2d84bd5c48BulkResponse
  - `bulkId` string: Unique ID of the bulk request.
  - `calls` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611BulkCall[]: Bulk call list.
    - `callsConfigurationId` string: Calls Configuration ID.
    - `platform` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611Platform: Platform options. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
      - `entityId` string: Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
      - `applicationId` string: Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see [documentation](https://www.infobip.com/docs/cpaas-x/application-and-entity-management).
    - `callId` string: Unique call ID.
    - `externalId` string: Client-defined call ID.
    - `from` string: Caller identifier.
    - `endpoint` 4527871876f1b326359cd9e5dcf777f0ecc3c5fde89b1e88f0c154b298b67611BulkEndpoint: Call endpoint. Represents the callee for a call.
      - `type` 'PHONE'
    - `status` 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED': Action status.
    - `reason` string: Failure reason in human-readable format.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Application not found
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/infobip/apis/infobip-openapi-specification.md) - [All operations](https://skmtc.dev/infobip/apis/infobip-openapi-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/infobip/apis/infobip-openapi-specification/revisions/9dcbbaf902de?raw)
