Skip to main content
PATCH
Update campaign
Change the settings of a campaign you own, including one that is running. Only the fields you send change: everything you leave out stays as it is, and a list you send (schedule_windows, allowed_days, phone_number_ids) replaces the current one. You can send back the data object of Get campaign as it is, with your changes applied. The channel of a campaign cannot be changed, and you start or stop it with Update campaign status.
Changes to a running campaign apply to calls and messages placed after the update. Calls already in progress or queued finish with the previous settings.

Path Parameters

integer
required
The ID of the campaign to update

Request Body

Shared

string
Campaign name. Maximum 255 characters.
string
IANA timezone for the send/call windows (e.g. America/New_York).
array
1 to 6 daily windows as objects with start and end in HH:MM. A window runs overnight when end is earlier than start (e.g. 16:00 → 02:00). Replaces the current windows.
string
Legacy single-window start (HH:MM). Sets the start of the first window when schedule_windows is not sent.
string
Legacy single-window end (HH:MM). Sets the end of the first window when schedule_windows is not sent. Overnight when end < start.
array
Weekdays when calls or messages can go out: monday … sunday. At least one. Replaces the current days.
string
ISO 8601 date and time to start the campaign automatically. Without an offset it is read in the campaign timezone. The date cannot be before today.A campaign that isn’t running (for example draft, paused or completed) becomes scheduled and starts by itself at that time. A running campaign keeps running. Set to null to clear it: a scheduled campaign goes back to draft.
integer
Max retry attempts per lead. Range: 1–5.
integer
Minutes between retries. Range: 10–4320.
boolean
true completes the campaign once every lead has been processed. false keeps it waiting for new leads, which campaigns fed by an automation or the API need.Turning it off doesn’t reopen a campaign that has already completed: start it again with Update campaign status.

Call campaigns

integer
An OUTBOUND assistant you own. Changing it also moves the campaign to that assistant’s timezone, unless you send timezone in the same request. The goal variable is cleared if the new assistant doesn’t have it as a True/False post-call variable.
integer
Concurrent calls, up to your plan’s limit (max 10).
array
The numbers to call from. Replaces the whole pool. Send [] to remove all numbers; calls then use the assistant’s own number. Numbers you add must be available to your account.
boolean
Retry when a call hits voicemail.
boolean
Keep retrying until the goal variable is true. Turning it off clears goal_completion_variable.
string
A True/False (bool) post-call variable of the campaign’s assistant, used with retry_on_goal_incomplete. It is cleared while retry_on_goal_incomplete is off.
string
Text follow-up after the last call retry: whatsapp or sms. Set to null to turn the follow-up off, which also clears its settings. Switching between whatsapp and sms clears the settings of the other one.
integer
WhatsApp sender for the follow-up. A new sender also needs fallback_whatsapp_template_id.
integer
An approved template on that sender. Placeholders it shares with the current follow-up template keep their mapping; if it has other placeholders, send the full fallback_variable_mapping in the same request.
object
Maps every placeholder of the follow-up template (e.g. "1") to a lead variable key, and nothing else.
integer
SMS-capable number for the follow-up, available to your account.
string
Follow-up SMS text. Max 1600 characters. Supports {{variable}} placeholders.

WhatsApp campaigns

integer
A sender you own. A new sender also needs whatsapp_template_id.
integer
An approved template on that sender. Placeholders it shares with the current template keep their mapping; if it has other placeholders, send the full text_variable_mapping in the same request.
object
Maps every template placeholder (e.g. "1") to a lead variable key, and nothing else. Replaces the current mapping.
integer
Per-campaign send rate. Range: 1–10.

SMS campaigns

integer
An SMS-capable number available to your account.
string
Message text. Max 1600 characters. Supports {{variable}} placeholders.
integer
Per-campaign send rate. Range: 1–10.

Example Requests

Rename and set new calling windows

Keep waiting for leads from an automation

The campaign keeps waiting for new leads instead of completing once its current leads have been processed.

Replace the phone number pool

The campaign calls from exactly these numbers. Send [] to remove them all and call from the assistant’s own number.

Schedule a start

Without an offset, the time is read in the campaign timezone. The campaign becomes scheduled and starts by itself at that time. Send null to clear it.

Response

string
Success message
object
The campaign after the update, in the same shape as Get campaign.

Error responses

The account has no active plan, its plan doesn’t include campaigns, or campaigns are turned off for it.
The campaign does not exist or does not belong to you. Also returned for a campaign beyond your plan’s campaign limit.
Validation errors, a change of channel or status, or an unknown field. Nothing is saved.

Notes

  • Only the fields you send change. A list you send (schedule_windows, allowed_days, phone_number_ids) replaces the current one
  • You can send back the data object of Get campaign as it is. Its read-only fields (id, created_at, updated_at) are ignored, and so are channel and status while they keep their current values
  • Fields of another channel are ignored. phone_number_ids on a WhatsApp or SMS campaign returns 422
  • Changing channel returns 422 (“The channel of an existing campaign cannot be changed.”). Changing status also returns 422: start or stop the campaign with Update campaign status
  • An unknown field returns 422 (“The X field is not supported.”)
  • When a request returns an error, nothing is saved
  • Running campaigns can be edited. Changes apply to calls and messages placed after the update; calls already in progress or queued finish with the previous settings
  • Leading and trailing spaces are removed from text values, and an empty string counts as null
  • If your plan limits the number of campaigns, only your newest campaigns up to that limit can be updated; older ones return 404