Topics
Topics let subscribers opt out of specific content categories while staying on your list.
/api/v1/lists/{listId}/topicsGet all topics for a list. Cursor-paginated (per_page default 25, max 100; cursor for next/previous page).
Path Parameters
listIdintegerThe ID of the parent list.
Response Fields
idintegerThe topic ID.
uuidstringThe topic UUID.
list_idintegerThe parent list ID.
namestringTopic name. Unique within the list.
descriptionstring|nullOptional description.
created_atstringISO 8601 creation timestamp.
metaobjectCursor pagination metadata (path, per_page, next_cursor, prev_cursor).
Request
curl -X GET \
"https://byomailer.com/api/v1/lists/{listId}/topics" \
-H "Authorization: Bearer {your-api-token}" \
-H "Accept: application/json"Response
{
"data": [
{
"id": 1,
"uuid": "topic-uuid-1",
"list_id": 10,
"name": "Product Updates",
"description": "Release notes and feature announcements",
"created_at": "2026-04-15T10:30:00.000000Z"
}
],
"meta": {
"path": "https://byomailer.com/api/v1/lists/10/topics",
"per_page": 25,
"next_cursor": null,
"prev_cursor": null
}
}/api/v1/lists/{listId}/topicsCreate a topic on a list. All existing contacts on the list are auto-subscribed to the new topic asynchronously via a background job.
Path Parameters
listIdintegerThe ID of the parent list.
Body Parameters
namestringHuman-readable topic name. Unique per list.
descriptionstringOptional topic description.
Request
curl -X POST \
"https://byomailer.com/api/v1/lists/{listId}/topics" \
-H "Authorization: Bearer {your-api-token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Updates",
"description": "Release notes and feature announcements"
}'Response
{
"data": {
"id": 2,
"uuid": "topic-uuid-2",
"list_id": 10,
"name": "Product Updates",
"description": "Release notes and feature announcements",
"created_at": "2026-04-15T10:35:00.000000Z"
}
}/api/v1/lists/{listId}/topics/{topicId}Update a topic.
Path Parameters
listIdintegerThe ID of the parent list.
topicIdintegerThe ID of the topic.
Body Parameters
namestringUpdated name.
descriptionstringUpdated description.
Request
curl -X PATCH \
"https://byomailer.com/api/v1/lists/{listId}/topics/{topicId}" \
-H "Authorization: Bearer {your-api-token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"name": "Product News",
"description": null
}'Response
{
"data": {
"id": 2,
"uuid": "topic-uuid-2",
"list_id": 10,
"name": "Product News",
"description": null,
"created_at": "2026-04-15T10:35:00.000000Z"
}
}/api/v1/lists/{listId}/topics/{topicId}Delete a topic and all subscription state for it.
Path Parameters
listIdintegerThe ID of the parent list.
topicIdintegerThe ID of the topic.
Request
curl -X DELETE \
"https://byomailer.com/api/v1/lists/{listId}/topics/{topicId}" \
-H "Authorization: Bearer {your-api-token}" \
-H "Accept: application/json"Response
No content