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/sequencesSequence Statuses
| Status | Description |
|---|---|
DRAFT | Created; contacts can be enrolled |
ACTIVE | Running — contacts can be enrolled and steps fire on schedule |
PAUSED | Paused — no new messages sent; enrollments preserved |
ARCHIVED | Archived — no new enrollments accepted; sequence hidden from list |
Enrollment Statuses
| Status | Description |
|---|---|
ACTIVE | Contact is progressing through the sequence |
COMPLETED | Contact completed all steps |
EXITED | Contact was manually exited or triggered exit condition |
FAILED | Message 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
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
limit | integer | Results 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
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Sequence name (1–255 chars) |
enrollmentRules | object | No | Enrollment criteria (default: {}) |
exitOnReply | boolean | No | Automatically 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
| Field | Type | Description |
|---|---|---|
name | string | New name |
status | string | New status: DRAFT, ACTIVE, PAUSED, or ARCHIVED |
exitOnReply | boolean | Enable 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
| Field | Type | Required | Description |
|---|---|---|---|
messageTemplate | string | Yes | Message text for this step (max 2,000 chars) |
delayHours | integer | Yes | Hours to wait after the previous step before sending (0 = send immediately after enrollment for step 1; max 8,760 = 1 year) |
stepOrder | integer | No | Position 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
| Field | Type | Description |
|---|---|---|
messageTemplate | string | New message text (max 2,000 chars) |
delayHours | integer | New delay in hours (max 8,760) |
stepOrder | integer | New 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
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: ACTIVE, COMPLETED, EXITED, FAILED |
page | integer | Page number (default: 1) |
limit | integer | Results 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
| Field | Type | Required | Description |
|---|---|---|---|
contactId | string | Yes | Contact ID to enroll |
platform | string | Yes | Platform 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 }