Skip to main content
PUT
cURL
Declaratively merge a whole catalog in one call — the primitive for a one-off “set up my project’s preferences” script. Each item is upserted by its natural key (channel, topic, event, medium): new entries are inserted, existing ones have their label and default updated. Entries not in the array are left untouched.
Pass ?prune=true to also delete entries absent from the array, making it your entire desired catalog. Pruning un-catalogs a (target, medium), which turns a non-in_app medium off for recipients relying on the default — so it is opt-in. Deliberate one-off removals go through delete.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer bv_xxxxxxxxx, where bv_xxxxxxxxx is your API Key with Full access scope.

Query Parameters

prune
boolean
default:false

When true, catalog entries absent from the array are deleted, making the array the entire desired catalog. Pruning un-catalogs a (target, medium), which turns a non-in_app medium off for recipients relying on the default — so it is opt-in.

Body

application/json
channel
string
required

Broad category (e.g. "digest").

topic
string
required

Subcategory. any matches all topics under the channel/event; none is the base channel/event.

event
string
required

Event that triggers the notification (e.g. "sent").

label
string
required

Human-readable label.

default_enabled
boolean
required

The project-level default for recipients who have set no preference of their own.

medium
enum<string>
default:in_app

The medium this catalog entry gates. Defaults to in_app.

Available options:
in_app,
email

Response

200 - application/json

The full resulting catalog.