---
title: "Enroll prospects"
method: POST
path: "/campaigns/{id}/enrollments"
tags: ["Enrollments"]
---

# Enroll prospects

`POST /campaigns/{id}/enrollments`

## Request

- Base URL: `https://warmysender.com/api/v1`
- URL: `https://warmysender.com/api/v1/campaigns/{id}/enrollments`
- Auth: HTTP bearer

Adds prospects to a campaign by prospect id, audience list id, email, and/or WhatsApp number. Suppressed prospects are skipped and counted separately. Provide at least one of prospectIds, listIds, emails, whatsappPhones. Emails and numbers that match no existing lead are reported back rather than silently dropped. Enrolling new prospects into a completed campaign reopens it for them (campaignReopened: true) — prospects already in it, including those who finished, are skipped and never emailed again, and sending is paced by the scheduler as usual.

Required scope: `enrollments:write`.

Requires a unique `Idempotency-Key` request header so retries never duplicate.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `prospectIds` string[]: Prospect ids to enroll.
  - `listIds` string[]: Audience list ids — every prospect on each list is enrolled.
  - `emails` string[]: Prospect emails to enroll.
  - `whatsappPhones` string[]: WhatsApp numbers of existing leads to enroll. Any human format is accepted (+49 171 234 5678, 0049…, bare digits, a wa.me link) and normalized before matching.

## Response `200`

Success

## Other responses

- `400`: `validation_error` — No targets given or body invalid.
- `401`: `unauthorized` — Missing or invalid API key.
- `403`: `insufficient_scope` — The campaign runs Instagram or WhatsApp steps and this key lacks that channel's write permission. Nobody was enrolled.; `seat_required` — The campaign runs Instagram or WhatsApp steps and the workspace has no active seat for that channel.
- `404`: `not_found` — Campaign not found.
- `429`: `rate_limited` — Too many requests — slow down and retry after the Retry-After delay.

---

[API](https://skmtc.dev/warmysender/apis/warmysender-public-api.md) · [All operations](https://skmtc.dev/warmysender/apis/warmysender-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/warmysender/apis/warmysender-public-api/revisions/eb5c7f10a1cd?raw)
