---
canonical_url: "https://docs.composio.dev/toolkits/braze"
markdown_url: "https://docs.composio.dev/toolkits/braze.md"
product: "platform"
version: null
last_updated: null
---

# Braze

Braze is a customer engagement platform for managing user data, messaging, campaigns, analytics, catalogs, templates, and workspace automation.

- **Category:** marketing automation
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 119
- **Triggers:** 0
- **Slug:** `BRAZE`
- **Version:** 20261010_00

## Tools

### Blocklist Emails

**Slug:** `BRAZE_BLOCKLIST_EMAILS`

HIGH IMPACT: globally unsubscribe and mark as hard bounced one to 50 exact email addresses. This can affect every profile sharing an address and prevent delivery across campaigns. Success is rejected unless Braze explicitly returns message=success. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | One valid email address or an array of 1 to 50 valid email addresses. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Cancel Segment Exports

**Slug:** `BRAZE_CANCEL_SEGMENT_EXPORTS`

Ask Braze to cancel all ongoing exports for a segment. Braze documents no response confirmation schema, so a successful call is only the provider response and must not be treated as proof that cancellation completed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segment_id` | string | Yes | Braze segment API identifier whose ongoing exports should be canceled. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Schedule Campaign Trigger

**Slug:** `BRAZE_CREATE_CAMPAIGN_TRIGGER_SCHEDULE`

HIGH IMPACT: schedule one durable API-triggered campaign dispatch. Provide up to 50 recipients, optionally intersected with a Connected Audience. Audience-only targeting requires broadcast=true, which cannot include individual recipients. Recipient trigger properties override shared keys. Requires a dashboard API-triggered campaign and campaigns.trigger.schedule.create. Acceptance and a schedule ID do not prove delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `send_id` | string | No | Optional custom send identifier. |
| `audience` | object | No | Connected Audience filters. |
| `schedule` | object | Yes | Future send schedule. |
| `broadcast` | boolean | No | Explicitly target the full dashboard-configured audience. |
| `recipients` | array | No | One to 50 specific recipients. |
| `campaign_id` | string | Yes | API-triggered campaign identifier. |
| `trigger_properties` | object | No | Campaign personalization shared by all recipients. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Schedule Canvas Trigger

**Slug:** `BRAZE_CREATE_CANVAS_TRIGGER_SCHEDULE`

HIGH IMPACT: schedule one durable API-triggered Canvas entry. Provide up to 50 recipients, optionally intersected with a Connected Audience. Audience-only targeting requires broadcast=true, which cannot include individual recipients. Per-recipient context overrides shared context. Requires a dashboard API-triggered Canvas and canvas.trigger.schedule.create. Users are recorded as entries only at scheduled time; acceptance is not delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `context` | object | No | Canvas context shared by first-step messages. |
| `audience` | object | No | Connected Audience filters. |
| `schedule` | object | Yes | Future Canvas entry schedule. |
| `broadcast` | boolean | No | Explicitly target the full dashboard-configured audience. |
| `canvas_id` | string | Yes | API-triggered Canvas identifier. |
| `recipients` | array | No | One to 50 specific recipients. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Catalog

**Slug:** `BRAZE_CREATE_CATALOG`

Create one persistent catalog in the connected Braze workspace. The catalog name must be unique and identifies the resource for later reads or deletion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Unique catalog name. Creating the catalog persists it in the connected Braze workspace until it is explicitly deleted. |
| `fields` | array | Yes | Catalog field definitions in order. Field names must be unique; the first field must be named id and have type string. |
| `description` | string | Yes | Human-readable purpose of the catalog. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Catalog Fields

**Slug:** `BRAZE_CREATE_CATALOG_FIELDS`

Asynchronously create up to 50 fields in one Braze catalog. Requires the immutable catalogs.create_fields API-key permission and shares a 50 requests/minute limit with asynchronous catalog field and selection endpoints. A 202 response only confirms acceptance; Braze documents no job ID or terminal result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | array | Yes | Fields to create. A request supports at most 50 fields and a catalog supports at most 500 total fields. Geo values later use [longitude, latitude]. |
| `catalog_name` | string | Yes | Exact name of the catalog that will receive the fields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Catalog Item

**Slug:** `BRAZE_CREATE_CATALOG_ITEM`

Synchronously create one Braze catalog item by exact item ID. Requires the immutable catalogs.create_item API-key permission and shares a 50 requests/minute synchronous item limit. Existing IDs and body-level id fields are rejected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Exactly one item object containing all catalog attributes but no id; the id is supplied by item_id in the path. Arbitrary workspace fields are preserved. |
| `item_id` | string | Yes | ID for the new catalog item. |
| `catalog_name` | string | Yes | Exact catalog name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Multiple Catalog Items

**Slug:** `BRAZE_CREATE_CATALOG_ITEMS`

Asynchronously create up to 50 Braze catalog items. Requires the immutable catalogs.add_items API-key permission and shares a 16,000 requests/minute limit with asynchronous catalog item endpoints. A 202 response confirms acceptance only; Braze documents no job ID, per-item result, or terminal completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | One to 50 new items. Every item requires a unique id and may contain arbitrary attributes matching fields already defined in the catalog. |
| `catalog_name` | string | Yes | Exact name of the destination catalog. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Catalog Selection

**Slug:** `BRAZE_CREATE_CATALOG_SELECTION`

Asynchronously create one Braze catalog selection. Requires the immutable catalogs.create_selection API-key permission and shares a 50 requests/minute limit with asynchronous field and selection endpoints. Geo filters force nearest-first ordering. Storage and selection-count gates may reject the request. A 202 response confirms acceptance only and includes no documented job result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `selection` | object | Yes | Selection criteria to create. |
| `catalog_name` | string | Yes | Exact name of the catalog for the selection. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Content Block

**Slug:** `BRAZE_CREATE_CONTENT_BLOCK`

Persist a reusable HTML or text Content Block in the connected Braze workspace. This creates content only; it does not send or deliver a message.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Unique Content Block name under 100 characters, using only letters, numbers, hyphens, and underscores. |
| `tags` | array | No | Existing Braze tag names to assign; this endpoint does not create tags. |
| `state` | string ("active" | "draft") | No | Persist as active or draft. Braze defaults omitted state to active. |
| `content` | string | Yes | HTML or text content to persist; Braze requires it to be under 51,200 UTF-8 bytes. |
| `description` | string | No | Optional non-blank description under 250 characters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Email Template

**Slug:** `BRAZE_CREATE_EMAIL_TEMPLATE`

Persist an HTML email template on Braze's Templates & Media page. This creates template content only; it does not send or deliver an email.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | HTML-capable email body to persist, up to Braze's documented 400 KB limit. |
| `tags` | array | No | Existing Braze tag names to assign; this endpoint does not create tags. |
| `subject` | string | Yes | Email subject line; Liquid is allowed when valid in Braze. |
| `preheader` | string | No | Optional preview preheader used by supporting email clients. |
| `template_name` | string | Yes | Name of the stored email template. |
| `plaintext_body` | string | No | Optional plain-text alternative body. |
| `should_inline_css` | boolean | No | Enable or disable CSS inlining; omit to use the workspace default. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Media Library Asset

**Slug:** `BRAZE_CREATE_MEDIA_LIBRARY_ASSET`

Upload one asset to Braze from a public HTTP(S) URL or local file. URL mode sends JSON; local-file mode uses the multipart asset_file contract implemented by Braze's official MCP server and does not send base64. Images, vectors, and documents are limited to 5 MB; ZIP files are limited to 50 MB total and 5 MB per supported root-level file. Videos and VCF files are dashboard-only. Media Library Public APIs must be enabled; free-trial workspaces have a default 200-asset limit. Rate limit: 100/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Optional media-library display name; omit to use the source filename. |
| `asset_url` | string | No | Publicly accessible HTTP(S) URL Braze will download. Provide this or asset_file, never both. |
| `asset_file` | object | No | A local file supplied to Composio for upload to the Braze media library. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Message Schedule

**Slug:** `BRAZE_CREATE_MESSAGE_SCHEDULE`

HIGH IMPACT: schedule API-only channel messages for future processing. Individual targets are limited to 50 combined IDs and aliases; otherwise explicit broadcast=true is required. Requires messages.schedule.create. The returned schedule and dispatch IDs confirm acceptance only and never delivery; rendered payload size, subscription state, and channel eligibility remain gates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `send_id` | string | No | Optional custom send identifier. |
| `audience` | object | No | Connected Audience filters. |
| `messages` | object | Yes | One or more scheduled channel message objects. |
| `schedule` | object | Yes | Future processing schedule. |
| `broadcast` | boolean | No | Explicitly permit a segment or audience broadcast. |
| `segment_id` | string | No | Dashboard segment identifier. |
| `campaign_id` | string | No | Optional campaign identifier for attribution. |
| `user_aliases` | array | No | Existing user aliases. |
| `external_user_ids` | array | No | Existing external user IDs. |
| `override_messaging_limits` | boolean | No | Ignore campaign frequency caps. |
| `recipient_subscription_state` | string ("opted_in" | "subscribed" | "all") | No | Minimum subscription state eligible for this send. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Preference Center

**Slug:** `BRAZE_CREATE_PREFERENCE_CENTER`

HIGH IMPACT: durably create and optionally activate a Braze-hosted preference center. Its name cannot be changed after creation. Confirm HTML, state, and identifiers before calling. Limited to 10 requests/minute per workspace; Braze publishes no separate plan-tier gate.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Immutable name containing only letters, numbers, hyphens, and underscores. |
| `state` | string ("active" | "draft") | No | Initial state; Braze defaults to active when omitted. |
| `options` | object | No | Optional viewport and favicon configuration. |
| `confirmation_page_html` | string | Yes | Complete HTML for the hosted confirmation page. |
| `preference_center_title` | string | No | Page title; Braze defaults this to Preference Center when omitted. |
| `preference_center_page_html` | string | Yes | Complete HTML for the hosted preference-center page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create SDK Authentication Key

**Slug:** `BRAZE_CREATE_SDK_AUTHENTICATION_KEY`

HIGH IMPACT SECURITY OPERATION: create an SDK Authentication key from an RSA public key for one exact app. Set make_primary only when the new key should immediately replace the current primary key. Never submit private-key material. Braze permits at most three keys per app. Success is rejected unless Braze returns a new key ID. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Exact Braze App API identifier. |
| `description` | string | Yes | Non-empty administrative description for the key. |
| `make_primary` | boolean | No | Whether to make this key the primary SDK Authentication key when it is created. Omit to leave the current primary key unchanged. |
| `rsa_public_key_str` | string | Yes | Complete PEM-formatted RSA public key. Never send a private key. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Send ID

**Slug:** `BRAZE_CREATE_SEND_ID`

Create or assign a send ID for programmatic message-performance tracking. Every explicit campaign_id and send_id combination counts toward the workspace limit of 100 custom send IDs/day. Requires sends.id.create; this action creates tracking identity and does not send a message.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `send_id` | string | No | Optional non-blank caller-selected send identifier. |
| `campaign_id` | string | Yes | Campaign identifier for performance tracking. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create User Aliases

**Slug:** `BRAZE_CREATE_USER_ALIASES`

Add up to 50 Braze aliases to existing external-ID users or create alias-only profiles. Requires users.alias.new. Duplicate alias-label/name pairs can return success without changing a profile; a 201-style success is acceptance, not proof that every alias was attached. Shares a 20,000 requests/minute rate limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_aliases` | array | Yes | One to 50 unique aliases to add. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Campaign Trigger Schedule

