Halt an active campaign mid-send. Completes waitpoint tokens so Trigger.dev tasks observe the new state.
active campaign to paused. Only active campaigns can be paused — every other status returns 400. The request body is empty.
Under the hood the server does two things:
campaigns.status (fast, the only step that can fail the request).{ paused: true }, so sleeping per-prospect tasks wake up and re-check the status. This step is best-effort — token-completion failures are logged but do not surface as a 500.campaigns.status flips to paused synchronously. Sleeping tasks continue to exist on Trigger.dev until their waitpoint tokens resolve, but they will no-op on the pause check at the top of the engine loop.Idempotency. Not idempotent — a second call while already paused returns 400 (Only active campaigns can be paused). Treat that as a safe success for user-facing flows.Follow-up. Poll GET /api/campaigns/{id} to confirm status === "paused" before reporting success to the human. Resume later with POST /api/campaigns/{id}/resume.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 paused. Returns the updated campaign row with status: "paused".
The campaign row after the status transition. status is now paused.