---
title: "Enroll a lead in this cadence"
method: POST
path: "/cadences/{id}/enrollments"
tags: ["Cadences"]
---

# Enroll a lead in this cadence

`POST /cadences/{id}/enrollments`

## Request

- Base URL: `https://anjal.app`
- URL: `https://anjal.app/cadences/{id}/enrollments`
- Auth: API key in header `X-API-Key`

Idempotent on (cadenceId, leadExternalId) — re-enrolling the
same lead returns the existing enrollment with `created: false`.

Lead identity fields: pass whatever you have. The runner uses
`leadLinkedinUrl` for LinkedIn invites and `leadEmail` for
email steps. `leadProfileUrn` is set automatically when the
first LinkedIn invite is sent (the runner persists it for
future after_accept attribution and reply-detection).

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `leadExternalId` string, required: Your stable id for the lead. Idempotency key.
  - `leadName` string, nullable
  - `leadEmail` string, email, nullable
  - `leadLinkedinUrl` string, uri, nullable
  - `leadProfileUrn` string, nullable
  - `sessionId` string, nullable: Required if cadence has any LinkedIn step.
  - `inboxId` string, uuid, nullable: Required if cadence has any email step.
  - `context` object, nullable
  - `startAt` string, date-time, nullable

## Response `200`

Enrollment ready. `created` distinguishes new from existing.

---

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