**Slug:** `BRAZE_DELETE_CAMPAIGN_TRIGGER_SCHEDULE`

HIGH IMPACT: durably cancel a scheduled API-triggered campaign before send time. This cannot undo sends already processed. Last-second cancellation is best-effort and may affect all, some, or none of the target users. Requires campaigns.trigger.schedule.delete; an accepted response is not proof that no sends occurred.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `campaign_id` | string | Yes | API-triggered campaign identifier. |
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Canvas Trigger Schedule

**Slug:** `BRAZE_DELETE_CANVAS_TRIGGER_SCHEDULE`

HIGH IMPACT: durably cancel a scheduled API-triggered Canvas before entry time. This cannot undo entries already processed. Last-second cancellation is best-effort and may affect all, some, or none of the target users. Requires canvas.trigger.schedule.delete; acceptance is not proof that no Canvas entries occurred.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `canvas_id` | string | Yes | API-triggered Canvas identifier. |
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Catalog

**Slug:** `BRAZE_DELETE_CATALOG`

Permanently delete one Braze catalog and all of its contents by exact catalog name through DELETE /catalogs/{catalog_name}. This cannot be undone and requires catalogs.delete permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `catalog_name` | string | Yes | Exact name of the Braze catalog to permanently delete. Confirm that it identifies the intended catalog because deletion removes all contents. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Catalog Field

**Slug:** `BRAZE_DELETE_CATALOG_FIELD`

Asynchronously request deletion of one field by exact catalog and field name. Requires the immutable catalogs.delete_fields API-key permission and shares a 50 requests/minute field/selection limit. Fields used by a selection or as an inventory field cannot be deleted. A 202 response is acceptance, not completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `field_name` | string | Yes | Exact name of the catalog field to delete. |
| `catalog_name` | string | Yes | Exact name of the catalog containing the field. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Catalog Item

**Slug:** `BRAZE_DELETE_CATALOG_ITEM`

Request deletion of one catalog item by exact catalog name and item ID. HTTP 202 with message=success confirms acceptance, not terminal deletion. Requires the immutable catalogs.delete_item API-key permission and shares a 50 requests/minute synchronous item limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | string | Yes | Exact ID of the catalog item to delete. |
| `catalog_name` | string | Yes | Exact name of the catalog containing the item. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Multiple Catalog Items

**Slug:** `BRAZE_DELETE_CATALOG_ITEMS`

Asynchronously request deletion of up to 50 catalog items by exact IDs. Requires the immutable catalogs.delete_items API-key permission and shares a 16,000 requests/minute asynchronous item limit. A 202 response is only request acceptance; Braze returns no documented job ID or per-item deletion proof.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | One to 50 exact, unique item IDs to request for asynchronous deletion. |
| `catalog_name` | string | Yes | Exact name of the catalog containing the items. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Catalog Selection

**Slug:** `BRAZE_DELETE_CATALOG_SELECTION`

Asynchronously request deletion of a selection by exact catalog and selection name. Requires the immutable catalogs.delete_selection API-key permission and shares a 50 requests/minute field/selection limit. A 202 response confirms acceptance only; Braze documents no terminal deletion result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `catalog_name` | string | Yes | Exact name of the catalog containing the selection. |
| `selection_name` | string | Yes | Exact name of the selection to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Message Schedule

**Slug:** `BRAZE_DELETE_MESSAGE_SCHEDULE`

HIGH IMPACT: durably cancel an API-only message schedule before it is sent. This cannot undo a send already processed. Requires messages.schedule.delete. An accepted cancellation does not prove that a send already being processed was stopped.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete SDK Authentication Key

**Slug:** `BRAZE_DELETE_SDK_AUTHENTICATION_KEY`

HIGH IMPACT SECURITY OPERATION: permanently delete one exact non-primary SDK Authentication key from one exact app. Braze refuses deletion of the primary key; select another primary first. Success is rejected unless the returned remaining-key list excludes the exact requested key ID. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Exact Braze App API identifier. |
| `key_id` | string | Yes | Exact non-primary SDK Authentication key ID to permanently delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Users

**Slug:** `BRAZE_DELETE_USERS`

Permanently queue deletion of up to 50 users using exactly one identifier type. Requires users.delete and shares a 20,000 requests/minute rate limit. This cannot be undone; success reports queued count, not completion, and cache propagation can take up to five minutes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `braze_ids` | array | No | Braze IDs to delete. |
| `external_ids` | array | No | External IDs to delete. |
| `user_aliases` | array | No | Aliases to delete. |
| `phone_numbers` | array | No | Prioritized E.164 phone identifiers to delete. |
| `email_addresses` | array | No | Prioritized email identifiers to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Duplicate Campaign

**Slug:** `BRAZE_DUPLICATE_CAMPAIGN`

HIGH IMPACT: request an asynchronous, durable duplicate of a Braze campaign. The duplicate persists until explicitly deleted and can consume workspace campaign capacity. HTTP 202 confirms only that Braze accepted the request, not that campaign creation completed. Existing tags only; a supplied tag list replaces source tags. Requires campaigns.duplicate and is limited to 100 calls/minute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name for the duplicated campaign. |
| `tag_names` | array | No | Existing tag names; when supplied these replace source tags. |
| `campaign_id` | string | Yes | Source campaign identifier. |
| `description` | string | No | Description for the duplicate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Duplicate Canvas

**Slug:** `BRAZE_DUPLICATE_CANVAS`

HIGH IMPACT: request an asynchronous, durable duplicate of a Braze Canvas. The duplicate persists until explicitly deleted and can consume workspace Canvas capacity. HTTP 202 confirms only acceptance, not completed Canvas creation. Existing tags only; a supplied tag list replaces source tags. Requires canvas.duplicate and is limited to 100 calls/minute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name for the duplicated Canvas. |
| `canvas_id` | string | Yes | Source Canvas identifier. |
| `tag_names` | array | No | Existing tag names; when supplied these replace source tags. |
| `description` | string | No | Description for the duplicate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### End Live Activity

