List subscription topics

Search Documentation

Search across all developer documentation

topics

List subscription topics

GET /v1/topics
Auth required api.topics.view

Returns every subscription topic in the workspace. Topics are metadata with no recipient PII, so this endpoint sits behind the narrower api.topics.view scope. The response is not paginated. subscriber_count is the number of contacts with an explicit OPT_IN preference for the topic. is_default marks the workspace's default topic, the one a broadcast or marketing workflow send uses when it names none. A workspace with no topics gets an empty array.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

200 All topics in the workspace (unpaginated) application/json
data array<object> required

Each entry in data:

name string required

Stable topic identifier used in filters and preferences.

display_name string required
description string required
default_subscription_status string enum required

One of: OPT_IN, OPT_OUT

subscriber_count integer<int64> required

Contacts effectively subscribed to this topic — those whose explicit preference is OPT_IN, plus those with no explicit preference on a topic whose default_subscription_status is OPT_IN. Excludes master-unsubscribed contacts. This is the set that would be mailed.

status string enum required

Lifecycle state. archived never blocks the topic's use.

One of: active, archived

is_default boolean required

true for the workspace's default topic: the topic a broadcast or a marketing workflow send uses when it names none. It cannot be deleted until another topic is made the default in Settings. At most one topic is the default; a workspace without a default topic reports false on every topic.

ses_linked boolean required

true when the topic is linked to a topic on your AWS account's SES contact list. Opt-outs on a linked topic sync both ways: one made on the SES-hosted unsubscribe page reaches this topic, and one made here reaches SES. Linking is managed in the dashboard (Adopt, Unlink, Move); it cannot be changed through the API.

created_at string<date-time> required
updated_at string<date-time> required
pagination object required

Fields of pagination:

has_more boolean required
next_cursor string | null optional
401 Missing, malformed, or unknown API key application/problem+json
403 Key lacks the required scope or plan limit violated application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json