Docs

Topics

A topic is an opt-in/opt-out category a broadcast can target, so contacts unsubscribe from one topic without losing every other subscription. /topics reference.

POST/topicsCreate a topic

default_subscription (opt_in or opt_out) can't change after creation — a contact's own subscription override takes precedence when one exists.

curl -X POST https://api.irisend.com/topics \
  -H "Authorization: Bearer $IRISEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Product updates",
    "default_subscription": "opt_in",
    "description": "Release notes and roadmap."
  }'
ResponseJSON
{ "object": "topic", "id": "2e5e8840-4584-4387-a45f-ee1189e52053" }
GET/topicsList topics
curl https://api.irisend.com/topics \
  -H "Authorization: Bearer $IRISEND_API_KEY"
ResponseJSON
{
  "object": "list",
  "has_more": false,
  "data": [
    { "object": "topic", "id": "2e5e8840-4584-4387-a45f-ee1189e52053", "name": "Product updates", "default_subscription": "opt_in", "description": "Release notes and roadmap.", "created_at": "2026-09-25T09:00:12.481Z" }
  ]
}
GET/topics/:idRetrieve a topic
curl https://api.irisend.com/topics/2e5e8840-4584-4387-a45f-ee1189e52053 \
  -H "Authorization: Bearer $IRISEND_API_KEY"
PATCH/topics/:idUpdate a topic

name and description only.

curl -X PATCH https://api.irisend.com/topics/2e5e8840-4584-4387-a45f-ee1189e52053 \
  -H "Authorization: Bearer $IRISEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "description": "Release notes, roadmap, and incident history." }'
ResponseJSON
{ "object": "topic", "id": "2e5e8840-4584-4387-a45f-ee1189e52053", "name": "Product updates", "default_subscription": "opt_in", "description": "Release notes, roadmap, and incident history.", "created_at": "2026-09-25T09:00:12.481Z" }
DELETE/topics/:idDelete a topic
curl -X DELETE https://api.irisend.com/topics/2e5e8840-4584-4387-a45f-ee1189e52053 \
  -H "Authorization: Bearer $IRISEND_API_KEY"
ResponseJSON
{ "object": "topic", "id": "2e5e8840-4584-4387-a45f-ee1189e52053", "deleted": true }