**Slug:** `BRAZE_END_LIVE_ACTIVITY`

IRREVERSIBLE: end an SDK-registered iOS Live Activity with a final ContentState. An optional past dismissal_date removes it from the UI immediately. Requires messages.live_activity.update. HTTP 201 confirms receipt only, not APNs dispatch, display, dismissal, or delivery. An ended activity cannot be resumed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Braze app API identifier. |
| `stale_date` | string | No | Optional time at which the final content becomes stale. |
| `activity_id` | string | Yes | Registered activity push-token tag to end. |
| `notification` | object | No | Optional final alert shown when ending the activity. |
| `content_state` | object | Yes | Final ContentState matching the app-defined shape. |
| `dismissal_date` | string | No | Optional time to remove the ended activity from the UI. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Global Control Group Users

**Slug:** `BRAZE_EXPORT_GLOBAL_CONTROL_GROUP_USERS`

Start an asynchronous export of all current Global Control Group users. The response only acknowledges dispatch and identifies files; completion arrives through the callback, temporary URL, or configured cloud storage. Files are generally split per 5,000 users.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `output_format` | string ("zip" | "gzip") | No | Archive format; gzip is available when writing to configured cloud storage. |
| `fields_to_export` | array | Yes | Specific supported user fields to export; required for portable behavior on accounts created since April 2021. |
| `callback_endpoint` | string | No | Optional endpoint Braze POSTs to when the asynchronous export is ready; without cloud storage the callback also contains url. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Segment Users

**Slug:** `BRAZE_EXPORT_SEGMENT_USERS`

Start an asynchronous newline-delimited JSON export for one segment. The response acknowledges dispatch, not completion. Only one export per segment may run at once, with at most 100 concurrent segment exports company-wide; event, purchase, campaign, and Canvas history fields contain 90 days of detail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segment_id` | string | Yes | Braze segment API identifier. |
| `output_format` | string ("zip" | "gzip") | No | Archive format; gzip is supported when using configured cloud storage. |
| `fields_to_export` | array | Yes | User fields to export; required for portable behavior and smaller files. |
| `callback_endpoint` | string | No | Optional endpoint Braze POSTs to after the export is ready. |
| `custom_attributes_to_export` | array | No | Up to 500 specific custom attribute names. Do not include custom_attributes in fields_to_export when using this filter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Users by Identifiers

**Slug:** `BRAZE_EXPORT_USERS_BY_IDENTIFIERS`

Return user profiles matching one or more Braze, external, alias, device, email, or phone identifiers; this reads profiles and does not track events or consume data points.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `phone` | string | No | Phone number to match in E.164 format: a leading + followed by up to 15 digits, beginning with a nonzero country code digit. Do not include spaces or formatting punctuation, or combine this with device_id or email_address. |
| `braze_id` | string | No | Braze-generated user identifier to match. |
| `device_id` | string | No | Device identifier to match. Do not combine this with email_address or phone. |
| `external_ids` | array | No | External user IDs to match, up to 50 per request. |
| `user_aliases` | array | No | User aliases to match, up to 50 per request; every item requires both the alias name and alias label. |
| `email_address` | string | No | Email address to match. Do not combine this with device_id or phone. |
| `fields_to_export` | array | Yes | One or more Braze profile fields to return. This is required for portable behavior across workspaces and to minimize exported data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate Preference Center URL

**Slug:** `BRAZE_GENERATE_PREFERENCE_CENTER_URL`

Generate a user-specific URL for an API-created or drag-and-drop Braze preference center. HIGH IMPACT: the returned URL is a sensitive capability that can change that user's subscriptions. Do not log, publish, or share it. This does not support legacy preference centers. Limited to 1,000 requests/minute per workspace.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `external_id` | string | Yes | Braze external user identifier for whom to generate the URL. |
| `preference_center_api_id` | string | Yes | Braze preference-center API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign

**Slug:** `BRAZE_GET_CAMPAIGN`

Return configuration and delivery details for one campaign identified by its Braze campaign ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `campaign_id` | string | Yes | Braze campaign API identifier, obtainable from List Campaigns. |
| `post_launch_draft_version` | boolean | No | Whether to return unpublished post-launch draft changes instead of the current launched campaign version. Braze defaults this to false when omitted. |
| `include_has_translatable_content` | boolean | No | Whether each message should include has_translatable_content. Braze defaults this to false when omitted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign Analytics

**Slug:** `BRAZE_GET_CAMPAIGN_ANALYTICS`

Get up to 100 daily campaign analytics points. Dashboard and Currents aggregation definitions can differ.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |
| `campaign_id` | string | Yes | Braze campaign API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Campaign Translation Source

**Slug:** `BRAZE_GET_CAMPAIGN_TRANSLATION_SOURCE`

Read the default source values inside translation tags for one campaign message variation. Requires campaigns.translations.get, translation tags on a multi-language message, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `campaign_id` | string | Yes | Braze campaign ID. |
| `message_variation_id` | string | Yes | Message variation ID within the campaign. |
| `post_launch_draft_version` | boolean | No | True returns the latest draft; false or omitted returns the latest live version. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Canvas

**Slug:** `BRAZE_GET_CANVAS`

Return configuration and step details for one Canvas identified by its Braze Canvas ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `canvas_id` | string | Yes | Braze Canvas API identifier, obtainable from List Canvases. |
| `post_launch_draft_version` | boolean | No | Whether to return unpublished post-launch draft changes instead of the current launched Canvas version. Braze defaults this to false when omitted. |
| `include_has_translatable_content` | boolean | No | Whether each Canvas message should include has_translatable_content. Braze defaults this to false when omitted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Canvas Analytics

**Slug:** `BRAZE_GET_CANVAS_ANALYTICS`

Export Canvas daily time-series analytics with optional variant, step, and deleted-step breakdowns. Dashboard and Currents definitions can differ.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `length` | string | No | Number of days as a string from 1 through 14; required if starting_at is omitted. |
| `canvas_id` | string | Yes | Braze Canvas API identifier. |
| `ending_at` | string | Yes | Required timezone-aware ISO 8601 end timestamp. |
| `starting_at` | string | No | Optional timezone-aware ISO 8601 start timestamp. |
| `include_step_breakdown` | boolean | No | Include Canvas step statistics. |
| `include_deleted_step_data` | boolean | No | Include statistics for deleted Canvas steps. |
| `include_variant_breakdown` | boolean | No | Include Canvas variant statistics. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Canvas Analytics Summary

**Slug:** `BRAZE_GET_CANVAS_ANALYTICS_SUMMARY`

Export Canvas analytics rollups with optional variant, step, and deleted-step breakdowns. Braze normalizes range timestamps to midnight in the company time zone.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `length` | string | No | Number of days as a string from 1 through 14; required if starting_at is omitted. |
| `canvas_id` | string | Yes | Braze Canvas API identifier. |
| `ending_at` | string | Yes | Required timezone-aware ISO 8601 end timestamp. |
| `starting_at` | string | No | Optional timezone-aware ISO 8601 start timestamp. |
| `include_step_breakdown` | boolean | No | Include Canvas step statistics. |
| `include_deleted_step_data` | boolean | No | Include statistics for deleted Canvas steps. |
| `include_variant_breakdown` | boolean | No | Include Canvas variant statistics. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Canvas Translation Source

**Slug:** `BRAZE_GET_CANVAS_TRANSLATION_SOURCE`

Read default source values inside translation tags for one Canvas step message variation. Requires canvas.translations.get, translation tags on a multi-language message, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `step_id` | string | Yes | Canvas step ID. |
| `canvas_id` | string | Yes | Braze Canvas ID. |
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `message_variation_id` | string | Yes | Message variation ID within the Canvas step. |
| `post_launch_draft_version` | boolean | No | True returns the latest draft; false or omitted returns the latest live version. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Catalog Item

**Slug:** `BRAZE_GET_CATALOG_ITEM`

Return one Braze catalog item by exact catalog name and item ID. Requires the immutable catalogs.get_item API-key permission and shares a 50 requests/minute limit with synchronous catalog item endpoints.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | string | Yes | Exact catalog item ID. |
| `catalog_name` | string | Yes | Exact catalog name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Content Block

**Slug:** `BRAZE_GET_CONTENT_BLOCK`

Return one persisted Braze Content Block by API identifier, optionally with its current campaign and Canvas inclusion records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `content_block_id` | string | Yes | Exact Content Block API identifier returned by List Content Blocks or Create Content Block; names and Liquid tags are not accepted. |
| `include_inclusion_data` | boolean | No | Set true to include message-variation API identifiers for non-archived, non-deleted campaigns and Canvases that include this block. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Content Block Translation Source

**Slug:** `BRAZE_GET_CONTENT_BLOCK_TRANSLATION_SOURCE`

Read default source values inside one Content Block's translation tags. Requires content_blocks.translations.get, configured translation tags, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `content_block_id` | string | Yes | Braze Content Block ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Custom Event Analytics

**Slug:** `BRAZE_GET_CUSTOM_EVENT_ANALYTICS`

Get 1 to 100 daily or hourly occurrence counts for one custom event, optionally filtered by app and analytics-enabled segment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `unit` | string ("day" | "hour") | No | Analytics interval: day or hour. |
| `event` | string | Yes | Exact custom event name. |
| `app_id` | string | No | Optional Braze App API identifier; omit to aggregate all workspace apps. |
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |
| `segment_id` | string | No | Optional analytics-enabled Braze segment API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Email Template

**Slug:** `BRAZE_GET_EMAIL_TEMPLATE`

Return one stored HTML email template by API identifier. Braze does not accept drag-and-drop-editor templates on this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email_template_id` | string | Yes | Exact email-template API identifier returned by List Email Templates or Create Email Template; template names are not accepted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Email Template Translation Source

