Audiences
Campaign audiences and their contacts - push signups into a marketing audience.
/audiencesList audiences
Returns a cursor-paginated list of the organization's campaign audiences (metadata only - the recipient contacts are paginated separately via the contacts sub-resource). Soft-deleted audiences are excluded. Requires scope: audiences:read.
Response 200
Errors
/audiencesCreate an audience
Provisions a new, empty audience so you can push contacts into it from your own systems. The audience is created with source "api" and zero recipients; add contacts with the contacts sub-resource. Supports idempotent retries via the Idempotency-Key header. Requires scope: audiences:write.
Request body
namerequiredResponse 201
idrequiredobjectrequirednamerequiredsourcerequiredcountrequiredcreatedAtupdatedAtErrors
/audiences/{audienceId}Retrieve an audience
Returns a single audience by id (metadata only). Returns 404 if the audience is missing, soft-deleted, or belongs to another organization. Requires scope: audiences:read.
Parameters
Path
audienceIdrequiredResponse 200
idrequiredobjectrequirednamerequiredsourcerequiredcountrequiredcreatedAtupdatedAtErrors
/audiences/{audienceId}/contactsList audience contacts
Returns a cursor-paginated list of the contacts in an audience's send pool, ordered by email. Each contact carries a `suppressed` flag reflecting the organization's suppression list - a suppressed address stays listed but is skipped at send. The cursor (`starting_after`) is a contact's email. Requires scope: audiences:read.
Parameters
Path
audienceIdrequiredResponse 200
Errors
/audiences/{audienceId}/contactsAdd a contact to an audience
Adds or upserts a contact into the audience's send pool. Fire this on each new signup to auto-sync your audience: new emails are added, and pushing an email that already exists updates its name fields instead of duplicating (the response `created` flag tells you which happened). Email match is case-insensitive. A suppressed/unsubscribed address is NOT added to the send pool - the response returns success with `suppressed: true` so you know it will not receive mail. Supports idempotent retries via the Idempotency-Key header. Requires scope: audiences:write.
Parameters
Path
audienceIdrequiredRequest body
emailrequiredfirstNamelastNameResponse 200
objectrequiredaudienceIdrequiredemailrequiredfirstNamelastNamecreatedrequiredaddedrequiredsuppressedrequiredcountrequiredErrors
/audiences/{audienceId}/contacts/{email}Remove a contact from an audience
Removes a contact from the audience's send pool by email. Idempotent: removing an email that is not in the audience returns a clean result with `removed: false` (never a 404). Updates the audience count. Requires scope: audiences:write.
Parameters
Path
audienceIdrequiredemailrequiredResponse 200
objectrequiredaudienceIdrequiredemailrequireddeletedrequiredremovedrequiredcountrequired