Sequences API
Sequences are automated email drip campaigns. A sequence consists of ordered steps – emails, delays, conditions, and actions – that subscribers progress through over time. The Sequences API lets you list sequences, inspect their steps, and add or remove subscribers.
Base URL
https://app.sendbroadcast.com/api/v1
Authentication
Sequence endpoints require a Bearer token with sequence read and/or sequence write permissions. Adding and removing subscribers also requires subscriber write permissions. See Authentication for details.
The Sequence Object
| Field | Type | Description |
|---|---|---|
id |
integer | Unique identifier. |
label |
string | Name of the sequence. |
active |
boolean | Whether the sequence is actively processing subscribers. |
track_opens |
boolean | Whether open tracking is enabled for sequence emails. |
track_clicks |
boolean | Whether click tracking is enabled for sequence emails. |
use_any_email_server |
boolean | Whether to use any available email server. |
email_server_ids |
array | IDs of specific email servers to use. |
init_segment_id |
integer | Segment ID to auto-enroll subscribers from. |
init_tag |
string | Tag that triggers auto-enrollment when added to a subscriber. |
parent_sequence_id |
integer | ID of the parent sequence (for branching). |
subscribers_count |
integer | Number of subscribers currently in the sequence. |
created_at |
datetime | When the sequence was created. |
updated_at |
datetime | When the sequence was last updated. |
Example Sequence Object
{
"id": 5,
"label": "Welcome Series",
"active": true,
"track_opens": true,
"track_clicks": true,
"use_any_email_server": false,
"email_server_ids": [1],
"init_segment_id": null,
"init_tag": "new-signup",
"parent_sequence_id": null,
"subscribers_count": 1250,
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2025-03-01T12:00:00.000Z"
}
The Step Object
When you request a sequence with include_steps=true, the response includes a steps array. Each step represents one action in the sequence flow.
| Field | Type | Description |
|---|---|---|
id |
integer | Unique identifier. |
action |
string | The step type. See Step Action Types. |
label |
string | Display label for the step. |
parent_id |
integer | ID of the parent step (for branching flows). |
true_branch |
boolean | Whether this step is on the “true” branch of a condition. |
Step Action Types
| Action | Description |
|---|---|
entry_point |
The starting point of the sequence. Every sequence has one. |
send_email |
Send an email to the subscriber. |
delay |
Wait for a specified duration before continuing. |
delay_until_time |
Wait until a specific time of day before continuing. |
condition |
Evaluate a condition and branch the flow. |
condition_branch |
A branch path from a condition step. |
move_to_sequence |
Move the subscriber to a different sequence. |
deactivate_subscriber |
Deactivate the subscriber (set is_active to false). |
add_tag_to_subscriber |
Add a tag to the subscriber. |
remove_tag_from_subscriber |
Remove a tag from the subscriber. |
make_http_request |
Send an HTTP request to an external URL (webhook). |
List Sequences
Retrieve all sequences for your channel.
GET /api/v1/sequences
Query Parameters
| Parameter | Type | Description |
|---|---|---|
limit |
integer | Maximum number of sequences to return. |
offset |
integer | Number of sequences to skip. |
Example Request
curl -X GET "https://app.sendbroadcast.com/api/v1/sequences?limit=10" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Example Response
{
"data": [
{
"id": 5,
"label": "Welcome Series",
"active": true,
"track_opens": true,
"track_clicks": true,
"use_any_email_server": false,
"email_server_ids": [1],
"init_segment_id": null,
"init_tag": "new-signup",
"parent_sequence_id": null,
"subscribers_count": 1250,
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2025-03-01T12:00:00.000Z"
}
],
"total": 8
}
Get a Sequence
Retrieve details for a single sequence. Pass include_steps=true to include the sequence’s step definitions.
GET /api/v1/sequences/:id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include_steps |
string | Set to "true" to include the sequence steps in the response. |
Example Request
curl -X GET "https://app.sendbroadcast.com/api/v1/sequences/5?include_steps=true" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Example Response
{
"id": 5,
"label": "Welcome Series",
"active": true,
"track_opens": true,
"track_clicks": true,
"use_any_email_server": false,
"email_server_ids": [1],
"init_segment_id": null,
"init_tag": "new-signup",
"parent_sequence_id": null,
"subscribers_count": 1250,
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2025-03-01T12:00:00.000Z",
"steps": [
{
"id": 10,
"action": "entry_point",
"label": "Start",
"parent_id": null,
"true_branch": null
},
{
"id": 11,
"action": "send_email",
"label": "Welcome Email",
"parent_id": 10,
"true_branch": null
},
{
"id": 12,
"action": "delay",
"label": "Wait 2 days",
"parent_id": 11,
"true_branch": null
},
{
"id": 13,
"action": "send_email",
"label": "Getting Started Guide",
"parent_id": 12,
"true_branch": null
}
]
}
Add a Subscriber to a Sequence
Enroll a subscriber into a sequence. The subscriber will begin at the entry point and progress through each step.
POST /api/v1/sequences/:id/add_subscriber
Request Body
Parameters are nested under a subscriber key.
| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber[email] |
string | Yes | Email address of the subscriber to enroll. |
subscriber[first_name] |
string | No | First name (used if creating the subscriber). |
subscriber[last_name] |
string | No | Last name (used if creating the subscriber). |
Example Request
curl -X POST "https://app.sendbroadcast.com/api/v1/sequences/5/add_subscriber" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"email": "[email protected]"
}
}'
Response
Status: 201 Created (empty body)
Error Response
Status: 422 Unprocessable Content (empty body) – the subscriber could not be added, e.g., they are already enrolled.
Remove a Subscriber from a Sequence
Remove a subscriber from a sequence, stopping their progression through the steps.
DELETE /api/v1/sequences/:id/remove_subscriber
Request Body
Parameters are nested under a subscriber key.
| Parameter | Type | Required | Description |
|---|---|---|---|
subscriber[email] |
string | Yes | Email address of the subscriber to remove. |
Example Request
curl -X DELETE "https://app.sendbroadcast.com/api/v1/sequences/5/remove_subscriber" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"email": "[email protected]"
}
}'
Response
Status: 200 OK (empty body)
Error Response
Status: 422 Unprocessable Content (empty body) – the subscriber could not be removed.
Error Responses
| Status Code | Description |
|---|---|
401 Unauthorized |
Missing or invalid API token, or token lacks sequence/subscriber permissions. |
404 Not Found |
Sequence with the given ID does not exist in your channel. |
422 Unprocessable Content |
The operation could not be completed. |
Next: Segments API - Query and manage subscriber segments via API.