**Slug:** `BRAZE_GET_EMAIL_TEMPLATE_TRANSLATION_SOURCE`

Read default source values inside an email template's translation tags. This source endpoint specifically requires templates.email.info, plus a multi-language template, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `template_id` | string | Yes | Braze email template ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Preference Center

**Slug:** `BRAZE_GET_PREFERENCE_CENTER`

Get persisted HTML, state, options, identifiers, and timestamps for one Braze preference center. Limited to 1,000 requests/minute per workspace.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `preference_center_api_id` | string | Yes | Braze preference-center API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Purchase Series

**Slug:** `BRAZE_GET_PURCHASE_SERIES`

Get 1 to 100 daily or hourly purchase quantity or revenue points, optionally filtered by app and product. The selected metric determines the exact Braze purchase endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `unit` | string ("day" | "hour") | No | Analytics interval: day or hour. |
| `app_id` | string | No | Optional Braze App API identifier; omit to aggregate all workspace apps. |
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `metric` | string ("quantity" | "revenue") | Yes | Purchase metric to return: quantity of items purchased or revenue. |
| `product` | string | No | Optional exact product name filter. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Segment

**Slug:** `BRAZE_GET_SEGMENT`

Return Braze's documented configuration details for one segment identified by its segment API identifier.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segment_id` | string | Yes | Braze segment API identifier, obtainable from List Segments. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Segment Analytics

**Slug:** `BRAZE_GET_SEGMENT_ANALYTICS`

Get up to 100 daily estimated segment-size points. Export and count segment users when an exact size is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |
| `segment_id` | string | Yes | Braze segment API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Send Analytics

**Slug:** `BRAZE_GET_SEND_ANALYTICS`

Get up to 100 daily analytics points for a tracked send from an API campaign. Braze retains send analytics for 14 days after the send and attributes campaign conversions to the most recent send_id received by each user. Counts may not match dashboard analytics or Currents one-for-one because aggregation windows and definitions differ.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `send_id` | string | Yes | Tracked Send API identifier. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |
| `campaign_id` | string | Yes | Braze API campaign identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Session Analytics

**Slug:** `BRAZE_GET_SESSION_ANALYTICS`

Get 1 to 100 daily or hourly session-count points, optionally filtered by app and analytics-enabled segment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `unit` | string ("day" | "hour") | No | Analytics interval: day or hour. |
| `app_id` | string | No | Optional Braze App API identifier; omit to aggregate all workspace apps. |
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |
| `segment_id` | string | No | Optional analytics-enabled Braze segment API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Subscription Group Status

**Slug:** `BRAZE_GET_SUBSCRIPTION_GROUP_STATUS`

Get saved membership status for up to 50 users in one exact subscription group. External IDs take query precedence if also supplied; email and phone cannot be combined. Results are Subscribed, Unsubscribed, or Unknown and do not include the overriding global email state. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | array | No | One email or 1 to 50 emails for an email group. |
| `phone` | array | No | One E.164 phone or 1 to 50 phones for an SMS or WhatsApp group. |
| `external_id` | array | No | One external ID or 1 to 50 external IDs. Takes query precedence when combined with email or phone. |
| `subscription_group_id` | string | Yes | Exact subscription group ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get User KPI Series

**Slug:** `BRAZE_GET_USER_KPI_SERIES`

Get 1 to 100 points for one user KPI: daily active users, rolling 30-day monthly active users, daily new users, or daily uninstalls. Optionally filter to one Braze app. The selected metric determines the exact Braze KPI endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | No | Optional Braze App API identifier; omit to aggregate all workspace apps. |
| `length` | integer | Yes | Number of days or intervals to return, from 1 through 100. |
| `metric` | string ("daily_active_users" | "monthly_active_users" | "daily_new_users" | "daily_uninstalls") | Yes | User KPI series to return: daily active users, monthly active users, daily new users, or daily uninstalls. |
| `ending_at` | string | No | Optional timezone-aware ISO 8601 timestamp at which the series ends. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Webhook Template Translation Source

**Slug:** `BRAZE_GET_WEBHOOK_TEMPLATE_TRANSLATION_SOURCE`

Read default source values inside a webhook template's translation tags. Requires templates.translations.get and webhook template translations enabled by Braze; otherwise Braze may return FEATURE_NOT_ENABLED. The endpoint has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `template_id` | string | Yes | Braze webhook template ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Identify Users

**Slug:** `BRAZE_IDENTIFY_USERS`

Assign external IDs to alias-only, email-only, or phone-only Braze profiles, merging into an existing identified profile when applicable. This is irreversible when a merge occurs: the source alias-only, email-only, or phone-only profile is removed after its data is transferred. Requires users.identify and shares a 20,000 requests/minute rate limit. A 201 success only confirms acceptance: case mismatches, duplicate matches, or prioritization can produce no merge.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `emails_to_identify` | array | No | Email-only profiles to identify; provide at least one identifier collection. |
| `aliases_to_identify` | array | No | Alias-only profiles to identify; provide at least one identifier collection. |
| `phone_numbers_to_identify` | array | No | Phone-only profiles to identify; provide at least one identifier collection. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaigns

**Slug:** `BRAZE_LIST_CAMPAIGNS`

Return one page of Braze campaigns for discovery, optionally including archived campaigns and filtering by last edit time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Zero-based page number. Start at 0; when next_request is returned, pass all of its fields unchanged to continue. |
| `page_size` | integer | No | Maximum campaigns to return from the current Braze page. Defaults to 10; set explicitly as high as 100. This local context cap is not sent to Braze. |
| `page_offset` | integer | No | Local position within the current Braze page. Use only the value from next_request when continuing; this field is not sent to Braze. |
| `edited_after` | string | No | Return campaigns edited after this ISO 8601 timestamp. |
| `sort_direction` | string ("asc" | "desc") | No | Sort by creation time: asc for oldest first or desc for newest first. |
| `include_archived` | boolean | No | Include archived campaigns when true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Campaign Translations

**Slug:** `BRAZE_LIST_CAMPAIGN_TRANSLATIONS`

View every configured locale translation map for one campaign message variation, or filter by locale. Requires campaigns.translations.get, multi-language support on the message, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `campaign_id` | string | Yes | Braze campaign ID. |
| `message_variation_id` | string | Yes | Message variation ID within the campaign. |
| `post_launch_draft_version` | boolean | No | True returns the latest draft; false or omitted returns the latest live version. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Canvases

**Slug:** `BRAZE_LIST_CANVASES`

Return one fixed provider page of up to 100 Braze Canvases for discovery, optionally including archived Canvases and filtering by last edit time. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Zero-based page number. Start at 0; when next_request is returned, pass all of its fields unchanged to continue. |
| `edited_after` | string | No | Return Canvases edited after this ISO 8601 timestamp. |
| `sort_direction` | string ("asc" | "desc") | No | Sort by creation time: asc for oldest first or desc for newest first. |
| `include_archived` | boolean | No | Include archived Canvases when true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Canvas Translations

**Slug:** `BRAZE_LIST_CANVAS_TRANSLATIONS`

Preview configured locale translations for one Canvas step message variation. Requires canvas.translations.get, multi-language support on the message, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `step_id` | string | Yes | Canvas step ID. |
| `canvas_id` | string | Yes | Braze Canvas ID. |
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `message_variation_id` | string | Yes | Message variation ID within the Canvas step. |
| `post_launch_draft_version` | boolean | No | True returns the latest draft; false or omitted returns the latest live version. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Catalog Items

