Skip to main content

Subscriber Lists

Subscriber lists group subscribers for use in campaigns. Lists can be static (manually managed) or dynamic (rule-based segments).

tip

For the full request/response schema, see the interactive API Reference.

Creating a List

POST /api/v1/users/me/subscriber-lists

Static List

{
"name": "Newsletter Subscribers",
"description": "Users who opted in to the weekly newsletter",
"type": "static"
}

Dynamic List (Segment)

{
"name": "Pro Users in US",
"description": "Subscribers with pro plan in US timezone",
"type": "dynamic",
"filter_rules": [
{
"field": "custom_fields.plan",
"operator": "equals",
"value": "pro"
},
{
"field": "timezone",
"operator": "contains",
"value": "America"
}
]
}

Dynamic lists automatically include all subscribers matching the filter rules. Membership is calculated at query time.

Listing Lists

GET /api/v1/users/me/subscriber-lists?page=0&size=20

Response includes member_count for each list.

Getting a List

GET /api/v1/users/me/subscriber-lists/{id}

Updating a List

PUT /api/v1/users/me/subscriber-lists/{id}

All fields are optional.

Deleting a List

DELETE /api/v1/users/me/subscriber-lists/{id}

Managing Members (Static Lists)

Add a Subscriber

POST /api/v1/users/me/subscriber-lists/{id}/members
{
"subscriber_id": 42
}

Only works for static lists. Adding a subscriber to a dynamic list returns an error.

Remove a Subscriber

DELETE /api/v1/users/me/subscriber-lists/{id}/members
{
"subscriber_id": 42
}

List Members

GET /api/v1/users/me/subscriber-lists/{id}/members?page=0&size=20

Preview Segment

Test filter rules before creating a dynamic list:

POST /api/v1/users/me/subscriber-lists/preview-segment
{
"filter_rules": [
{
"field": "status",
"operator": "equals",
"value": "subscribed"
},
{
"field": "language",
"operator": "equals",
"value": "en"
}
]
}

Response:

{
"success": true,
"data": {
"count": 1284
}
}

Filter Rules

Each rule has three properties:

PropertyDescription
fieldSubscriber field to match (e.g., status, language, timezone, custom_fields.plan)
operatorComparison operator (equals, contains, etc.)
valueValue to compare against

Filter rules are combined with AND logic — subscribers must match all rules to be included.