# Outreach Campaigns (/docs/api/campaigns)



Campaigns (outreach sequences) let you send automated message sequences to a list of leads. Each campaign belongs to a workspace and progresses through a defined set of steps.

## Creating and Starting a Campaign [#creating-and-starting-a-campaign]

1. **Create a lead list.** Use [Upload CSV list](/docs/api/campaigns/outreach.lists.uploadCsvList) or [Create CRM list](/docs/api/campaigns/outreach.lists.createCrmList), then save the returned list ID.

2. **Create the campaign.** Call [Create campaign](/docs/api/campaigns/outreach.sequences.create) with the list ID. The campaign is created with `status: "draft"`, and list processing starts asynchronously.

3. **Check whether duplicate resolution is required.** Poll [Get campaign](/docs/api/campaigns/outreach.sequences.get). When `duplicationResolutionNeeded` is `true`, resolve the duplicates before starting the campaign. If the field is absent, continue to the start step; a `409 Conflict` response means list processing is still running, so wait and retry.

4. **Resolve duplicates when required.** Call [List campaign leads](/docs/api/campaigns/outreach.sequences.listLeads) with `stopReason=duplicate` to retrieve all leads awaiting a decision. For each lead, choose `keep` or `remove`, then submit the decisions to [Resolve duplicate campaign leads](/docs/api/campaigns/outreach.sequences.resolveDuplicates). Continue until `duplicationResolutionNeeded` is no longer present.

5. **Start the campaign.** Call [Update campaign status](/docs/api/campaigns/outreach.sequences.updateStatus) with `{"status":"active"}`. The campaign can start only after list processing and duplicate resolution are complete.

## Campaign Status [#campaign-status]

A campaign moves through the following statuses:

| Status      | Description                                     |
| ----------- | ----------------------------------------------- |
| `draft`     | Not yet started; steps and leads can be edited  |
| `active`    | Currently sending messages to leads             |
| `paused`    | Sending is suspended; can be resumed or deleted |
| `completed` | All messages have been sent                     |

## Deleting a Campaign [#deleting-a-campaign]

Only campaigns in `draft`, `paused`, or `completed` status can be deleted. Attempting to delete an `active` campaign returns a `409 Conflict` error. Pause or complete the campaign first.

## Endpoints [#endpoints]

<Cards>
  <Card href="/docs/api/campaigns/outreach.sequences.list">
    Retrieve a paginated list of campaigns in a workspace
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.get">
    Retrieve a single campaign by ID
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.create">
    Create a new outreach campaign
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.patch">
    Update an existing campaign
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.updateStatus">
    Start or pause a campaign
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.listLeads">
    Retrieve all leads in a campaign
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.resolveDuplicates">
    Keep or remove duplicate campaign leads
  </Card>

  <Card href="/docs/api/campaigns/outreach.sequences.delete">
    Delete a draft, paused, or completed campaign
  </Card>
</Cards>