**Slug:** `BRAZE_LIST_CATALOG_ITEMS`

Return one fixed provider page of up to 50 items from a Braze catalog, preserving arbitrary item attributes and exposing Braze Link-header pagination. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests. Requires the immutable catalogs.get_items API-key permission and shares the 50 requests/minute synchronous catalog item limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque continuation cursor returned by a previous call; omit for page one. |
| `catalog_name` | string | No | Exact catalog name, required for the first page. Omit when continuing with cursor. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Catalogs

**Slug:** `BRAZE_LIST_CATALOGS`

Return all catalogs in the connected Braze workspace. Braze exposes no page-size control or resumable boundary, so a local 10-item cap would hide catalogs and save context tokens, not provider requests.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Cloud Data Ingestion Integrations

**Slug:** `BRAZE_LIST_CLOUD_DATA_INGESTION_INTEGRATIONS`

Return one 10-item page of configured Cloud Data Ingestion integrations. Requires the workspace's Cloud Data Ingestion entitlement and has a 50 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque continuation cursor from a previous response; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Cloud Data Ingestion Sync Statuses

**Slug:** `BRAZE_LIST_CLOUD_DATA_INGESTION_SYNC_STATUSES`

Return one 10-item page of sync statuses for a Cloud Data Ingestion integration. Requires the workspace's CDI entitlement and has a 100 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque continuation cursor from a previous response; omit for the first page. |
| `integration_id` | string | Yes | Cloud Data Ingestion integration ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Content Blocks

**Slug:** `BRAZE_LIST_CONTENT_BLOCKS`

Return one offset-based page of persisted Braze Content Blocks. Omit offset on the first call and use next_request only when it is returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum blocks on this page; defaults to 10 and permits up to 1000. |
| `offset` | integer | No | Positive number of matching blocks to skip. Omit for the first page; Braze's documented troubleshooting contract requires offset to be greater than 0. |
| `modified_after` | string | No | Return blocks edited at or after this ISO 8601 timestamp. |
| `modified_before` | string | No | Return blocks edited at or before this ISO 8601 timestamp. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Content Block Translations

**Slug:** `BRAZE_LIST_CONTENT_BLOCK_TRANSLATIONS`

View every configured locale translation map for one Content Block, or filter by locale. Requires content_blocks.translations.get, multi-language translation tags on the block, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `content_block_id` | string | Yes | Braze Content Block ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Attributes

**Slug:** `BRAZE_LIST_CUSTOM_ATTRIBUTES`

Return one fixed provider page of up to 50 alphabetically sorted custom-attribute definitions and a Link-header continuation cursor. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque cursor from next_cursor; omit for the first alphabetically sorted page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Event Names

**Slug:** `BRAZE_LIST_CUSTOM_EVENT_NAMES`

Return one fixed provider page of up to 250 alphabetically sorted custom event names. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Zero-based page number; each page contains up to 250 alphabetically sorted event names. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Events

**Slug:** `BRAZE_LIST_CUSTOM_EVENTS`

Return one fixed provider page of up to 50 alphabetically sorted custom-event definitions and a Link-header continuation cursor. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque cursor from next_cursor; omit for the first alphabetically sorted page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Email Template Locale Translations

**Slug:** `BRAZE_LIST_EMAIL_TEMPLATE_LOCALE_TRANSLATIONS`

View email template translations, optionally filtered to one locale. Braze documents locale_id as optional: when omitted, this action sends no locale filter and returns Braze's translation-list response without asserting which locales Braze will include. Requires templates.translations.get, a multi-language template, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional Braze locale UUID filter. |
| `template_id` | string | Yes | Braze email template ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Email Templates

**Slug:** `BRAZE_LIST_EMAIL_TEMPLATES`

Return one offset-based page of stored HTML email templates. Drag-and-drop templates are excluded; omit offset on the first call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum templates on this page; defaults to 10 and permits up to 1000. |
| `offset` | integer | No | Positive number of matching templates to skip. Omit for the first page; although the official example uses 0, the baseline read-only provider probe observed Braze reject explicit offset=0. |
| `modified_after` | string | No | Return templates updated at or after this ISO 8601 timestamp. |
| `modified_before` | string | No | Return templates updated at or before this ISO 8601 timestamp. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Email Template Translations

**Slug:** `BRAZE_LIST_EMAIL_TEMPLATE_TRANSLATIONS`

View all configured translations and locales for one email template. Requires templates.translations.get, a multi-language template, and observes a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `template_id` | string | Yes | Braze email template ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Hard Bounced Emails

**Slug:** `BRAZE_LIST_HARD_BOUNCED_EMAILS`

Return one newest-first offset page of hard-bounced emails. end_date and either start_date or email are required; an email lookup takes precedence over dates. Increase offset until a page has fewer than limit. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | Optional exact email lookup; when set, Braze ignores the date range. |
| `limit` | integer | No | Maximum date-list results on this page, from 1 to 500. Composio defaults to 10; Braze defaults to 100 when omitted. Do not provide this for an exact email lookup. |
| `offset` | integer | No | Number of date-list records to skip; use 0 for the first page. Do not provide this for an exact email lookup. |
| `end_date` | string | Yes | Required UTC end date in YYYY-MM-DD format. |
| `start_date` | string | No | UTC start date in YYYY-MM-DD format, earlier than end_date. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invalid Phone Numbers

**Slug:** `BRAZE_LIST_INVALID_PHONE_NUMBERS`

Return one newest-first offset page of invalid SMS numbers by UTC date range, or check exact E.164 numbers. Exact numbers take precedence over dates. Reasons are provider_error or deactivated. Increase offset until a page has fewer than limit. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Date-query page size, defaulting to 10; omit for exact-number lookup. |
| `offset` | integer | No | Date-query offset, defaulting to zero; omit for exact-number lookup. |
| `reason` | string ("provider_error" | "deactivated") | No | Optional invalidity reason filter. |
| `end_date` | string | No | UTC range end in YYYY-MM-DD format; required with start_date for a date query. |
| `start_date` | string | No | UTC range start in YYYY-MM-DD format; required with end_date for a date query. |
| `phone_numbers` | array | No | Exact E.164 numbers to check; required when no complete date range is provided. When set, Braze ignores dates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Preference Centers

**Slug:** `BRAZE_LIST_PREFERENCE_CENTERS`

List all available Braze preference centers and their IDs and timestamps. Braze exposes no page-size control or resumable boundary, so a local 10-item cap would hide centers and save context tokens, not provider requests. Limited to 1,000 requests/minute per workspace. Braze publishes no separate plan-tier gate.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Purchase Products

**Slug:** `BRAZE_LIST_PURCHASE_PRODUCTS`

Return every product ID from an optional caller-selected provider page. Braze documents page as a string but does not publish a page size, continuation token, or terminal marker, so a local 10-item cap could hide products and would save context tokens, not provider requests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | string | No | Optional provider page value selected by the caller. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Scheduled Broadcasts

**Slug:** `BRAZE_LIST_SCHEDULED_BROADCASTS`

List dashboard and API scheduled campaigns and Canvas entries through an ISO 8601 end date. Recurring broadcasts appear only once at their next occurrence. Braze exposes no page-size control or resumable boundary, so a local 10-item cap would hide broadcasts and save context tokens, not provider requests. Requires messages.schedule_broadcasts and uses the default 250,000 requests/hour limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | string | Yes | End of the lookup range; Braze treats the date as midnight UTC. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List SDK Authentication Keys

**Slug:** `BRAZE_LIST_SDK_AUTHENTICATION_KEYS`

HIGH IMPACT SECURITY READ: list all SDK Authentication public keys, IDs, descriptions, and primary status for one exact app. Braze exposes no page-size control or resumable boundary, so a local 10-item cap would hide security inventory and save context tokens, not provider requests. The response contains RSA public keys, never private keys. Restrict output handling because key inventory supports security administration. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Exact Braze App API identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Segments

**Slug:** `BRAZE_LIST_SEGMENTS`

Return one fixed provider page of up to 100 Braze segments and their IDs for audience discovery. Braze exposes no page-size control; returning the complete page avoids losing continuation records. A local 10-item cap would save context tokens, not provider requests. Archived segments are excluded by Braze and cannot be requested from this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Zero-based page number. Start at 0; when next_request is returned, pass all of its fields unchanged to continue. |
| `sort_direction` | string ("asc" | "desc") | No | Sort by creation time: asc for oldest first or desc for newest first. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Unsubscribed Emails

**Slug:** `BRAZE_LIST_UNSUBSCRIBED_EMAILS`

