Scopes
Pick the lists
There are three kinds of list, and each goes in its own field of the send body.
Smart list identifiers are lowercase strings:
subscribers, auto_renewing, non_renewing, followers, free_trial_subscribers, expired_subscribers, spent_more_than_50, muted, creators. The smart list response names each one in a uuid key for backward compatibility, and the body also accepts the deprecated alias smartListUuids. Send smartListIds in new code.
Each custom list item carries uuid, name, membersCount and createdAt.
Dynamic lists are available to creators who have dynamic lists enabled, and the dynamic list endpoints answer 403 for other accounts. See Build dynamic lists.
Send the message
POST /chats/mass-messages returns 201. The body takes these fields:
The optional
Idempotency-Key header makes a send safe to retry. Reuse the same key on a retry and the original result is replayed once the first attempt finishes. Two cases return 409: a retry while the first attempt is still running, and a key reused for a different message. Keys are scoped to your app and the sending creator and are remembered for 24 hours.
201 response:
Check the result
GET /chats/mass-messages lists the creator’s mass messages with page and size. Each item carries uuid, text, status, price, createdAt, publishedAt, scheduledAt, recipientCount, viewCount, purchaseCount, totalRevenue (USD cents), mediaUuids, includedLists and excludedLists. Status values are SENT, UNSENT, SENDING, FAILED, MODERATED and SCHEDULED. recipientCount stays 0 while the status is SCHEDULED. Pass includeDeleted=true to include deleted messages, which report UNSENT.
To read the final recipientCount, poll the list until the item’s status leaves SENDING or SCHEDULED, or wait for the creator.message.mass_sent webhook event, which fires when a send completes.
For a scheduled message, PATCH /chats/mass-messages/{messageUuid} updates it and DELETE /chats/mass-messages/{messageUuid} cancels it.
TypeScript example
This script puts the steps together. It lists the smart lists, sends to subscribers and polls for the final count.Agency
Agencies send on a creator’s behalf withPOST /creators/{creatorUserUuid}/chats/mass-messages. The creator-scoped routes need read:creator in addition to the scopes in the Scopes table. GET, PATCH and DELETE have the same creator-scoped twins under /creators/{creatorUserUuid}/chats/mass-messages.