> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sendora.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign lifecycle

> Safely create, validate, launch, pause, resume, stop, and enroll leads in campaigns.

Campaign lifecycle calls are state transitions. Keep the campaign in draft until its audience, workflow, channels, and send windows have been reviewed.

## Recommended sequence

```text theme={"dark"}
create → configure → preflight → review → launch → monitor → pause/resume → stop
```

1. Create a campaign with `POST /api/v1/public/campaigns`.
2. Configure the workflow with the campaign update endpoint.
3. Enroll a small test list or individual test lead.
4. Run `POST /campaigns/{campaign_id}/preflight` and resolve every blocking issue.
5. Launch only after confirming the campaign ID, audience, channel connections, and schedule.
6. Monitor campaign analytics and lead activity.

## Enrollment

Use `POST /campaigns/{campaign_id}/leads` with either explicit `lead_ids` or a `lead_list_id`, as documented by the request schema. A `202` response means enrollment work has been accepted; persist the returned job or operation identifier when present.

Duplicate enrollment should be treated as a business result, not as permission to retry blindly. Inspect the response and campaign lead list before resubmitting.

## Lifecycle safety

* `preflight` does not launch a campaign; it validates readiness.
* `launch` can create real outbound activity.
* `pause` prevents future work but does not undo messages or calls already sent.
* `resume` can restart future work.
* `stop` is a terminal or highly destructive transition; require explicit confirmation.
* After a timeout, read the campaign state before repeating a transition.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.