Return one offset page of latest unsubscribe records for a UTC date range or exact email. end_date and either start_date or email are required. This is latest state, not full history; use Currents for history. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | Optional exact email lookup; use instead of date pagination. |
| `limit` | integer | No | Maximum results on this page, from 1 to 500. |
| `offset` | integer | No | Number of matching records to skip; use 0 for the first page. |
| `end_date` | string | Yes | Required UTC end date in YYYY-MM-DD format. |
| `start_date` | string | No | UTC start date in YYYY-MM-DD format, earlier than end_date. |
| `sort_direction` | string ("asc" | "desc") | No | Sort oldest-to-newest (asc) or newest-to-oldest (desc). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List User Subscription Groups

**Slug:** `BRAZE_LIST_USER_SUBSCRIPTION_GROUPS`

Return one offset page of subscription groups that have status history for users selected by exactly one email or phone identifier type. Newly created groups with no user update are omitted. limit defaults to 10 and cannot exceed 100. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | array | No | One email or 1 to 50 emails. |
| `limit` | integer | No | Maximum users on this page; defaults to 10 and Braze permits up to 100. |
| `phone` | array | No | One E.164 phone or 1 to 50 phones. |
| `offset` | integer | No | Number of matching users to skip. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Webhook Template Translations

**Slug:** `BRAZE_LIST_WEBHOOK_TEMPLATE_TRANSLATIONS`

View configured translations for one webhook template, optionally filtered by locale. Requires templates.translations.get and webhook template translations enabled by Braze; otherwise Braze may return FEATURE_NOT_ENABLED. The endpoint has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | No | Optional locale UUID; omission returns every configured locale. |
| `template_id` | string | Yes | Braze webhook template ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Merge Users

**Slug:** `BRAZE_MERGE_USERS`

Asynchronously merge up to 50 Braze source profiles into retained target profiles. Each completed merge is irreversible: the source profile is removed after its data is transferred to the retained target. Requires users.merge and shares a 20,000 requests/minute rate limit. Target values take precedence for existing attributes; counters and selected dates are combined. A 202 success confirms acceptance only, and invalid non-E.164 stored phones can cause a silent skipped merge.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `merge_updates` | array | Yes | One to 50 asynchronous profile merges. Ordering is not guaranteed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Deprecated External IDs

**Slug:** `BRAZE_REMOVE_EXTERNAL_IDS`

Permanently remove up to 50 deprecated Braze external IDs. Requires users.external_ids.remove and is limited to 1,000 requests/minute. Primary IDs cannot be removed; inspect removal_errors because valid requests can partially fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `external_ids` | array | Yes | One to 50 deprecated external IDs to remove permanently. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Hard Bounced Emails

**Slug:** `BRAZE_REMOVE_HARD_BOUNCED_EMAILS`

HIGH IMPACT: remove one to 50 exact addresses from both the Braze bounce list and the email provider's bounce list, potentially making them deliverable again. Revalidate ownership and deliverability first. Success is rejected unless Braze explicitly returns message=success. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | One valid email address or an array of 1 to 50 valid email addresses. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Invalid Phone Numbers

**Slug:** `BRAZE_REMOVE_INVALID_PHONE_NUMBERS`

HIGH IMPACT: remove one to 50 exact E.164 numbers from Braze's invalid list so they can be revalidated and may receive SMS again. Confirm number ownership and deliverability first. Success is rejected unless Braze explicitly returns message=success. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `phone_numbers` | array | Yes | One to 50 exact phone numbers in E.164 format. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Emails From Spam List

**Slug:** `BRAZE_REMOVE_SPAM_EMAILS`

HIGH IMPACT: remove one to 50 exact addresses from both the Braze spam list and the email provider's spam list, potentially making them deliverable again. Confirm recipient consent first. Success is rejected unless Braze explicitly returns message=success. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | One valid email address or an array of 1 to 50 valid email addresses. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Rename External IDs

**Slug:** `BRAZE_RENAME_EXTERNAL_IDS`

Rename up to 50 primary Braze external IDs, preserving each old ID as deprecated. Requires users.external_ids.rename, is limited to 1,000 requests/minute, logs no data points, and does not affect MAU. Items process independently; inspect rename_errors and later remove deprecated IDs when migration is complete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `external_id_renames` | array | Yes | One to 50 independent external-ID rename operations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Catalog Item

**Slug:** `BRAZE_REPLACE_CATALOG_ITEM`

Synchronously replace a Braze catalog item, creating it if item_id does not exist. Requires the immutable catalogs.replace_item API-key permission and shares a 50 requests/minute synchronous item limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Exactly one complete replacement object with no id. Arbitrary attributes matching the catalog schema are preserved. |
| `item_id` | string | Yes | Exact item ID to replace or create. |
| `catalog_name` | string | Yes | Exact catalog name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Multiple Catalog Items

**Slug:** `BRAZE_REPLACE_CATALOG_ITEMS`

Asynchronously replace or create up to 50 Braze catalog items by id. Requires the immutable catalogs.replace_items API-key permission and shares a 16,000 requests/minute asynchronous item limit. Catalog storage limits can reject the request. A 202 response is acceptance only, with no documented job or terminal result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | One to 50 complete replacement items with unique ids. Missing ids are created; attributes must match catalog fields and remain permissive for workspace schemas. |
| `catalog_name` | string | Yes | Exact name of the catalog containing the items. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Media Library Asset File

**Slug:** `BRAZE_REPLACE_MEDIA_LIBRARY_ASSET_FILE`

