Restart a paused campaign. Completes pause tokens so Trigger.dev tasks continue their sequences.
paused campaign back to active and clears the stored pause_reason so the UI banner disappears. Only paused campaigns can be resumed — every other status returns 400. The request body is empty.
The server then completes all pause waitpoint tokens with { resumed: true } so sleeping tasks wake and continue. Finally, it runs the check_and_complete_campaign RPC — if every remaining prospect already reached a terminal state while the campaign was paused, the campaign is auto-transitioned to completed and the response reflects that terminal state instead of active.
status: "active". If the campaign had no work left to do, it will land in completed. Always read campaign.status from the response before telling the user the campaign is running again.Idempotency. Not idempotent — calling again while already active returns 400 (Only paused campaigns can be resumed). Treat that as a safe success.Token completion is best-effort. If a waitpoint token was already completed or expired, the failure is logged and ignored — it does NOT surface as a 500. The downstream task will hit the pause check at the top of its loop and self-correct.Follow-up. Poll GET /api/campaigns/{id} to observe stats.sent climbing again. If status === "completed" instead, stop polling.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Campaign UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Campaign resumed. Returns the updated campaign row — typically active, occasionally completed if nothing was left to do.
The campaign row after the status transition. status is now active (or completed if every remaining prospect had already reached a terminal state while paused).