---
title: "Add customers to a campaign"
method: POST
path: "/v2/campaigns/{campaignId}/enrollment"
tags: ["Campaign Enrollment"]
---

# Add customers to a campaign

`POST /v2/campaigns/{campaignId}/enrollment`

## Request

- Base URL: `https://api.carecycle.ai`
- URL: `https://api.carecycle.ai/v2/campaigns/{campaignId}/enrollment`
- Auth: API key in header `x-api-key`

Add customers to a campaign so it starts reaching out to them. Requires campaign_enrollment.manage. Provide customer or customers (up to 1,000), identified by customerId or US phoneNumber. Returns HTTP 202 with a server-generated job ID for both individuals and lists. Invalid customer entries fail individually with invalid_customer_reference and validationErrors; valid entries continue. Invalid request structure still returns 422. Poll statusUrl for per-input results. An optional idempotencyKey protects retries of the same payload; without one, each submission creates a new request. Customers must already exist in your organization. See [Campaign API guide](/docs/api-reference/campaign-enrollment/guide) for restrictions and retries. Customers already in the campaign, or who already finished it, are not started over. A customer can be in more than one campaign at a time.

## Path parameters

- `campaignId` string, uuid, required

## Request body

- PostV2CampaignsCampaignIdEnrollmentRequestBody
  - `idempotencyKey` string: Optional retry key. Reuse with the identical payload after a timeout. Without a key, each submission creates a new request.
  - `customer` union
    - object
      - `customerId` string, uuid, required
    - object
      - `phoneNumber` string, required
    - union
      - string
      - number
      - boolean
      - Schema3[]
      - object
  - `customers` union[]
    - union
      - object
        - `customerId` string, uuid, required
      - object
        - `phoneNumber` string, required
      - union
        - string
        - number
        - boolean
        - Schema3[]
        - object

## Response `202`

POST /v2/campaigns/:campaignId/enrollment Positive response

- PostV2CampaignsCampaignIdEnrollmentPositiveResponse
  - `jobId` string, uuid, required
  - `statusUrl` string, required
  - `total` integer, required
  - `resolvedCount` integer, required

## Other responses

- `400`: POST /v2/campaigns/:campaignId/enrollment Negative response 400
- `401`: POST /v2/campaigns/:campaignId/enrollment Negative response 401
- `403`: POST /v2/campaigns/:campaignId/enrollment Negative response 403
- `404`: POST /v2/campaigns/:campaignId/enrollment Negative response 404
- `409`: POST /v2/campaigns/:campaignId/enrollment Negative response 409
- `422`: POST /v2/campaigns/:campaignId/enrollment Negative response 422
- `429`: POST /v2/campaigns/:campaignId/enrollment Negative response 429
- `500`: POST /v2/campaigns/:campaignId/enrollment Negative response 500
- `502`: POST /v2/campaigns/:campaignId/enrollment Negative response 502
- `503`: POST /v2/campaigns/:campaignId/enrollment Negative response 503

---

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