HIGH IMPACT: request replacement of the file associated with one exact Braze media-library asset ID using a public HTTP(S) URL. The existing asset ID and hosted URL are preserved only when Braze confirms success. The replacement extension must exactly match. Replacement supports images, SVGs, documents, fonts, contact cards, and code files; video is unsupported and provider-enforced size limits apply. This action supports the implemented asset_url mode only and does not claim replacement from HTTP status alone. Rate limit: 100/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset_id` | string | Yes | Exact existing media-library asset ID. This is not the asset name or URL; Braze preserves this ID and its hosted URL when replacement succeeds. |
| `asset_url` | string | Yes | Publicly accessible HTTP(S) URL Braze will download as the replacement file. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Campaign Trigger

**Slug:** `BRAZE_SEND_CAMPAIGN_TRIGGER`

HIGH IMPACT: immediately request an API-triggered campaign send. Provide up to 50 recipients, optionally intersected with a Connected Audience. Audience-only targeting requires broadcast=true; broadcast cannot include individual recipients. An accepted send cannot be retracted. Recipient attributes can update a profile or, with send_to_existing_only=false and an external ID, create a profile. Requires an active dashboard API-triggered campaign and campaigns.trigger.send. A dispatch ID means Braze accepted one batched transmission; it does not prove per-user dispatch or delivery. Per-recipient errors are returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `send_id` | string | No | Optional custom send identifier. |
| `audience` | object | No | Connected Audience filters. |
| `broadcast` | boolean | No | Explicitly target the full dashboard-configured audience. |
| `recipients` | array | No | One to 50 specific recipients. |
| `attachments` | array | No | Email attachments, each no larger than 2 MB. |
| `campaign_id` | string | Yes | Dashboard API-triggered campaign identifier. |
| `trigger_properties` | object | No | Shared personalization values. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Canvas Trigger

**Slug:** `BRAZE_SEND_CANVAS_TRIGGER`

HIGH IMPACT: immediately request entry into an API-triggered Canvas. Provide up to 50 recipients, optionally intersected with a Connected Audience. Audience-only targeting requires broadcast=true; broadcast cannot include individual recipients. Accepted entry cannot be retracted. Recipient attributes can update a profile or, with send_to_existing_only=false and an external ID, create a profile. Requires canvas.trigger.send and an active Canvas. A paused or archived 201 response is rejected because no entry occurs. A dispatch ID is acceptance, never proof of message delivery; per-recipient errors are preserved.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `context` | object | No | Shared Canvas context, up to 50 KB. |
| `audience` | object | No | Connected Audience filters. |
| `broadcast` | boolean | No | Explicitly target the full dashboard-configured audience. |
| `canvas_id` | string | Yes | Dashboard API-triggered Canvas identifier. |
| `recipients` | array | No | One to 50 specific recipients. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send API-Only Messages

**Slug:** `BRAZE_SEND_MESSAGES`

HIGH IMPACT: immediately request API-only messages to existing Braze users. Individual targets are limited to 50 combined external IDs and aliases; without individuals you must explicitly set broadcast=true with a segment or Connected Audience. An accepted send cannot be retracted. Requires messages.send. Channel payloads enforce documented required fields, enums, and exclusions; rendered payload size and channel eligibility are provider gates, and a dispatch ID confirms acceptance only, not recipient dispatch or delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `send_id` | string | No | Optional custom send identifier. |
| `audience` | object | No | Connected Audience filters. |
| `messages` | object | Yes | One or more API-only channel message objects. |
| `broadcast` | boolean | No | Explicitly permit a segment or audience broadcast. |
| `segment_id` | string | No | Dashboard segment identifier. |
| `campaign_id` | string | No | Campaign ID required for dashboard campaign metrics and Message History. |
| `user_aliases` | array | No | Existing user aliases. |
| `external_user_ids` | array | No | Existing external user IDs. |
| `override_frequency_capping` | boolean | No | Ignore campaign frequency caps. |
| `recipient_subscription_state` | string ("opted_in" | "subscribed" | "all") | No | Minimum subscription state eligible for this send. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Transactional Campaign

**Slug:** `BRAZE_SEND_TRANSACTIONAL_CAMPAIGN`

HIGH IMPACT: send one immediate transactional email from a Braze Transactional Email campaign to exactly one external-ID or alias recipient; an accepted send cannot be retracted. Recipient attributes can update a profile or create a missing external-ID profile before sending. This is a select-package paid capability requiring an active transactional campaign, transactional.send, and hourly units. external_send_id deduplicates for 24 hours. sent and processed are not delivery; aborted and bounced are terminal failures, while delivered confirms inbox-provider acceptance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `recipient` | object | Yes | Exactly one transactional recipient. |
| `campaign_id` | string | Yes | Transactional campaign identifier. |
| `external_send_id` | string | No | Base64-compatible 24-hour deduplication and postback correlation key. |
| `trigger_properties` | object | No | Personalization values for this one recipient. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Global Email Subscription Status

**Slug:** `BRAZE_SET_EMAIL_SUBSCRIPTION_STATUS`

HIGH IMPACT: set the global email subscription state for one to 50 exact addresses, including addresses not yet attached to a profile. Global unsubscribed overrides every subscription group. Success is rejected unless Braze explicitly returns message=success. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | One valid email address or an array of 1 to 50 valid email addresses. |
| `subscription_state` | string ("subscribed" | "unsubscribed" | "opted_in") | Yes | Global email state: subscribed, unsubscribed, or explicitly opted_in. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Primary SDK Authentication Key

**Slug:** `BRAZE_SET_PRIMARY_SDK_AUTHENTICATION_KEY`

HIGH IMPACT SECURITY OPERATION: make one exact existing SDK Authentication key the primary key for one exact app. This changes which key new SDK clients should use. Success is rejected unless the returned key list marks that exact key primary. Default rate limit: 250,000 requests/hour.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Exact Braze App API identifier. |
| `key_id` | string | Yes | Exact existing SDK Authentication key ID to make primary. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Subscription Group Status

**Slug:** `BRAZE_SET_SUBSCRIPTION_GROUP_STATUS`

HIGH IMPACT: batch subscribe or unsubscribe up to 50 users in one exact group. Email-only or phone-only calls can affect every profile sharing the identifier; external IDs may be combined with one channel identifier. Orphaned channel states persist up to 30 days. LINE group use requires approval from the Braze customer success manager. message=success confirms acceptance only, not the resulting state. In particular, SMS double opt-in can no-op when no user profile exists. Shared V1/V2 rate limit: 5,000 requests/minute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | No | One email or 1 to 50 emails; updates every matching profile. |
| `phone` | string | No | One E.164 phone or 1 to 50 phones; updates every matching profile. |
| `external_id` | string | No | One external ID or 1 to 50 external IDs. |
| `subscription_state` | string ("subscribed" | "unsubscribed") | Yes | State to apply: subscribed or unsubscribed. |
| `subscription_group_id` | string | Yes | Exact subscription group identifier. |
| `use_double_opt_in_logic` | boolean | No | For SMS subscribed updates, enter existing users into the double opt-in workflow; ignored for email groups. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Subscription Group Statuses

**Slug:** `BRAZE_SET_SUBSCRIPTION_GROUP_STATUSES`

HIGH IMPACT: batch subscribe or unsubscribe users across multiple groups. Each group update must use exactly one of external_ids, emails, or E.164 phones; only external IDs may span email and SMS groups in one call. Orphaned channel states persist up to 30 days. LINE group use requires approval from the Braze customer success manager. message=success confirms acceptance only, not resulting states. In particular, SMS double opt-in can no-op when no user profile exists. Shared V1/V2 rate limit: 5,000 requests/minute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subscription_groups` | array | Yes | Group updates. Each update uses exactly one identifier family with at most 50 users. Use external_ids to update email and SMS groups in one call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Live Activity

**Slug:** `BRAZE_START_LIVE_ACTIVITY`

HIGH IMPACT: remotely request an iOS Live Activity start for exactly one target mode: up to 50 external users, one Connected Audience, or one segment. Requires Swift SDK push-to-start setup, matching ActivityAttributes and ContentState shapes, payload-size compliance, and messages.live_activity.start. HTTP 201 means Braze received a valid request; it does not prove APNs dispatch, display, or delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Braze app API identifier. |
| `segment_id` | string | No | Dashboard segment identifier. |
| `stale_date` | string | No | Time at which content becomes stale. |
| `activity_id` | string | Yes | Reusable custom activity identifier. |
| `notification` | object | Yes | Alert used to start the Live Activity. |
| `content_state` | object | Yes | ContentState matching the app-defined shape. |
| `custom_audience` | object | No | Connected Audience filters. |
| `external_user_ids` | array | No | One to 50 external user IDs. |
| `activity_attributes` | object | Yes | Static attributes matching the registered type. |
| `activity_attributes_type` | string | Yes | SDK-registered ActivityAttributes type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create and Update Users

**Slug:** `BRAZE_TRACK_USERS`

Asynchronously ingest Braze attributes, custom events, or purchases, up to 75 combined objects per portable request. Attribute objects can create or update profiles; event and purchase objects are durably recorded. Requires users.track. Each custom attribute consumes a data point; rate limits vary by contract (3,000 requests per three seconds for data-point pricing). Inspect errors because valid requests can partially process, and separate calls are not ordered. Conflicting data may process out of order; wait five minutes between requests containing conflicting data to guarantee final ordering. Callers should batch writes instead of making one-object calls when possible.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `events` | array | No | Custom events to record. |
| `purchases` | array | No | Purchases to record. |
| `attributes` | array | No | User attribute updates. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Trigger Cloud Data Ingestion Sync

**Slug:** `BRAZE_TRIGGER_CLOUD_DATA_INGESTION_SYNC`

HIGH IMPACT: enqueue a sync for an existing Cloud Data Ingestion integration. This can ingest durable user or non-user data and consume data points. A 202 success only confirms acceptance, not completion; poll sync statuses. Requires CDI entitlement and is limited to 20 requests/minute.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `integration_id` | string | Yes | Cloud Data Ingestion integration ID from its dashboard URL. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Campaign Translations

**Slug:** `BRAZE_UPDATE_CAMPAIGN_TRANSLATIONS`

Submit a durable update request with translation-tag string values for one campaign message locale. This does not publish, launch, send, or prove delivery; read back the translations to verify resulting stored content. A launched campaign must first have its message saved as a draft. Requires campaigns.translations.update and has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | Yes | Braze locale UUID to update. |
| `campaign_id` | string | Yes | Braze campaign ID. |
| `translation_map` | object | Yes | Translation-tag IDs mapped to arbitrary translated string content for this update request. |
| `message_variation_id` | string | Yes | Message variation ID within the campaign. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Campaign Trigger Schedule

**Slug:** `BRAZE_UPDATE_CAMPAIGN_TRIGGER_SCHEDULE`

HIGH IMPACT: durably replace the full schedule for a previously scheduled API-triggered campaign. Omitted local or optimal-time flags do not carry forward. Near send time changes are best-effort, and a local-time schedule cannot be updated after its time passed in any zone. Requires campaigns.trigger.schedule.update; the change persists until updated, deleted, or sent, and acceptance does not prove every recipient was changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `schedule` | object | Yes | Complete replacement schedule; omitted flags reset behavior. |
| `campaign_id` | string | Yes | API-triggered campaign identifier. |
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Canvas Translations

**Slug:** `BRAZE_UPDATE_CANVAS_TRANSLATIONS`

Submit a durable update request with translation-tag string values for one Canvas step message locale. This does not publish, launch, send, or prove delivery; read back the translations to verify resulting stored content. A launched Canvas must first have its message saved as a draft. Requires canvas.translations.update and has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `step_id` | string | Yes | Canvas step ID. |
| `canvas_id` | string | Yes | Braze Canvas ID. |
| `locale_id` | string | Yes | Braze locale UUID to update. |
| `translation_map` | object | Yes | Translation-tag IDs mapped to arbitrary translated string content for this update request. |
| `message_variation_id` | string | Yes | Message variation ID within the Canvas step. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Canvas Trigger Schedule

