Skip to main content
POST
Create batch campaign
Creates a batch campaign: queues many outbound calls under one campaign ID. Useful for appointment reminders, lead qualification, surveys.

Request

Body parameters

Recipient object

All variables are automatically injected as context for the agent - you do not need {{placeholders}} in your prompt.

Calling window and timezone

Scheduled campaigns do not fire at midnight - they fire inside the calling window, in local time:
  • The scheduler checks every 60 seconds. A campaign that is due but outside its window stays scheduled and is re-checked each minute - it fires within a minute of the window opening.
  • The window runs in this priority of timezones: campaign timezone (if you sent one) -> the agent’s timezone -> Europe/London.
  • Resellers: your end-user picks their timezone in your app, you send it per campaign - their choice wins over the agent default.
  • Overnight windows are supported (window_start_minutes greater than window_end_minutes, e.g. 18:00-02:00).
  • No window set = the campaign fires when the date is due (legacy behaviour).
One campaign = one timezone. Calling recipients across multiple countries? Split them by region into separate campaigns, each with its own timezone.

Response

201 Created (schedule_type now launches immediately):
With schedule_type: schedule the response returns status: scheduled and the campaign fires inside its window on the scheduled date.

Behaviour

  • Calls are queued and processed respecting your per-key concurrent call limit
  • Each recipient becomes one outbound call with its own call_id
  • Failed calls are logged but do not stop the campaign
  • Voicemail detection runs per call. The agent leaves a short message built from your prompt, then ends the call with ended_reason: voicemail_detected. See Voicemail detection to control or disable the message.

Errors

Error response shape

Every error follows the same shape. On a rejected batch, error.details.invalid names each bad number and why, so you can show it to your own users:
Numbers are checked against real numbering rules, not just E.164 shape. +44745357377 looks like a UK mobile but is one digit short, so it can never connect - it is rejected here rather than accepted and lost.

Launching a scheduled campaign

A schedule_type: schedule campaign fires automatically inside its window. You can also launch it manually with Launch batch.