Skip to main content
POST
Create batch call

Authorizations

Authorization
string
header
default:<auth-token>
required

Your API token, sent raw (no Bearer prefix).

Body

multipart/form-data
file
file
required

.csv, .xls or .xlsx, at most 5 MB. The first row is the header and needs a phone_number column (E.164 with the +). Every other column is passed to the agent as metadata for that call.

name
string
required

A name for the batch. Returned as batchName.

Maximum string length: 256
Example:

"October renewals"

phoneNumber
string
required

The number to call from, in E.164 with the +. It must be on your account.

Example:

"+14155550100"

description
string
Maximum string length: 1000
Example:

"Renewal reminders for gold and silver plans"

phoneNumberId
string

The same number by its id. You can send this instead of phoneNumber.

Example:

"6f1d2c3a-8b4e-4f7a-9c21-0d5e6b7a8c90"

routingRuleId
string

The outbound routing rule that picks the agent. Leave it out when the number has exactly one outbound rule.

Example:

"rr_2554md"

schedule
string

JSON string. Leave it out to start calling as soon as the file is parsed.

  • date: required, YYYY-MM-DD.
  • time: required, HH:MM (24-hour).
  • timezone: IANA name, e.g. America/New_York. Default Asia/Calcutta.
Example:

"{\"date\":\"2026-10-14\",\"time\":\"10:00\",\"timezone\":\"Asia/Kolkata\"}"

retry
string

JSON string. Sending it turns retries on; leave it out to call each number once.

  • retryOn: required. Any of failed, not-answered, rejected, missed, abandoned.
  • retryDelays: required. Seconds before each retry, one per attempt, at most 5.
Example:

"{\"retryOn\":[\"not-answered\",\"failed\"],\"retryDelays\":[600,3600]}"

webhook
string

JSON string. Each event posts { batchId, batchName, status, recordsUploaded }.

  • endpoint: required. The URL that receives the events.
  • events: required, at least one of batchcall-started, batchcall-completed.
Example:

"{\"endpoint\":\"https://example.com/hooks/batch\",\"events\":[\"batchcall-started\",\"batchcall-completed\"]}"

Response

Batch created and its file is being parsed. It starts by itself once parsing finishes.

batchId
string
Example:

"btcl_k3x9q2"

batchName
string

The name you sent.

Example:

"October renewals"

description
string
phoneNumberId
string

The number calls are made from.

phoneNumber
string

That number in E.164.

Example:

"+14155550100"

routingRuleId
string

The outbound routing rule in use.

Example:

"rr_2554md"

status
enum<string>

Without a schedule, a batch goes straight from parsing to running.

  • parsing: the file is being read. No calls yet.
  • parse_failed: the file couldn't be used, and parseError says why. Fix the file and create a new batch.
  • scheduled: parsed, waiting for its start time.
  • running: calls are being placed.
  • cancelling: a cancel is in progress.
  • cancelled: stopped before every number was called.
  • completed: every number has been called, retries included.
Available options:
parsing,
parse_failed,
scheduled,
running,
cancelling,
cancelled,
completed
timing
enum<string>

scheduled when you sent a schedule, otherwise immediate.

Available options:
immediate,
scheduled
timezone
string
Example:

"Asia/Kolkata"

scheduledDate
string

schedule.date.

Example:

"2026-10-14"

scheduledTime
string

schedule.time.

Example:

"10:00"

retry
object
recordsUploaded
integer

Phone numbers read from the file. 0 until parsing finishes.

parseError
string | null

Why parsing failed. Set when status is parse_failed.

file
object

The uploaded file.

timestamp
integer

Start time as a Unix timestamp in seconds. For an immediate batch

createdAt
string<date-time>
updatedAt
string<date-time>