**Slug:** `BRAZE_UPDATE_CANVAS_TRIGGER_SCHEDULE`

HIGH IMPACT: durably replace the full schedule for a previously scheduled API-triggered Canvas. Omitted local or optimal-time flags do not carry forward, and near-send changes are best-effort. Requires canvas.trigger.schedule.update; the change persists until updated, deleted, or entered, and acceptance does not prove every intended entry was changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `schedule` | object | Yes | Complete replacement schedule; omitted flags reset behavior. |
| `canvas_id` | string | Yes | API-triggered Canvas identifier. |
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Catalog Item

**Slug:** `BRAZE_UPDATE_CATALOG_ITEM`

Synchronously patch one existing Braze catalog item. Requires the immutable catalogs.update_item API-key permission and shares a 50 requests/minute synchronous item limit. The item ID belongs only in the path.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Exactly one object containing attributes to edit but no id. Array fields may use $add and $remove; arbitrary catalog attributes are preserved. |
| `item_id` | string | Yes | Exact ID of the item to edit. |
| `catalog_name` | string | Yes | Exact catalog name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Multiple Catalog Items

**Slug:** `BRAZE_UPDATE_CATALOG_ITEMS`

Asynchronously patch up to 50 existing Braze catalog items. Requires the immutable catalogs.update_items API-key permission and shares a 16,000 requests/minute asynchronous item limit. A 202 response confirms acceptance only and supplies no documented job ID, per-item result, or completion proof.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | One to 50 existing items with unique ids and only attributes to change. Array fields may use $add and $remove objects; arbitrary catalog attributes are preserved. |
| `catalog_name` | string | Yes | Exact name of the catalog containing the items. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Content Block

**Slug:** `BRAZE_UPDATE_CONTENT_BLOCK`

Persist changes to one existing Braze Content Block by API identifier. This updates stored content only; it does not send or deliver a message.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Replacement name under 100 characters. Braze does not allow renaming an active Content Block. |
| `tags` | array | No | Complete set of existing Braze tag names to assign; tags are not created here. |
| `state` | string ("active" | "draft") | Yes | Explicit state to retain or set. Always provide the block's intended active or draft state because Braze defaults an omitted state to active. Braze rejects changing an active block back to draft. |
| `content` | string | No | Replacement HTML or text content; Braze requires it to be under 51,200 UTF-8 bytes. |
| `description` | string | No | Replacement non-blank description under 250 characters. |
| `content_block_id` | string | Yes | Exact API identifier returned by List Content Blocks or Create Content Block; names and Liquid tags are not accepted. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Content Block Translations

**Slug:** `BRAZE_UPDATE_CONTENT_BLOCK_TRANSLATIONS`

Submit a durable update request with translation-tag string values for one Content Block locale. This does not publish, send, or prove delivery in a message using the block; read back the translations to verify resulting stored content. Requires content_blocks.translations.update and has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | Yes | Braze locale UUID to update. |
| `translation_map` | object | Yes | Translation-tag IDs mapped to arbitrary translated string content for this update request. |
| `content_block_id` | string | Yes | Braze Content Block ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Email Template

**Slug:** `BRAZE_UPDATE_EMAIL_TEMPLATE`

Persist one or more changes to an existing Braze email template by API identifier. This updates stored content only; it does not send or deliver email.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | No | Replacement HTML-capable email body. |
| `tags` | array | No | Complete set of existing Braze tag names to assign; tags are not created here. |
| `subject` | string | No | Replacement email subject line. |
| `preheader` | string | No | Replacement preview preheader. |
| `template_name` | string | No | Replacement template name. |
| `plaintext_body` | string | No | Replacement plain-text alternative body. |
| `email_template_id` | string | Yes | Exact API identifier returned by List Email Templates or Create Email Template; template names are not accepted. |
| `should_inline_css` | boolean | No | Enable or disable CSS inlining; omit to leave this setting unspecified. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Email Template Translations

**Slug:** `BRAZE_UPDATE_EMAIL_TEMPLATE_TRANSLATIONS`

Submit a durable update request with translation-tag string values for one email template locale. This does not send, schedule, publish, or prove email delivery; read back the translations to verify resulting stored content. Requires templates.translations.update and has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | Yes | Braze locale UUID to update. |
| `template_id` | string | Yes | Braze email template ID. |
| `translation_map` | object | Yes | Translation-tag IDs mapped to arbitrary translated string content for this update request. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Live Activity

**Slug:** `BRAZE_UPDATE_LIVE_ACTIVITY`

Update an SDK-registered iOS Live Activity without ending it. Requires matching ContentState shape, payload-size compliance, and messages.live_activity.update. An optional dismissal_date updates when the activity is removed from the UI without ending it. Use END_LIVE_ACTIVITY for the irreversible terminal operation. HTTP 201 confirms receipt only, not APNs dispatch, display, dismissal, or delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app_id` | string | Yes | Braze app API identifier. |
| `stale_date` | string | No | Time at which content becomes stale. |
| `activity_id` | string | Yes | Registered activity push-token tag. |
| `notification` | object | No | Optional update alert. |
| `content_state` | object | Yes | Updated ContentState matching the app-defined shape. |
| `dismissal_date` | string | No | Optional time to update when the activity is removed from the UI without ending it. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Message Schedule

**Slug:** `BRAZE_UPDATE_MESSAGE_SCHEDULE`

HIGH IMPACT: durably update the schedule, documented channel message objects, or both for an API-only scheduled message. The replacement persists until updated, deleted, or sent. Requires messages.schedule.update; acceptance confirms neither dispatch nor delivery.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `messages` | object | No | Replacement channel message objects. |
| `schedule` | object | No | Replacement schedule. |
| `schedule_id` | string | Yes | Schedule identifier returned at creation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Preference Center

**Slug:** `BRAZE_UPDATE_PREFERENCE_CENTER`

HIGH IMPACT: durably update a Braze preference center's required page HTML and confirmation HTML, plus an optional title, state, or options configuration. Omitted title, state, and options are not sent. The immutable name is not accepted. Limited to 10 requests/minute per workspace.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `state` | string ("active" | "draft") | No | Optional replacement active or draft state. |
| `options` | object | No | Optional replacement viewport and favicon configuration. |
| `confirmation_page_html` | string | Yes | Complete replacement HTML for the confirmation page. |
| `preference_center_title` | string | No | Optional replacement page title; omitted values are not sent. |
| `preference_center_api_id` | string | Yes | ID of the preference center to replace. |
| `preference_center_page_html` | string | Yes | Complete replacement HTML for the preference-center page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Push Credentials

**Slug:** `BRAZE_UPDATE_PUSH_CREDENTIALS`

HIGH IMPACT: replace one app's push credentials for exactly one platform. A bad credential can stop push delivery. Braze documents no endpoint-specific rate limit or public plan gate; the workspace must expose the Apps credential API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `apple` | object | No | APNs .p8 credentials; mutually exclusive with other platforms. |
| `app_id` | string | Yes | Braze app identifier API key from Settings > App Settings. |
| `huawei` | object | No | Huawei credentials; mutually exclusive with other platforms. |
| `kindle` | object | No | Amazon credentials; mutually exclusive with other platforms. |
| `firebase` | object | No | Firebase credentials; mutually exclusive with other platforms. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update User Aliases

**Slug:** `BRAZE_UPDATE_USER_ALIASES`

Asynchronously request renaming of up to 50 existing Braze aliases. Requires users.alias.update and shares a 20,000 requests/minute rate limit. A success response confirms acceptance only, not completion; update ordering is not guaranteed, and a nonmatching old alias may produce no change.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `alias_updates` | array | Yes | One to 50 alias rename operations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Webhook Template Translations

**Slug:** `BRAZE_UPDATE_WEBHOOK_TEMPLATE_TRANSLATIONS`

Submit a durable update request with translation-tag string values for one webhook template locale. This does not invoke, publish, deliver, or prove delivery of a webhook; read back the translations to verify resulting stored content. Requires templates.translations.update and webhook template translations enabled by Braze; otherwise Braze may return FEATURE_NOT_ENABLED. The endpoint has a 250,000 requests/minute limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `locale_id` | string | Yes | Configured Braze locale UUID to update for this webhook template. |
| `template_id` | string | Yes | Braze webhook template ID. |
| `translation_map` | object | Yes | Translation-tag IDs mapped to arbitrary translated string content for this update request. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
