Update a campaign
Authentication
Path parameters
UUID of the campaign to update. A campaign from another workspace or a deleted one answers 404; a value that is not a UUID answers 400.
Request
Weekly calling window, stored and returned exactly as sent (camelCase inside the object).
The dialer starts a call only when the local hour in timezone is >= startHour and
< endHour on an enabled day; outside it, the call is rescheduled to the next window. A call
that started inside the window may run past endHour. Days that are left out count as disabled.
Validation: timezone must be a valid IANA zone (Invalid IANA timezone), every enabled day
needs startHour < endHour, and at least one day must be enabled
(At least one day must be enabled). WhatsApp and email sends are not bound to this window.
New concurrency; silently lowered to the plan’s ceiling.
New maximum dial attempts per contact (counting the first).
New channel (voice, whatsapp, webchat or email). The campaign’s current agent must serve it (400 otherwise).
New purpose (see Campaign.category for each value).
New WhatsApp template, or null to make the campaign inbound-only. The variable map is re-checked against the new template body.
New campaign-wide placeholder values (same shapes as on create), or null to clear them.
New per-contact placeholder map (same shape as on create); null clears it so every placeholder uses the campaign-wide values.
New email subject, or null to clear it.
New email body, or null to clear it.
Response
The updated campaign (or the unchanged one, for an empty body).
A campaign row as returned by the retrieve, create, update, activate and pause endpoints.
Keys are snake_case, exactly as stored. The list endpoint returns a lighter
CampaignListItem instead.

