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 on the org's contact list. Topics are list-level metadata with no recipient PII, so this endpoint sits behind the narrower api.topics.view scope. SES caps a contact list at 50 topics, so the response is not paginated. subscriber_count is the number of contacts with an explicit OPT_IN preference for the topic. When no contact list is synced, an empty array is returned.

Responses

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

200 All topics on the contact list (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.

origin string enum required

Where the definition is authored. managed topics are editable via this API (and written through to SES); git topics are synced from a connected repository and read-only here (the repo wins).

One of: managed, git

source_path string optional

Repo-relative topic-schema file the definition was synced from. Present only for git-backed topics.

status string enum required

Provenance-only lifecycle state. archived marks a git-backed topic whose name was removed from the repo; it reactivates in place if the name returns.

One of: active, archived

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