Skip to Content
API ReferenceSequences

Sequences

DM Sequences let you build multi-step drip campaigns that automatically send follow-up messages to enrolled contacts at configurable delays. Each step fires after the specified number of hours since the previous step. Contacts can exit automatically when they reply.

Agency plan required. Sequences use the dm_sequences feature flag, which is only available on Agency plan. Requests on lower-tier plans return 403 with error code PLAN_UPGRADE_REQUIRED and message “DM Sequences require an Agency plan”.

Base URL

https://api.voxburst.io/v1/sequences

Sequence Statuses

StatusDescription
DRAFTCreated; contacts can be enrolled
ACTIVERunning — contacts can be enrolled and steps fire on schedule
PAUSEDPaused — no new messages sent; enrollments preserved
ARCHIVEDArchived — no new enrollments accepted; sequence hidden from list

Enrollment Statuses

StatusDescription
ACTIVEContact is progressing through the sequence
COMPLETEDContact completed all steps
EXITEDContact was manually exited or triggered exit condition
FAILEDMessage delivery failed

Sequence Object

{ "id": "seq_abc123", "workspaceId": "ws_01hwxyz", "name": "Onboarding Flow", "enrollmentRules": {}, "exitOnReply": true, "status": "ACTIVE", "steps": [ { "id": "step_001", "sequenceId": "seq_abc123", "stepOrder": 1, "messageTemplate": "Welcome! Here is what to do next...", "delayHours": 0, "createdAt": "2026-05-01T10:00:00Z", "updatedAt": "2026-05-01T10:00:00Z" } ], "createdAt": "2026-05-01T10:00:00Z", "updatedAt": "2026-05-01T10:00:00Z" }

List Sequences

GET /v1/sequences

List sequences with page/limit pagination. Sequences with status ARCHIVED are excluded from results.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
curl "https://api.voxburst.io/v1/sequences?page=1&limit=20" \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "sequences": [ { ... } ], "pagination": { "page": 1, "limit": 20, "total": 3, "totalPages": 1 } }

Get Sequence

GET /v1/sequences/:id

Retrieve a single sequence with enrollment statistics.

curl https://api.voxburst.io/v1/sequences/seq_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "sequence": { ... }, "enrollmentStats": { "ACTIVE": 12, "COMPLETED": 45, "EXITED": 3, "FAILED": 1 } }

Create Sequence

POST /v1/sequences

Create a new sequence. Sequences start in DRAFT status.

Request Body

FieldTypeRequiredDescription
namestringYesSequence name (1–255 chars)
enrollmentRulesobjectNoEnrollment criteria (default: {})
exitOnReplybooleanNoAutomatically exit the enrollment when the contact replies (default: true)
curl -X POST https://api.voxburst.io/v1/sequences \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "Onboarding Flow", "exitOnReply": true }'

Response (201)

{ "sequence": { ... } }

Update Sequence

PATCH /v1/sequences/:id

Update sequence name, status, or exit behavior.

Request Body

FieldTypeDescription
namestringNew name
statusstringNew status: DRAFT, ACTIVE, PAUSED, or ARCHIVED
exitOnReplybooleanEnable or disable reply-triggered exit
curl -X PATCH https://api.voxburst.io/v1/sequences/seq_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "status": "ACTIVE" }'

Response

{ "sequence": { ... } }

Delete Sequence

DELETE /v1/sequences/:id

Soft-deletes a sequence by setting its status to ARCHIVED. The sequence record is preserved but will no longer appear in list results or accept new enrollments.

curl -X DELETE https://api.voxburst.io/v1/sequences/seq_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "success": true }

Steps

List Steps

GET /v1/sequences/:id/steps

curl https://api.voxburst.io/v1/sequences/seq_abc123/steps \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "steps": [ { "id": "step_001", "sequenceId": "seq_abc123", "stepOrder": 1, "messageTemplate": "Welcome! Here is what to do next...", "delayHours": 0, "createdAt": "2026-05-01T10:00:00Z", "updatedAt": "2026-05-01T10:00:00Z" } ] }

Add Step

POST /v1/sequences/:id/steps

Add a step to the sequence. Steps are ordered by stepOrder.

Request Body

FieldTypeRequiredDescription
messageTemplatestringYesMessage text for this step (max 2,000 chars)
delayHoursintegerYesHours to wait after the previous step before sending (0 = send immediately after enrollment for step 1; max 8,760 = 1 year)
stepOrderintegerNoPosition in the sequence. If omitted, step is appended at the end.
curl -X POST https://api.voxburst.io/v1/sequences/seq_abc123/steps \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "messageTemplate": "Just checking in — any questions?", "delayHours": 48, "stepOrder": 2 }'

Response (201)

{ "step": { ... } }

Update Step

PATCH /v1/sequences/:id/steps/:stepId

Update a step’s message, delay, or order.

Request Body

FieldTypeDescription
messageTemplatestringNew message text (max 2,000 chars)
delayHoursintegerNew delay in hours (max 8,760)
stepOrderintegerNew position
curl -X PATCH https://api.voxburst.io/v1/sequences/seq_abc123/steps/step_001 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "delayHours": 72 }'

Response

{ "step": { ... } }

Delete Step

DELETE /v1/sequences/:id/steps/:stepId

curl -X DELETE https://api.voxburst.io/v1/sequences/seq_abc123/steps/step_001 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "success": true }

Enrollments

List Enrollments

GET /v1/sequences/:id/enrollments

List all contact enrollments for a sequence.

Query Parameters

ParameterTypeDescription
statusstringFilter by status: ACTIVE, COMPLETED, EXITED, FAILED
pageintegerPage number (default: 1)
limitintegerResults per page (default: 50, max: 100)
curl "https://api.voxburst.io/v1/sequences/seq_abc123/enrollments?status=ACTIVE" \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "enrollments": [ { "id": "enroll_xyz789", "sequenceId": "seq_abc123", "contactId": "contact_abc123", "workspaceId": "ws_01hwxyz", "platform": "TWITTER", "currentStep": 1, "status": "ACTIVE", "nextRunAt": "2026-06-03T09:00:00Z", "enrolledAt": "2026-06-01T09:00:00Z", "exitedAt": null, "exitReason": null, "contact": { "id": "contact_abc123", "displayName": "Alice Example", "username": "alice", "platform": "TWITTER" } } ], "pagination": { "page": 1, "limit": 50, "total": 12, "totalPages": 1 } }

Enroll Contact

POST /v1/sequences/:id/enrollments

Enroll a contact in the sequence. The sequence must not be ARCHIVED — enrollment is allowed for DRAFT, ACTIVE, and PAUSED sequences.

Request Body

FieldTypeRequiredDescription
contactIdstringYesContact ID to enroll
platformstringYesPlatform to use for delivering messages
curl -X POST https://api.voxburst.io/v1/sequences/seq_abc123/enrollments \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "contactId": "contact_abc123", "platform": "TWITTER" }'

Response (201)

{ "enrollment": { ... } }

Exit Enrollment

DELETE /v1/sequences/:id/enrollments/:enrollId

Manually exit a contact from the sequence.

curl -X DELETE https://api.voxburst.io/v1/sequences/seq_abc123/enrollments/enroll_xyz789 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "success": true }
Last updated on