Skip to main content
POST
Get or create an unsubscribe trigger

Authorizations

Authorization
string
header
default:Bearer brew_your_api_key
required

Send your Brew API key as Authorization: Bearer brew_xxx.

Headers

Idempotency-Key
string

Optional idempotency key for safe retries. Reusing the same key with the same request body returns the original response for 24 hours.

Required string length: 1 - 100
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

Body

application/json
event
enum<string>
required

The Brew event. contact.unsubscribed: a contact unsubscribed with an email unsubscribe link or their mail app’s unsubscribe button.

Available options:
contact.unsubscribed
scope
enum<string>
required

domain: unsubscribes from one marketing sending domain (pass domainId). all: unsubscribes from every email the brand sends.

Available options:
domain,
all
domainId
string

The marketing domain (from GET /v1/domains) whose unsubscribe list this trigger watches. Required when scope is domain; omit for all.

Minimum string length: 1

Response

The trigger already existed for this scope.

triggerEventId
string
required
Required string length: 1 - 256
title
string
required
Required string length: 1 - 120
provider
enum<string>
required
Available options:
brew_api,
clerk,
stripe,
shopify,
stytch,
supabase,
workos,
framer,
revenuecat,
custom,
brew_event
payloadSchema
object
required
createdAt
string<date-time>
required
updatedAt
string<date-time>
required
created
boolean
required

True when this call created the trigger; false when it already existed.

description
string
Maximum string length: 2000
providerEventKey
string
brewEvent
object
skill
string