draft → running ↔ paused ↔ completed.
stop is reversible — calling start on a completed campaign restarts it
in place, so leads added after the stop can still be dialled without cloning
the campaign.
By default nothing moves a campaign to
completed on its own — not even
dialling every lead. If you turn on
automatic stop, a
campaign also completes when all its leads are finished. The campaign’s
completed_reason tells the two apart: "stopped" (an operator or an API
call) or "leads_finished" (automatic).Start a campaign
Transitions a campaign fromdraft, paused, or completed to running.
The dialer begins placing calls according to the configured dial_mode.
Starting a completed campaign is a restart — see
Stop a campaign below.
campaigns:write | Status: 200 OK
Returns the updated CampaignResponse with status: "running".
Pause a campaign
Transitions a running campaign topaused. The dialer stops placing new
calls but in-progress calls continue until completion.
campaigns:write | Status: 200 OK
Campaigns can also be auto-paused by the system when the abandon rate
approaches the 3% TRAI cap. When this happens, a
campaign.paused
webhook fires with source: "abandon_rate_exceeded".Stop a campaign
Transitions a running or paused campaign tocompleted, which halts
dialing.
This is reversible: call start again to restart the campaign in
place. The restart clears completed_at, keeps the original started_at,
and fires campaign.reopened alongside campaign.started. Only leads
still pending with attempts remaining are dialled, so restarting never
re-calls anyone already reached — which makes it the right way to dial
leads you imported after stopping.
campaigns:write | Status: 200 OK
The response and the campaign.completed webhook carry
completed_reason / reason "stopped".
Stop automatically when all leads are finished
Off by default. Turn it on for every campaign in Settings → General, or for one campaign withauto_stop:
curl
auto_stop is true, false, or null (follow the Settings switch). Like
every campaign edit, it can only be changed while the campaign is not
running.
A running campaign with the switch on is completed when all of these
hold:
- no lead has work left — nothing
pendingwith attempts remaining (this includes a retry waiting for its time), nothingdialing,connectedorcallback; - nothing has happened for the wait set in Settings (default 30 minutes): no dial started, no lead added, no call ended, no start or resume.
completed_reason: "leads_finished" and fires
campaign.completed with reason: "leads_finished".
New leads restart it by itself. Add a lead to a campaign that stopped
this way (API, CSV, or re-queue) and it goes back to running within about
a minute, firing campaign.started and campaign.reopened exactly as a
manual restart does. If the restart is refused — for example, no active
outbound number — the campaign stays completed, auto_restart_error says
why, and it tries again every minute.
A campaign stopped with stop never restarts by itself, and neither does one
of an organisation that has been deactivated. To keep a campaign that stopped
automatically from restarting, call stop on it: it stays completed,
keep_stopped becomes true, and no second campaign.completed fires
(completed_reason and completed_at still say why and when it completed).
start clears keep_stopped.
Turning the automatic stop off does not stop campaigns that already stopped
this way from restarting for new leads — call stop on them for that.

