Skip to main content
PATCH
Update an audience

Authorizations

Authorization
string
header
default:Bearer brew_your_api_key
required

Send your Brew API key as Authorization: Bearer brew_xxx.

Headers

X-Brand-Id
string

The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise 400 BRAND_ID_REQUIRED — there is no default brand); list ids with GET /v1/brands. Brand-scoped credentials may omit it, and sending a different brand returns 403 BRAND_SCOPE_MISMATCH. A brand outside your organization returns 404 BRAND_NOT_FOUND.

Required string length: 1 - 64

Path Parameters

audienceId
string
required

Audience id (opaque Convex document id) returned by POST /v1/audiences and listed by GET /v1/audiences.

Required string length: 1 - 64
Example:

"jn7a8w4q8m9k2p1x7c3b5v6n9h7s2d4f"

Body

application/json
name
string
Required string length: 1 - 200
filters
object

Filter clauses combined by logicalOperator. For specific addresses use { field: "email", operator: "in", value: ["a@x.com", ...] } — a list over 100 addresses is auto-converted into a stamped custom-field snapshot of the listed EXISTING contacts (addresses without a contact record are skipped; 10,000 max).

expectedUpdatedAt
string<date-time>

Optional optimistic-concurrency precondition from the latest audience read. The update returns 409 if the row changed meanwhile.

Response

Updated.

audienceId
string
required
Required string length: 1 - 64
audienceName
string
required
Required string length: 1 - 200
filters
object
required
count
integer
required
Required range: x >= 0
createdAt
string<date-time>
required
updatedAt
string<date-time>
required
materializationStatus
enum<string>
Available options:
pending,
running,
ready,
failed
build
object
emailListMaterializations
object[]

Present when an email in [...] clause with more than 100 addresses was auto-converted into a stamped custom-field snapshot.