docs outreach
Enrollments
Enroll a run, a list, or profile ids; preview, confirm, pause or stop.
POST /v1/outreach/enrollments puts people in a sequence. Name them in any mix, up to 500, de-duplicated:
| Field | Enrolls |
|---|---|
run_id | The run's delivered candidates |
list_id | The list's people |
profile_ids | People you fetched or found in search |
candidates | People you name: profile_id or profile_url, plus full_name, first_name, company for the message |
limit (default 100) caps how many come from a run or a list.
{ "sequence_id": "seq_…", "run_id": "run_…", "limit": 25 }
Preview, then enroll
With ?dry_run=true nothing is written. Each person gets a row: decision (schedule or skip), the reason for a skip, the rendered steps, scheduled_at for the first step, next_available_at when a cap pushes it out, and warnings (for example a first message without {{privacy_notice}}).
Without dry_run, send an Idempotency-Key. The response (201) has enrolled, skipped with reasons, and the enrollments. Each scheduled person is marked contacted in the seen register. The same key replays the same answer and enrolls nobody twice.
| Skip reason | Meaning |
|---|---|
suppressed | The person opted out or is on your suppression list |
do_not_contact | Marked in your seen register, for example after a negative reply |
already_contacted | Contacted from this workspace before |
| A cap reason | No slot inside the safety caps within 14 days. next_available_at says when |
Manage
| Call | Effect | Scope |
|---|---|---|
GET /v1/outreach/enrollments | Filter by status, sequence_id, account_id, profile_id | outreach:read |
POST …/{enrollment_id}/pause | Holds the next steps | outreach:write |
POST …/{enrollment_id}/resume | Reschedules from now. ?dry_run=true shows when the next step goes out | outreach:send |
POST …/{enrollment_id}/stop | Final. Nothing more is sent from this enrollment | outreach:write |
Pause and stop need no preview. Stopping keeps the person marked contacted. Resuming into a cap or a paused account is 409 outreach_cap_reached or 409 account_paused with next_available_at.
GET /v1/outreach/actions lists every scheduled, sent, skipped, refused, failed, or held step; outcome=awaiting_approval lists messages waiting for your approval.
One action outside a sequence
POST /v1/outreach/sends queues one invite, message, profile visit, or invite withdrawal for one person, under the same caps, hours, and suppression checks. ?dry_run=true previews it.
The examples script previews, enrolls, and pauses a fictional profile.
What it costs
0 credits. The account's monthly price is €49.
Ask Claude
Preview the shortlist from this run on the Backend Ghent sequence. Show me the note, the scheduled time, and anyone skipped. Do not enroll until I say yes.