Only the
call channel is dispatchable today. SequenceChannel also defines whatsapp and email, but those channels are deferred. POST /sequences accepts channel: "call" only.Lifecycle
A sequence moves through a fixed set ofSequenceStatus states:
draft— newly created. Editable and deletable. Nothing is enqueued yet.running— launched. The dispatch worker is processing the contact queue.paused— temporarily halted. Resume to continue from where it left off.completed— auto-set when the queue drains (every contact reached a terminal state). Terminal.
400 BAD_REQUEST:
| Action | Allowed from | Notes |
|---|---|---|
PATCH (edit) | draft only | Once launched, the configuration is frozen. |
DELETE | draft only | Launched sequences keep their contact history and cannot be deleted. |
launch | draft only | Requires a non-empty audience of at most 5000 eligible leads. |
pause | running only | |
resume | paused only |
List sequences
sequences:read. Returns every sequence for the organization, newest first. This endpoint is not paginated — it returns a flat data array.
Query parameters
| Param | Type | Notes |
|---|---|---|
status | enum | Optional. Filter by SequenceStatus: draft, running, paused, or completed. An invalid value returns 400 VALIDATION_ERROR. |
Response 200
Each sequence carries aprogress object derived from its contact queue.
The progress object
Counts of contacts by SequenceContactStatus. total is the sum of the rest.
| Field | Description |
|---|---|
total | Total contacts enrolled in the sequence. |
pending | Queued, not yet attempted. |
inProgress | Currently being dispatched (in_progress). |
sent | Successfully dispatched. |
failed | Dispatch failed after retries. |
skipped | Skipped (e.g. lead opted out or became ineligible). |
Create a sequence
sequences:write. Creates a sequence in draft status. Nothing is enqueued until you launch it.
Request body
| Field | Required | Notes |
|---|---|---|
name | yes | 1..120 chars (trimmed). |
channel | no | Defaults to call. Only call is accepted (SequenceChannel). |
criteria | yes | Audience filter. See below. |
throttle | yes | Pacing rules. See below. |
criteria — audience filter
All fields are optional and combine with AND. An empty object {} matches every lead in the organization.
| Field | Type | Notes |
|---|---|---|
statuses | string[] | Match leads whose status is one of these LeadStatus values. |
stageIds | string[] (uuid) | Match leads in any of these pipeline stages. Discover stage IDs via GET /pipeline/stages. |
sources | string[] | Match leads whose source is one of these LeadSource values. |
minScore | integer (0–100) | Match leads with score >= minScore. |
throttle — pacing and business hours
All fields are required.
| Field | Type | Notes |
|---|---|---|
maxPerMinute | integer (1–60) | Max contacts dispatched per minute. |
businessHoursStart | string "HH:MM" | Start of the daily dispatch window, in timezone local time. |
businessHoursEnd | string "HH:MM" | End of the daily dispatch window. |
timezone | string | IANA timezone (e.g. America/Santo_Domingo), 1..64 chars. |
weekdays | integer[] | ISO weekdays the sequence may dispatch on (Mon=1 … Sun=7). At least one, at most seven. |
Response 201
Common errors
400 VALIDATION_ERROR— invalid body (e.g. emptyname,channelother thancall, malformedthrottle).
Get a sequence
sequences:read. Returns the same shape as a list item, including the progress object. 404 NOT_FOUND if the sequence doesn’t exist or belongs to another org.
Update a sequence
sequences:write. Draft-only — editing a launched sequence returns 400 BAD_REQUEST.
Request body
All fields optional; send only what you want to change.channel cannot be changed.
criteria and throttle are replaced wholesale when provided — send the complete object, not a partial patch.
Response 200
Common errors
400 BAD_REQUEST—"Only draft sequences can be edited".400 VALIDATION_ERROR— invalid body.404 NOT_FOUND— unknown sequence.
Delete a sequence
sequences:write. Draft-only. Launched sequences own their contact queue and history (who was dialed, results, provider references), so they are kept as a record and cannot be deleted.
Response 200
Common errors
400 BAD_REQUEST—"Only draft sequences can be deleted; launched sequences keep their contact history".404 NOT_FOUND— unknown sequence.
Preview the audience
sequences:read. Counts how many leads currently match a set of criteria — without creating or launching anything. Use it to size an audience before committing, and to confirm it sits under the 5000-lead launch ceiling.
Request body
criteria object follows the same schema as on create.
Response 200
Launch a sequence
sequences:write. Draft-only. Resolves the audience from the sequence’s criteria, enrolls each matching lead into the contact queue, and flips the sequence to running.
Response 200
enqueued is the number of contacts enrolled (the number of units charged).
Common errors
400 BAD_REQUEST—"Only draft sequences can be launched"(already running, paused, or completed).400 BAD_REQUEST—"No eligible leads match this sequence's criteria"(empty audience).400 BAD_REQUEST—"Audience too large (over 5000 eligible leads). Narrow the criteria before launching."404 NOT_FOUND— unknown sequence.
Pause a sequence
sequences:write. Running-only. Halts dispatch; in-flight contacts finish, but no new contacts are picked up.
Response 200
Common errors
400 BAD_REQUEST—"Only running sequences can be paused".
Resume a sequence
sequences:write. Paused-only. Returns the sequence to running and the worker continues from the remaining pending contacts.
Response 200
Common errors
400 BAD_REQUEST—"Only paused sequences can be resumed".