Resume a campaign
POST /api/v1/campaign/{id}/resume — resume a paused or failed campaign, revalidating wallet and telephony first.
POST /api/v1/campaign/{campaign_id}/resumeResume dispatching. Both paused and failed campaigns are recoverable — resume revalidates the account (wallet balance + telephony configured) and then continues from the remaining queued contacts. The circuit-breaker window is reset on resume, so the campaign gets a clean start.
Failed campaigns are recoverable
A campaign lands in failed only on an unrecoverable setup error (e.g. a CSV sync failure). Once the underlying problem is fixed, resume it like a paused campaign. Transient trouble during dialing (repeated batch errors, drained phone-number pool) pauses the campaign rather than failing it — see the platform guide.
Pre-resume checks
Resume runs the same gate as starting:
| Check | Error if failed |
|---|---|
| At least one telephony configuration exists | 400 |
| Wallet balance is above the start threshold | 402 (insufficient balance) or 403 |
| Campaign is not archived | 409 |
Campaign is paused or failed | 400 (enforced by the runner) |
Response
200 OK with state="running".
Examples
curl -X POST https://dashboard.zoxa.ai/api/v1/campaign/7/resume \
-H "X-API-Key: zsk_..."Errors
| Status | detail | When |
|---|---|---|
400 | "You must configure telephony first..." | No telephony configuration on the org. |
400 | runner message | Campaign is not in a resumable (paused / failed) state. |
402 / 403 | wallet detail object | Wallet balance below the start threshold. |
409 | "Unarchive the campaign first" | Campaign is archived. |
404 | "Campaign not found" | Id not in your org. |
Related
POST /campaign/{id}/pause— pause a running campaignPOST /campaign/{id}/unarchive— restore an archived campaign before resuming