POST
Resume Campaign
Resumes dispatching calls from where the campaign paused. Only valid on campaigns in paused status.

Authorizations

Authorization
string
header
required

Interactive user session: the login JWT, sent as Authorization: Bearer <token>.

Path Parameters

campaign_id
integer
required

Response

Successful Response

id
integer
required
name
string
required
workflow_id
integer
required
workflow_name
string
required
state
string
required
source_type
string
required
source_id
string
required
total_rows
integer | null
required
processed_rows
integer
required
failed_rows
integer
required
created_at
string<date-time>
required
started_at
string<date-time> | null
required
completed_at
string<date-time> | null
required
retry_config
RetryConfigResponse ┬╖ object
required
max_concurrency
integer | null
schedule_config
ScheduleConfigResponse ┬╖ object | null
circuit_breaker
CircuitBreakerConfigResponse ┬╖ object | null
executed_count
integer
default:0
total_queued_count
integer
default:0
parent_campaign_id
integer | null
redialed_campaign_id
integer | null
telephony_configuration_id
integer | null
telephony_configuration_name
string | null
logs
CampaignLogEntryResponse ┬╖ object[]
failure
CampaignFailureResponse ┬╖ object | null

The customer-facing shape returned by the API and stored in the log.

source_rejections
SourceRejectionSummary ┬╖ object | null

What a campaign's contact source dropped at ingest.

Present only when something was actually rejected - a campaign that lost nothing carries None here, so the UI renders no surface rather than an empty one reading zero.

Field names match the sequence import response (api/routes/sequences.py) so one UI component can render both surfaces. rejections_by_reason is keyed by RejectionReason.

Counts only, deliberately. No offending cell value is carried or stored - see rejection_summary for the ruling and why the sequence side's approval to store it does not extend to this surface.