The Braze connector lets your AI agent act in each user's Braze account. Each user connects their own Braze access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 73 tools.
- Tools
- 73
- What they doRead · write · destructive
- 39 · 34 · 039 read34 write0 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Braze connection
In AgentKit > Connections, create a Braze connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'braze'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Braze:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'braze_campaigns_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "braze"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Braze:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="braze_campaigns_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Braze credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolbraze_campaign_analytics_getGet daily performance stats for a campaign over a date range.Read-onlyGet Campaign Analytics
Get daily performance stats for a campaign over a date range. Returns a data array with one entry per day, holding per-channel stats such as sends, opens, clicks, conversions, and revenue. Use braze_campaign_analytics_get for a campaign's totals; use braze_send_analytics_get for one tracked send; use braze_canvas_analytics_get for Canvases.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_campaign_getGet the details of one campaign.Read-onlyGet Campaign
Get the details of one campaign. Returns its name, description, status flags (archived, draft, enabled), schedule type, channels, first and last sent times, tags, and message variations with content. Use braze_campaign_get for one campaign; use braze_campaigns_list to find campaign IDs; use braze_campaign_analytics_get for performance stats.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
include_has_translatable_contentboolean- Set true to add a has_translatable_content field to each message. Defaults to false. Example: false.
post_launch_draft_versionboolean- For campaigns with a post-launch draft, set true to return the draft changes. Defaults to false. Example: false.
braze_campaigns_listList campaigns in the workspace, 100 per page.Read-onlyList Campaigns
List campaigns in the workspace, 100 per page. Returns each campaign's id, name, is_api_campaign flag, tags, and last_edited time. Use braze_campaigns_list to find campaign IDs; use braze_campaign_get for one campaign's full details.
Inputs
include_archivedboolean- Whether to include archived campaigns; defaults to false. Example: false.
last_edited_afterstring- Only return campaigns edited after this time, in yyyy-MM-ddTHH:mm:ss format (an offset such as -05:00 is allowed). Example: 2026-06-28T23:59:59-05:00.
pageinteger- Page of campaigns to return, starting at 0; each page holds up to 100. Example: 0.
sort_directionstring- Sort by creation time: desc for newest first, asc for oldest first. If omitted, Braze sorts oldest to newest. Example: desc.one of
descasc
braze_canvas_analytics_getGet a time series of Canvas performance stats.Read-onlyGet Canvas Analytics
Get a time series of Canvas performance stats. Returns daily stats such as entries, revenue, and conversions, optionally broken down by variant and step. Use braze_canvas_analytics_get for day-by-day data; use braze_canvas_analytics_summary_get for rolled-up totals. Provide either starting_at or length.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
ending_atstringrequired- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
include_deleted_step_databoolean- Include statistics for deleted steps; defaults to false. Example: false.
include_step_breakdownboolean- Include per-step statistics; defaults to false. Example: true.
include_variant_breakdownboolean- Include per-variant statistics; defaults to false. Example: true.
lengthinteger- Number of days before ending_at to include, between 1 and 14. Provide either length or starting_at. Example: 7.
starting_atstring- ISO 8601 datetime the export starts on. Provide either starting_at or length. Example: 2026-09-20T00:00:00Z.
braze_canvas_analytics_summary_getGet rolled-up totals of Canvas performance over a date range.Read-onlyGet Canvas Analytics Summary
Get rolled-up totals of Canvas performance over a date range. Returns totals such as entries, revenue, and conversions, optionally broken down by variant and step. Use braze_canvas_analytics_summary_get for totals; use braze_canvas_analytics_get for a day-by-day series. Provide either starting_at or length.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
ending_atstringrequired- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
include_deleted_step_databoolean- Include statistics for deleted steps; defaults to false. Example: false.
include_step_breakdownboolean- Include per-step statistics; defaults to false. Example: true.
include_variant_breakdownboolean- Include per-variant statistics; defaults to false. Example: true.
lengthinteger- Number of days before ending_at to include, between 1 and 14. Provide either length or starting_at. Example: 7.
starting_atstring- ISO 8601 datetime the export starts on. Provide either starting_at or length. Example: 2026-09-20T00:00:00Z.
braze_canvas_getGet the details of one Canvas.Read-onlyGet Canvas
Get the details of one Canvas. Returns its name, description, status flags, schedule type, channels, first entry and last entry times, tags, variants, and steps. Use braze_canvas_get for one Canvas; use braze_canvases_list to find Canvas IDs; use braze_canvas_analytics_get for performance stats.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
include_has_translatable_contentboolean- Set true to add a has_translatable_content field to each message. Defaults to false. Example: false.
post_launch_draft_versionboolean- For Canvases with a post-launch draft, set true to return the draft changes. Defaults to false. Example: false.
braze_canvases_listList Canvases in the workspace, 100 per page.Read-onlyList Canvases
List Canvases in the workspace, 100 per page. Returns each Canvas's id, name, tags, and last_edited time. Use braze_canvases_list to find Canvas IDs; use braze_canvas_get for one Canvas's full details.
Inputs
include_archivedboolean- Whether to include archived Canvases; defaults to false. Example: false.
last_edited_afterstring- Only return Canvases edited after this time, in yyyy-MM-ddTHH:mm:ss format (an offset such as -05:00 is allowed). Example: 2026-06-28T23:59:59-05:00.
pageinteger- Page of Canvases to return, starting at 0; each page holds up to 100. Example: 0.
sort_directionstring- Sort by creation time: desc for newest first, asc for oldest first. If omitted, Braze sorts oldest to newest. Example: desc.one of
descasc
braze_catalog_item_getGet one catalog item by ID.Read-onlyGet Catalog Item
Get one catalog item by ID. Returns an items array holding the item with all its fields. Use braze_catalog_item_get for one item; use braze_catalog_items_list to browse.
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
item_idstringrequired- ID of the catalog item (the value of its id field). Example: restaurant1.
braze_catalog_items_listList the items in a catalog, 50 per page.Read-onlyList Catalog Items
List the items in a catalog, 50 per page. Returns an items array with every field of each item; the Link response header carries the next and previous page cursors. Use braze_catalog_items_list to browse a catalog; use braze_catalog_item_get for one item by ID.
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
cursorstring- Pagination cursor for the next page of catalog items. Braze returns it in the response's Link header (the cursor value of the rel="next" URL); omit for the first page. Example: c2tpcDow.
braze_catalogs_listList all catalogs in the workspace.Read-onlyList Catalogs
List all catalogs in the workspace. Returns each catalog's name, description, fields with types, num_items, and updated_at. Use braze_catalogs_list to find catalog names and schemas; use braze_catalog_items_list to read a catalog's items.
Inputs
This tool takes no inputs.
braze_content_block_getGet one Content Block's content and metadata.Read-onlyGet Content Block
Get one Content Block's content and metadata. Returns name, content, description, content_type, tags, timestamps, inclusion_count, and optionally inclusion_data. Use braze_content_block_get for one block; use braze_content_blocks_list to find block IDs.
Inputs
content_block_idstringrequired- API identifier of the Content Block, from braze_content_blocks_list. Example: 0b5c4e8a-2d1f-4b3a-9e7c-6f5a4b3c2d1e.
include_inclusion_databoolean- Set true to also return the message variation IDs of campaigns and Canvases that include this block (archived and deleted ones excluded). Example: false.
braze_content_blocks_listList Content Blocks in the workspace.Read-onlyList Content Blocks
List Content Blocks in the workspace. Returns a count and content_blocks with content_block_id, name, content_type, liquid_tag, inclusion_count, timestamps, and tags. Use braze_content_blocks_list to find Content Block IDs; use braze_content_block_get for a block's content.
Inputs
limitinteger- Maximum number of Content Blocks to return. Defaults to 100; maximum 1000. Example: 100.
modified_afterstring- Only Content Blocks updated at or after this ISO 8601 time. Example: 2026-01-01T00:00:00Z.
modified_beforestring- Only Content Blocks updated at or before this ISO 8601 time. Example: 2026-10-01T00:00:00Z.
offsetinteger- Number of Content Blocks to skip before returning results, for paging. Example: 0.
braze_custom_attributes_listList the custom attributes recorded in the workspace, 50 per page in alphabetical order.Read-onlyList Custom Attributes
List the custom attributes recorded in the workspace, 50 per page in alphabetical order. Returns each attribute's name, description, data_type, array_length, status, and tag_names; the Link header carries the next page cursor. Use braze_custom_attributes_list to discover attribute names before writing them with braze_users_track.
Inputs
cursorstring- Pagination cursor for the next page of custom attributes. Braze returns it in the response's Link header (the cursor value of the rel="next" URL); omit for the first page. Example: c2tpcDow.
braze_custom_event_analytics_getGet how many times a custom event occurred per day or hour over a time range.Read-onlyGet Custom Event Analytics
Get how many times a custom event occurred per day or hour over a time range. Returns a data array of {time, count} entries. Use braze_custom_event_analytics_get for event counts; use braze_custom_events_list to find event names.
Inputs
eventstringrequired- Name of the custom event to report on, exactly as returned by braze_custom_events_list. Example: rented_movie.
lengthintegerrequired- How many days or hours before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier to limit results to one app. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
segment_idstring- Analytics-enabled segment to limit results to, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
unitstring- Time between data points: day (default) or hour. Example: day.one of
dayhour
braze_custom_events_getList custom events with their metadata, 50 per page in alphabetical order.Read-onlyList Custom Events
List custom events with their metadata, 50 per page in alphabetical order. Returns each event's name, description, included_in_analytics_report flag, status, and tag_names; the Link header carries the next page cursor. Use braze_custom_events_get for metadata; use braze_custom_events_list for names only.
Inputs
cursorstring- Pagination cursor for the next page of custom events. Braze returns it in the response's Link header (the cursor value of the rel="next" URL); omit for the first page. Example: c2tpcDow.
braze_custom_events_listList the names of custom events recorded in the workspace, 250 per page in alphabetical order.Read-onlyList Custom Event Names
List the names of custom events recorded in the workspace, 250 per page in alphabetical order. Returns an events array of event names. Use braze_custom_events_list for names only; use braze_custom_events_get for event metadata; use braze_custom_event_analytics_get for counts over time.
Inputs
pageinteger- Page of event names to return, starting at 0; each page holds up to 250. Example: 0.
braze_email_hard_bounces_listList email addresses that hard bounced within a date range, or check whether one address hard bounced.Read-onlyList Hard Bounced Emails
List email addresses that hard bounced within a date range, or check whether one address hard bounced. Returns an emails array with each email and its hard_bounced_at time. Use braze_email_hard_bounces_list for bounces; use braze_email_unsubscribes_list for unsubscribes. Provide end_date plus either start_date or email.
Inputs
end_datestringrequired- End of the range in YYYY-MM-DD format (treated as midnight UTC). Example: 2026-10-01.
emailstring- Check a single address instead of a date range. Example: ada@example.com.
limitinteger- Maximum number of results to return. Defaults to 100; maximum 500. Example: 100.
offsetinteger- Number of results to skip before returning results, for paging. Example: 0.
start_datestring- Start of the range in YYYY-MM-DD format, earlier than end_date. Required unless email is given. Example: 2026-09-01.
braze_email_template_getGet one email template's content and metadata; drag-and-drop templates are not supported.Read-onlyGet Email Template
Get one email template's content and metadata; drag-and-drop templates are not supported. Returns template_name, description, subject, preheader, HTML body, plaintext_body, should_inline_css, tags, and timestamps. Use braze_email_template_get for one template; use braze_email_templates_list to find template IDs.
Inputs
email_template_idstringrequired- API identifier of the email template, from braze_email_templates_list. Example: 232b6d29-7e41-4106-a0ab-1c4fe915d701.
braze_email_templates_listList email templates in the workspace; templates built with the drag-and-drop editor are not included.Read-onlyList Email Templates
List email templates in the workspace; templates built with the drag-and-drop editor are not included. Returns a count and templates with email_template_id, template_name, created_at, updated_at, and tags. Use braze_email_templates_list to find template IDs; use braze_email_template_get for a template's content.
Inputs
limitinteger- Maximum number of templates to return. Defaults to 100; maximum 1000. Example: 100.
modified_afterstring- Only templates updated at or after this ISO 8601 time. Example: 2026-01-01T00:00:00Z.
modified_beforestring- Only templates updated at or before this ISO 8601 time. Example: 2026-10-01T00:00:00Z.
offsetinteger- Number of templates to skip before returning results, for paging. Example: 0.
braze_email_unsubscribes_listList email addresses that unsubscribed within a date range, or check whether one address unsubscribed.Read-onlyList Email Unsubscribes
List email addresses that unsubscribed within a date range, or check whether one address unsubscribed. Returns an emails array with each email and its unsubscribed_at time. Use braze_email_unsubscribes_list for unsubscribes; use braze_email_hard_bounces_list for bounces. Provide end_date plus either start_date or email.
Inputs
end_datestringrequired- End of the range in YYYY-MM-DD format (treated as midnight UTC). Example: 2026-10-01.
emailstring- Check a single address instead of a date range. Example: ada@example.com.
limitinteger- Maximum number of results to return. Defaults to 100; maximum 500. Example: 100.
offsetinteger- Number of results to skip before returning results, for paging. Example: 0.
sort_directionstring- Sort by creation time: desc for newest first, asc for oldest first. If omitted, Braze sorts newest to oldest. Example: desc.one of
descasc start_datestring- Start of the range in YYYY-MM-DD format, earlier than end_date. Required unless email is given. Example: 2026-09-01.
braze_kpi_dau_getGet the number of unique active users on each day, for the workspace or one app.Read-onlyGet Daily Active Users KPI
Get the number of unique active users on each day, for the workspace or one app. Returns a data array of {time, dau} entries. Use braze_kpi_dau_get for this KPI; the sibling KPI tools are braze_kpi_new_users_get, braze_kpi_dau_get, braze_kpi_mau_get, and braze_kpi_uninstalls_get.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_kpi_mau_getGet the number of unique active users over a rolling 30-day window, for each day, for the workspace or one app.Read-onlyGet Monthly Active Users KPI
Get the number of unique active users over a rolling 30-day window, for each day, for the workspace or one app. Returns a data array of {time, mau} entries. Use braze_kpi_mau_get for this KPI; the sibling KPI tools are braze_kpi_new_users_get, braze_kpi_dau_get, braze_kpi_mau_get, and braze_kpi_uninstalls_get.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_kpi_new_users_getGet the number of new users on each day, for the workspace or one app.Read-onlyGet New Users KPI
Get the number of new users on each day, for the workspace or one app. Returns a data array of {time, new_users} entries. Use braze_kpi_new_users_get for this KPI; the sibling KPI tools are braze_kpi_new_users_get, braze_kpi_dau_get, braze_kpi_mau_get, and braze_kpi_uninstalls_get.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_kpi_uninstalls_getGet the number of app uninstalls on each day, for the workspace or one app.Read-onlyGet App Uninstalls KPI
Get the number of app uninstalls on each day, for the workspace or one app. Returns a data array of {time, uninstalls} entries. Use braze_kpi_uninstalls_get for this KPI; the sibling KPI tools are braze_kpi_new_users_get, braze_kpi_dau_get, braze_kpi_mau_get, and braze_kpi_uninstalls_get.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_preference_center_getGet one preference center's settings and HTML.Read-onlyGet Preference Center
Get one preference center's settings and HTML. Returns name, title, preference center and confirmation page HTML, options, state, and timestamps. Use braze_preference_center_get for one center; use braze_preference_center_url_get for a user's personal link.
Inputs
preference_center_idstringrequired- API identifier of the preference center, from braze_preference_centers_list. Example: 8efc52aa-935e-42b7-bd6b-98f43bb9b0f1.
braze_preference_center_url_getGenerate a user's personal URL for a preference center.Read-onlyGet Preference Center URL
Generate a user's personal URL for a preference center. Returns preference_center_url. Use braze_preference_center_url_get to link a user to their preferences; works only for preference centers created via the API or drag-and-drop editor.
Inputs
preference_center_idstringrequired- API identifier of the preference center, from braze_preference_centers_list. Example: 8efc52aa-935e-42b7-bd6b-98f43bb9b0f1.
user_idstringrequired- External ID of the user the URL is for. Example: user_123.
braze_preference_centers_listList the preference centers in the workspace.Read-onlyList Preference Centers
List the preference centers in the workspace. Returns each preference center's name, preference_center_api_id, created_at, and updated_at. Use braze_preference_centers_list to find preference center IDs; use braze_preference_center_get for one center's HTML and settings.
Inputs
This tool takes no inputs.
braze_purchase_products_listList the product IDs that have been recorded in purchases, a page at a time.Read-onlyList Purchase Product IDs
List the product IDs that have been recorded in purchases, a page at a time. Returns a products array of product ID strings. Use braze_purchase_products_list to find product names for braze_purchase_quantity_get and braze_purchase_revenue_get.
Inputs
pageinteger- Page of the product list to return. Example: 1.
braze_purchase_quantity_getGet the number of purchases per day or hour over a time range.Read-onlyGet Purchase Quantity
Get the number of purchases per day or hour over a time range. Returns a data array of {time, purchase_quantity} entries. Use braze_purchase_quantity_get for purchase counts; use braze_purchase_revenue_get for money spent.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
productstring- Product ID to filter by, as returned by braze_purchase_products_list; omit for all products. Example: backpack.
unitstring- Time between data points: day (default) or hour. Example: day.one of
dayhour
braze_purchase_revenue_getGet the total money spent in your app per day or hour over a time range.Read-onlyGet Purchase Revenue
Get the total money spent in your app per day or hour over a time range. Returns a data array of {time, revenue} entries. Use braze_purchase_revenue_get for revenue; use braze_purchase_quantity_get for purchase counts.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier from Settings > APIs and Identifiers; omit to include all apps in the workspace. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
productstring- Product ID to filter by, as returned by braze_purchase_products_list; omit for all products. Example: backpack.
unitstring- Time between data points: day (default) or hour. Example: day.one of
dayhour
braze_scheduled_broadcasts_listList campaigns and Canvases scheduled in the dashboard to send between now and an end time.Read-onlyList Scheduled Broadcasts
List campaigns and Canvases scheduled in the dashboard to send between now and an end time. Returns each broadcast's name, id, type (Campaign or Canvas), tags, next_send_time, and schedule_type. Use braze_scheduled_broadcasts_list to see what is about to send; recurring messages appear once with their next occurrence.
Inputs
end_timestringrequired- End of the window to search, as an ISO 8601 datetime (treated as midnight UTC). Example: 2026-11-01T00:00:00Z.
braze_segment_analytics_getGet the estimated size of a segment for each day over a date range.Read-onlyGet Segment Analytics
Get the estimated size of a segment for each day over a date range. Returns a data array of {time, size} entries. Use braze_segment_analytics_get for segment size over time; use braze_segment_get for its filters. The segment must have analytics tracking enabled.
Inputs
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
segment_idstringrequired- Segment API identifier, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_segment_getGet the details of one segment.Read-onlyGet Segment
Get the details of one segment. Returns its name, description, text description of its filters, created and updated times, and tags. Use braze_segment_get for one segment; use braze_segments_list to find segment IDs.
Inputs
segment_idstringrequired- Segment API identifier, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
braze_segments_listList segments in the workspace, 100 per page; archived segments are excluded.Read-onlyList Segments
List segments in the workspace, 100 per page; archived segments are excluded. Returns each segment's id, name, analytics_tracking_enabled flag, and tags. Use braze_segments_list to find segment IDs; use braze_segment_get for one segment's filters; use braze_segment_analytics_get for its size over time.
Inputs
pageinteger- Page of segments to return, starting at 0; each page holds up to 100. Example: 0.
sort_directionstring- Sort by creation time: desc for newest first, asc for oldest first. If omitted, Braze sorts oldest to newest. Example: desc.one of
descasc
braze_send_analytics_getGet daily stats for one tracked send of an API campaign.Read-onlyGet Send Analytics
Get daily stats for one tracked send of an API campaign. Returns a data array with per-day, per-variation stats such as sends, deliveries, opens, clicks, and conversions. Use braze_send_analytics_get for a single send_id; use braze_campaign_analytics_get for the whole campaign. Send stats are kept for 14 days after the send.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
lengthintegerrequired- How many days before ending_at to include in the series, between 1 and 100. Example: 14.
send_idstringrequired- The send identifier to report on, as created with braze_send_id_create. Example: spring_sale_2026_wave1.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
braze_sessions_analytics_getGet the number of app sessions per day or hour over a time range.Read-onlyGet Session Analytics
Get the number of app sessions per day or hour over a time range. Returns a data array of {time, sessions} entries. Use braze_sessions_analytics_get for session counts; use braze_kpi_dau_get for unique active users.
Inputs
lengthintegerrequired- How many days or hours before ending_at to include in the series, between 1 and 100. Example: 14.
app_idstring- App API identifier to limit results to one app. Example: 3a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
ending_atstring- ISO 8601 datetime the series ends on; defaults to the time of the request. Example: 2026-10-01T23:59:59Z.
segment_idstring- Analytics-enabled segment to limit results to, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
unitstring- Time between data points: day (default) or hour. Example: day.one of
dayhour
braze_sms_invalid_numbers_listList phone numbers Braze marked invalid within a date range, or check specific numbers.Read-onlyList Invalid Phone Numbers
List phone numbers Braze marked invalid within a date range, or check specific numbers. Returns sms entries with each phone number, invalid_detected_at time, and reason. Use braze_sms_invalid_numbers_list to audit undeliverable SMS numbers. Provide start_date and end_date, or phone_numbers.
Inputs
end_datestring- End of the range in YYYY-MM-DD format, inclusive through that day in UTC. Example: 2026-10-01.
limitinteger- Maximum number of results to return. Defaults to 100; maximum 500. Example: 100.
offsetinteger- Number of results to skip before returning results, for paging. Example: 0.
phone_numbersarray- Specific phone numbers in E.164 format to check instead of a date range. Example: ["+14155550123"].
reasonstring- Only return numbers invalid for this reason: provider_error, deactivated, or invalid_format. Omit for all reasons. Example: deactivated.one of
provider_errordeactivatedinvalid_format start_datestring- Start of the range in YYYY-MM-DD format, earlier than end_date. Example: 2026-09-01.
braze_subscription_group_status_getGet a user's state in one subscription group.Read-onlyGet Subscription Group Status
Get a user's state in one subscription group. Returns a status map of each identifier to Subscribed, Unsubscribed, or Unknown, regardless of the user's global email state. Use braze_subscription_group_status_get to check one group; use braze_user_subscription_groups_list to see all of a user's groups. Provide one of external_id, email, or phone.
Inputs
subscription_group_idstringrequired- ID of the subscription group. Example: 4a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
emailstring- Email address of the user, for email groups. Do not combine with phone unless external_id is set. Example: ada@example.com.
external_idstring- External ID of the user; takes precedence when combined with email or phone. Example: user_123.
phonestring- Phone number in E.164 format, for SMS and WhatsApp groups. Do not combine with email unless external_id is set. Example: +14155550123.
braze_user_subscription_groups_listList the subscription groups a user has a subscription history with.Read-onlyList User Subscription Groups
List the subscription groups a user has a subscription history with. Returns each matching user's email, phone, external_id, and subscription_groups with id, name, channel, and status. Use braze_user_subscription_groups_list to see all of a user's groups; use braze_subscription_group_status_get to check one group. Groups the user never changed state in are not listed.
Inputs
external_idstringrequired- External ID of the user. Example: user_123.
emailstring- Email address of the user, to narrow email groups. Example: ada@example.com.
limitinteger- Maximum number of results to return. Default and maximum is 100. Example: 100.
offsetinteger- Number of results to skip before returning results, for paging. Example: 0.
phonestring- Phone number of the user in E.164 format, to narrow SMS and WhatsApp groups. Example: +14155550123.
braze_campaign_duplicateCopy an existing campaign into a new campaign with a new name.WriteDuplicate Campaign
Copy an existing campaign into a new campaign with a new name. Returns message success. Use braze_campaign_duplicate to clone a campaign; use braze_canvas_duplicate to clone a Canvas.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. The campaign to copy. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
namestringrequired- Name for the new campaign. Example: Spring Sale (copy).
descriptionstring- Description for the new campaign. Example: Copy of the spring sale campaign for EMEA.
tag_namesarray- Tags for the new campaign; they must already exist and replace the original campaign's tags. Example: ["emea"].
braze_campaign_trigger_schedule_createSchedule an API-triggered campaign, whose content lives in the dashboard, to send at a set time.WriteSchedule API-Triggered Campaign
Schedule an API-triggered campaign, whose content lives in the dashboard, to send at a set time. Returns the dispatch_id and a schedule_id for later updates. Use braze_campaign_trigger_schedule_create to send later; use braze_campaign_trigger_send to send now.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
schedule_timestringrequired- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the campaign targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
recipientsarray- Up to 50 recipient objects. Each recipient names exactly one of external_user_id, user_alias, or email (email also needs a prioritization array such as ["identified", "most_recently_updated"]). A recipient can carry its own trigger_properties (overriding the request-level values), an attributes object that creates or updates profile attributes before sending, and send_to_existing_only (defaults to true; set false together with attributes to create the user). Omit recipients only when broadcast is true or audience is set. Example: [{"external_user_id": "user_123", "trigger_properties": {"order_id": "A100"}}].
send_idstring- Optional send identifier used to track analytics for this specific send separately. Create one with braze_send_id_create (or let Braze create it on first use). Example: spring_sale_2026_wave1.
trigger_propertiesobject- Personalization key-value pairs applied to every recipient in this request; reference them in the message with {{api_trigger_properties.${key}}}. Example: {"order_id": "A100", "discount": 15}.
braze_campaign_trigger_schedule_updateReplace the schedule of an API-triggered campaign send created with braze_campaign_trigger_schedule_create.WriteUpdate Scheduled API-Triggered Campaign
Replace the schedule of an API-triggered campaign send created with braze_campaign_trigger_schedule_create. Returns message success; the new schedule fully overwrites the old one. Use braze_campaign_trigger_schedule_update to move a scheduled campaign send; use braze_canvas_trigger_schedule_update for Canvases.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
schedule_idstringrequired- The schedule_id returned by braze_campaign_trigger_schedule_create. Example: 7f3d9e2a-1b4c-4d5e-9f8a-0b1c2d3e4f5a.
schedule_timestringrequired- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
braze_campaign_trigger_sendSend an API-triggered campaign, whose content lives in the Braze dashboard, to recipients right now.WriteSend API-Triggered Campaign
Send an API-triggered campaign, whose content lives in the Braze dashboard, to recipients right now. Returns a dispatch_id for the whole batch. Use braze_campaign_trigger_send to send immediately; use braze_campaign_trigger_schedule_create to send later; use braze_canvas_trigger_send for Canvases. The campaign must use API-triggered delivery.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
attachmentsarray- Email file attachments, each with a file_name (without extension), a url the file is fetched from (up to 2 MB), and optionally basic_auth_credential naming a stored credential. Not allowed when broadcast is true. Example: [{"file_name": "invoice", "url": "https://example.com/invoice.pdf"}].
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the campaign targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
recipientsarray- Up to 50 recipient objects. Each recipient names exactly one of external_user_id, user_alias, or email (email also needs a prioritization array such as ["identified", "most_recently_updated"]). A recipient can carry its own trigger_properties (overriding the request-level values), an attributes object that creates or updates profile attributes before sending, and send_to_existing_only (defaults to true; set false together with attributes to create the user). Omit recipients only when broadcast is true or audience is set. Example: [{"external_user_id": "user_123", "trigger_properties": {"order_id": "A100"}}].
send_idstring- Optional send identifier used to track analytics for this specific send separately. Create one with braze_send_id_create (or let Braze create it on first use). Example: spring_sale_2026_wave1.
trigger_propertiesobject- Personalization key-value pairs applied to every recipient in this request; reference them in the message with {{api_trigger_properties.${key}}}. Example: {"order_id": "A100", "discount": 15}.
braze_canvas_duplicateCopy an existing Canvas into a new Canvas with a new name.WriteDuplicate Canvas
Copy an existing Canvas into a new Canvas with a new name. Returns message success. Use braze_canvas_duplicate to clone a Canvas; use braze_campaign_duplicate to clone a campaign.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
namestringrequired- Name for the new Canvas. Example: Onboarding (copy).
descriptionstring- Description for the new Canvas. Example: Copy of onboarding for the beta app.
tag_namesarray- Tags for the new Canvas; they must already exist and replace the original Canvas's tags. Example: ["beta"].
braze_canvas_trigger_schedule_createSchedule recipients to enter an API-triggered Canvas at a set time.WriteSchedule API-Triggered Canvas
Schedule recipients to enter an API-triggered Canvas at a set time. Returns the dispatch_id and a schedule_id for later updates. Use braze_canvas_trigger_schedule_create to send later; use braze_canvas_trigger_send to send now.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
schedule_timestringrequired- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the Canvas targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
contextobject- Canvas context (entry) properties applied to every recipient in this request; up to 50 KB. Reference them with {{context.${key}}} (or {{canvas_entry_properties.${key}}} in older workspaces). Example: {"product_name": "shoes", "product_price": 79.99}.
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
recipientsarray- Up to 50 recipient objects. Each recipient names exactly one of external_user_id, user_alias, or email (email also needs a prioritization array such as ["identified", "most_recently_updated"]). A recipient can carry its own context (overriding the request-level values), an attributes object that creates or updates profile attributes before sending, and send_to_existing_only (defaults to true; set false together with attributes to create the user). Omit recipients only when broadcast is true or audience is set. Example: [{"external_user_id": "user_123", "context": {"order_id": "A100"}}].
braze_canvas_trigger_schedule_updateReplace the schedule of an API-triggered Canvas send created with braze_canvas_trigger_schedule_create.WriteUpdate Scheduled API-Triggered Canvas
Replace the schedule of an API-triggered Canvas send created with braze_canvas_trigger_schedule_create. Returns message success; the new schedule fully overwrites the old one. Use braze_canvas_trigger_schedule_update for Canvases; use braze_campaign_trigger_schedule_update for campaigns.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
schedule_idstringrequired- The schedule_id returned by braze_canvas_trigger_schedule_create. Example: 7f3d9e2a-1b4c-4d5e-9f8a-0b1c2d3e4f5a.
schedule_timestringrequired- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
braze_canvas_trigger_sendEnter recipients into an API-triggered Canvas right now.WriteSend API-Triggered Canvas
Enter recipients into an API-triggered Canvas right now. Returns a dispatch_id, plus a notice if the Canvas is paused or archived (in which case nothing is sent). Use braze_canvas_trigger_send to send immediately; use braze_canvas_trigger_schedule_create to send later; use braze_campaign_trigger_send for campaigns. The Canvas must use API-triggered entry.
Inputs
canvas_idstringrequired- The Canvas API identifier, found on the Canvas details page in the Braze dashboard or from braze_canvases_list. Example: 9b2c1a7e-5d4f-4e3a-8c2b-1a0f9e8d7c6b.
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the Canvas targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
contextobject- Canvas context (entry) properties applied to every recipient in this request; up to 50 KB. Reference them with {{context.${key}}} (or {{canvas_entry_properties.${key}}} in older workspaces). Example: {"product_name": "shoes", "product_price": 79.99}.
recipientsarray- Up to 50 recipient objects. Each recipient names exactly one of external_user_id, user_alias, or email (email also needs a prioritization array such as ["identified", "most_recently_updated"]). A recipient can carry its own context (overriding the request-level values), an attributes object that creates or updates profile attributes before sending, and send_to_existing_only (defaults to true; set false together with attributes to create the user). Omit recipients only when broadcast is true or audience is set. Example: [{"external_user_id": "user_123", "context": {"order_id": "A100"}}].
braze_catalog_createCreate a catalog with a name, description, and field schema.WriteCreate Catalog
Create a catalog with a name, description, and field schema. Returns the created catalog with its fields, num_items, and updated_at. Use braze_catalog_create to create a catalog; use braze_catalog_fields_create to add fields later; use braze_catalog_item_create to add items.
Inputs
descriptionstringrequired- Description of the catalog. Example: My Restaurants.
fieldsarrayrequired- Field definitions, each with a name and a type (string, number, boolean, time, geo, object, or array). The first field must be named id with type string. Example: [{"name": "id", "type": "string"}, {"name": "City", "type": "string"}, {"name": "Rating", "type": "number"}].
namestringrequired- Catalog name: letters, numbers, hyphens, and underscores. Example: restaurants.
braze_catalog_fields_createAdd fields to an existing catalog; processed asynchronously.WriteCreate Catalog Fields
Add fields to an existing catalog; processed asynchronously. Returns message success with status 202 once queued. Use braze_catalog_fields_create to extend a catalog's schema; use braze_catalog_create to create a catalog.
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
fieldsarrayrequired- New fields, each with a name and a type (string, number, boolean, time, geo, object, or array). Example: [{"name": "Cuisine", "type": "string"}].
braze_catalog_item_createCreate one item in a catalog.WriteCreate Catalog Item
Create one item in a catalog. Returns message success. Use braze_catalog_item_create for a new item; use braze_catalog_item_update to change some fields; use braze_catalog_item_replace to overwrite or upsert.
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
itemobjectrequired- The item's field values, keyed by the catalog's field names, without the id field (the ID comes from item_id). Geo fields take [longitude, latitude]. Example: {"Name": "Restaurant1", "City": "New York", "Rating": 5}.
item_idstringrequired- ID of the catalog item (the value of its id field). Example: restaurant1.
braze_catalog_item_replaceReplace a catalog item with new field values, creating it if the ID does not exist.WriteReplace Catalog Item
Replace a catalog item with new field values, creating it if the ID does not exist. Returns message success. Use braze_catalog_item_replace to overwrite or upsert; use braze_catalog_item_update to change only some fields.
- Idempotent
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
itemobjectrequired- The item's complete field values, keyed by the catalog's field names, without the id field. Example: {"Name": "Restaurant1", "City": "Boston", "Rating": 4}.
item_idstringrequired- ID of the catalog item (the value of its id field). Example: restaurant1.
braze_catalog_item_updateUpdate some fields of an existing catalog item.WriteUpdate Catalog Item
Update some fields of an existing catalog item. Returns message success. Use braze_catalog_item_update to change fields; use braze_catalog_item_replace to overwrite the whole item. Array fields accept $add and $remove operators.
- Idempotent
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
itemobjectrequired- The fields to change, keyed by the catalog's field names, without the id field. For array fields you can pass {"$add": [...], "$remove": [...]} instead of a full array. Example: {"Rating": 4, "Top_Dishes": {"$add": ["Coleslaw"]}}.
item_idstringrequired- ID of the catalog item (the value of its id field). Example: restaurant1.
braze_catalog_selection_createCreate a selection, a filtered and sorted subset of catalog items for use in messages; processed asynchronously.WriteCreate Catalog Selection
Create a selection, a filtered and sorted subset of catalog items for use in messages; processed asynchronously. Returns message success with status 202 once queued. Use braze_catalog_selection_create to define a reusable subset of a catalog.
Inputs
catalog_namestringrequired- Name of the catalog, as returned by braze_catalogs_list. Example: restaurants.
filtersarrayrequired- Up to 10 filters, each with a field, an operator, and a value. Operators depend on the field type: string supports equals and does not equal; number adds greater than and less than; boolean uses is; time uses before and after; array uses includes value and does not include value; geo uses geo within and geo outside. An empty array selects all items. Example: [{"field": "City", "operator": "equals", "value": "NYC"}].
namestringrequired- Name of the selection. Example: favorite-restaurants.
results_limitintegerrequired- Maximum number of items the selection returns, 1 to 50. Example: 10.
descriptionstring- Description of the selection. Example: Favorite restaurants in NYC.
external_idstring- Your unique identifier for the selection. Example: favorite-nyc-restaurants.
sort_fieldstring- Field to sort results by; must be paired with sort_order. Without both, results are random. Example: Rating.
sort_orderstring- Sort order, asc or desc; must be paired with sort_field. Example: desc.one of
ascdesc sourcestring- Source of the catalog data: Braze, or Shopify for Shopify catalogs. Example: Braze.one of
BrazeShopify
braze_content_block_createCreate a reusable Content Block of HTML or text.WriteCreate Content Block
Create a reusable Content Block of HTML or text. Returns the content_block_id, the generated liquid_tag, and created_at. Use braze_content_block_create for a new block; use braze_content_block_update to change one.
Inputs
contentstringrequired- HTML or text content of the block, under 50 KB; Liquid is supported. Example: <p>© 2026 Acme Inc.</p>.
namestringrequired- Name of the Content Block, under 100 characters; it also forms the Liquid tag. Example: footer_legal.
descriptionstring- Description of the block, under 250 characters. Example: Legal footer for all emails.
statestring- active or draft; defaults to active. Example: active.one of
activedraft tagsarray- Tag names to apply to the Content Block. Tags must already exist in Braze. Example: ["marketing"].
braze_content_block_updateUpdate an existing Content Block.WriteUpdate Content Block
Update an existing Content Block. Returns the content_block_id, liquid_tag, and timestamps. Use braze_content_block_update to change a block; use braze_content_block_create for a new one.
Inputs
content_block_idstringrequired- API identifier of the Content Block to update. Example: 0b5c4e8a-2d1f-4b3a-9e7c-6f5a4b3c2d1e.
contentstring- HTML or text content of the block, under 50 KB; Liquid is supported. Example: <p>© 2026 Acme Inc.</p>.
descriptionstring- Description of the block, under 250 characters. Example: Legal footer for all emails.
namestring- Name of the Content Block, under 100 characters; it also forms the Liquid tag. Example: footer_legal.
statestring- active or draft; defaults to active. Example: active.one of
activedraft tagsarray- Tag names to apply to the Content Block. Tags must already exist in Braze. Example: ["marketing"].
braze_email_subscription_status_updateSet the global email subscription state for one or more email addresses.WriteUpdate Email Subscription Status
Set the global email subscription state for one or more email addresses. Returns message success. Use braze_email_subscription_status_update for the global email state; use braze_subscription_group_status_set for a specific subscription group. Works even for addresses not yet on a profile; the state applies when the address is later added.
Inputs
emailarrayrequired- Email addresses to update, up to 50. Example: ["ada@example.com"].
subscription_statestringrequired- New global email state: subscribed (neither opted in nor out), opted_in, or unsubscribed. Example: opted_in.one of
subscribedunsubscribedopted_in
braze_email_template_createCreate an HTML email template in the Templates & Media library.WriteCreate Email Template
Create an HTML email template in the Templates & Media library. Returns the new email_template_id. Use braze_email_template_create for a new template; use braze_email_template_update to change one.
Inputs
bodystringrequired- HTML body of the email, up to 400 KB; Liquid is supported. Example: <p>Hi {{${first_name}}}, welcome!</p>.
subjectstringrequired- Subject line of the email. Example: Welcome to Acme!
template_namestringrequired- Name of the email template. Example: Welcome Email.
plaintext_bodystring- Plain-text version of the email body. Example: Hi there, welcome!
preheaderstring- Preheader text shown in inbox previews by some clients. Example: Your account is ready.
should_inline_cssboolean- Whether to inline CSS for this template; defaults to the workspace setting. Example: true.
tagsarray- Tag names to apply to the template. Tags must already exist in Braze. Example: ["marketing"].
braze_email_template_updateUpdate fields of an existing email template.WriteUpdate Email Template
Update fields of an existing email template. Returns message success. Use braze_email_template_update to change a template; use braze_email_template_create for a new one. Provide email_template_id and at least one field to change.
Inputs
email_template_idstringrequired- API identifier of the email template to update. Example: 232b6d29-7e41-4106-a0ab-1c4fe915d701.
bodystring- HTML body of the email, up to 400 KB; Liquid is supported. Example: <p>Hi {{${first_name}}}, welcome!</p>.
plaintext_bodystring- Plain-text version of the email body. Example: Hi there, welcome!
preheaderstring- Preheader text shown in inbox previews by some clients. Example: Your account is ready.
should_inline_cssboolean- Whether to inline CSS for this template; defaults to the workspace setting. Example: true.
subjectstring- Subject line of the email. Example: Welcome to Acme!
tagsarray- Tag names to apply to the template. Tags must already exist in Braze. Example: ["marketing"].
template_namestring- Name of the email template. Example: Welcome Email.
braze_media_library_asset_createAdd an image, document, or ZIP file to the Braze media library from a public URL.WriteUpload Media Library Asset
Add an image, document, or ZIP file to the Braze media library from a public URL. Returns the uploaded asset details, or an error code such as UNSUPPORTED_FILE_TYPE or FAILED_TO_DOWNLOAD_ASSET. Use braze_media_library_asset_create to import assets by URL; direct binary uploads are not supported by this tool. Limited to 100 requests per hour.
Inputs
asset_urlstringrequired- Publicly accessible HTTP or HTTPS URL that Braze downloads the file from. Images (GIF, ICO, JPEG, PNG, WebP, SVG) and documents (PDF, DOC/DOCX, PPT/PPTX, XLS/XLSX) up to 5 MB, or ZIP files up to 50 MB. Example: https://cdn.example.com/assets/cat.jpg.
namestring- Name shown in the media library; for ZIP files it is used as a numbered prefix. Defaults to the original file name. Example: Cat Graphic.
braze_messages_schedule_createSchedule a message, with content defined in the request, to send at a set time to users, a segment, or a Connected Audience.WriteSchedule Message
Schedule a message, with content defined in the request, to send at a set time to users, a segment, or a Connected Audience. Returns the dispatch_id and a schedule_id to update the schedule later. Use braze_messages_schedule_create for API-only content; use braze_campaign_trigger_schedule_create or braze_canvas_trigger_schedule_create to schedule dashboard-built messages.
Inputs
messagesobjectrequired- Messaging objects keyed by channel: apple_push, android_push, kindle_push, web_push, email, sms, webhook, content_card or whats_app. Each value follows Braze's messaging object for that channel; for email you typically pass app_id, from, subject and body. Example: {"email": {"app_id": "your_app_id", "from": "Acme <hello@acme.com>", "subject": "Welcome", "body": "<p>Hi {{${first_name}}}</p>"}}.
schedule_timestringrequired- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the campaign or Canvas targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
campaign_idstring- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Needed to track results against an API campaign. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
external_user_idsarray- List of up to 50 external user IDs to send to. The users must already exist in Braze. Example: ["user_123", "user_456"].
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
override_messaging_limitsboolean- Ignore frequency capping rules for this send; defaults to false. Example: false.
recipient_subscription_statestring- Which users can receive the message by subscription state: opted_in (only explicitly opted-in users), subscribed (subscribed or opted in; the Braze default), or all (includes unsubscribed users, for transactional email only). Example: subscribed.one of
opted_insubscribedall segment_idstring- Segment to send to, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
send_idstring- Optional send identifier used to track analytics for this specific send separately. Create one with braze_send_id_create (or let Braze create it on first use). Example: spring_sale_2026_wave1.
user_aliasesarray- List of user alias objects, each with an alias name and an alias label. Example: [{"alias_name": "device123", "alias_label": "device_id"}].
braze_messages_schedule_updateChange the send time or content of a message scheduled with braze_messages_schedule_create.WriteUpdate Scheduled Message
Change the send time or content of a message scheduled with braze_messages_schedule_create. Returns message success. Use braze_messages_schedule_update for API-only scheduled messages; use braze_campaign_trigger_schedule_update or braze_canvas_trigger_schedule_update for API-triggered schedules. Provide schedule_time, messages, or both.
Inputs
schedule_idstringrequired- The schedule_id returned by braze_messages_schedule_create. Example: 7f3d9e2a-1b4c-4d5e-9f8a-0b1c2d3e4f5a.
at_optimal_timeboolean- If true, use Intelligent Delivery to send on the day of schedule_time at each user's optimal time. Example: false.
in_local_timeboolean- If true, send at schedule_time in each user's local time zone instead of UTC. Example: false.
messagesobject- Messaging objects keyed by channel: apple_push, android_push, kindle_push, web_push, email, sms, webhook, content_card or whats_app. Each value follows Braze's messaging object for that channel; for email you typically pass app_id, from, subject and body. Example: {"email": {"app_id": "your_app_id", "from": "Acme <hello@acme.com>", "subject": "Welcome", "body": "<p>Hi {{${first_name}}}</p>"}}.
schedule_timestring- When to send, as an ISO 8601 datetime. Interpreted in UTC unless in_local_time is true, in which case it is the send time in each user's local time zone. Example: 2026-11-01T15:00:00Z.
braze_messages_sendSend a message immediately to specific users, a segment, or a Connected Audience, with the message content defined in the request.WriteSend Messages Now
Send a message immediately to specific users, a segment, or a Connected Audience, with the message content defined in the request. Returns a dispatch_id identifying this send. Use braze_messages_send for API-only content; use braze_campaign_trigger_send or braze_canvas_trigger_send to send content built in the dashboard. Recipients named by external ID or alias must already exist in Braze.
Inputs
messagesobjectrequired- Messaging objects keyed by channel: apple_push, android_push, kindle_push, web_push, email, sms, webhook, content_card or whats_app. Each value follows Braze's messaging object for that channel; for email you typically pass app_id, from, subject and body. Example: {"email": {"app_id": "your_app_id", "from": "Acme <hello@acme.com>", "subject": "Welcome", "body": "<p>Hi {{${first_name}}}</p>"}}.
audienceobject- Connected Audience filter object; the message goes only to users matching these filters. Combine filters with AND/OR arrays; each filter targets a custom attribute, a subscription status, or last-used-app time. Example: {"AND": [{"custom_attribute": {"custom_attribute_name": "eye_color", "comparison": "equals", "value": "blue"}}, {"email_subscription_status": {"comparison": "is", "value": "opted_in"}}]}.
broadcastboolean- Set to true only when sending to the entire segment that the campaign or Canvas targets in the dashboard, without listing recipients. When true, you cannot include recipients. Defaults to false; use with care because it can message a much larger audience than intended. Example: false.
campaign_idstring- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Needed to track sends, opens, and clicks against an API campaign. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
external_user_idsarray- List of up to 50 external user IDs to send to. The users must already exist in Braze. Example: ["user_123", "user_456"].
override_frequency_cappingboolean- Ignore frequency capping rules for this send; defaults to false. Example: false.
recipient_subscription_statestring- Which users can receive the message by subscription state: opted_in (only explicitly opted-in users), subscribed (subscribed or opted in; the Braze default), or all (includes unsubscribed users, for transactional email only). Example: subscribed.one of
opted_insubscribedall segment_idstring- Segment to send to; combined with user lists it limits the send to those users who are in the segment, from braze_segments_list or Settings > APIs and Identifiers in the dashboard. Example: 2f6c8a1e-9d3b-4c7a-b5e2-0f1a2b3c4d5e.
send_idstring- Optional send identifier used to track analytics for this specific send separately. Create one with braze_send_id_create (or let Braze create it on first use). Example: spring_sale_2026_wave1.
user_aliasesarray- List of user alias objects, each with an alias name and an alias label. Example: [{"alias_name": "device123", "alias_label": "device_id"}].
braze_preference_center_createCreate an email preference center from your own HTML.WriteCreate Preference Center
Create an email preference center from your own HTML. Returns the preference_center_api_id, its liquid_tag, and created_at. Use braze_preference_center_create for a new center; use braze_preference_center_update to change one. Limited to 10 requests per minute.
Inputs
confirmation_page_htmlstringrequired- HTML for the confirmation page shown after a user saves preferences. Example: <html><body><p>Your preferences were saved.</p></body></html>.
namestringrequired- Name of the preference center: letters, numbers, hyphens, and underscores only, no spaces. It cannot be changed later. Example: email_preferences.
preference_center_page_htmlstringrequired- HTML for the preference center page; use Braze Liquid such as {{preference_center_submit_url}} and form_field_name tags to bind subscription inputs. Example: <html><body><form action="{{preference_center_submit_url}}" method="post">...</form></body></html>.
optionsobject- Optional page settings: meta-viewport-content (the content value of a viewport meta tag) and links-tags (favicon link tags, each with rel such as icon, shortcut icon, or apple-touch-icon, an href, and optional type, sizes, and color). Example: {"meta-viewport-content": "width=device-width, initial-scale=1"}.
preference_center_titlestring- Title of the preference center and confirmation pages; defaults to Preference Center. Example: Email Preferences.
statestring- active or draft; defaults to active. Example: active.one of
activedraft
braze_preference_center_updateUpdate an existing preference center's HTML, title, state, or options.WriteUpdate Preference Center
Update an existing preference center's HTML, title, state, or options. Returns the preference_center_api_id and timestamps. Use braze_preference_center_update to change a center; use braze_preference_center_create for a new one.
- Idempotent
Inputs
confirmation_page_htmlstringrequired- HTML for the confirmation page shown after a user saves preferences. Example: <html><body><p>Your preferences were saved.</p></body></html>.
preference_center_idstringrequired- API identifier of the preference center, from braze_preference_centers_list. Example: 8efc52aa-935e-42b7-bd6b-98f43bb9b0f1.
preference_center_page_htmlstringrequired- HTML for the preference center page; use Braze Liquid such as {{preference_center_submit_url}} and form_field_name tags to bind subscription inputs. Example: <html><body><form action="{{preference_center_submit_url}}" method="post">...</form></body></html>.
optionsobject- Optional page settings: meta-viewport-content (the content value of a viewport meta tag) and links-tags (favicon link tags, each with rel such as icon, shortcut icon, or apple-touch-icon, an href, and optional type, sizes, and color). Example: {"meta-viewport-content": "width=device-width, initial-scale=1"}.
preference_center_titlestring- Title of the preference center and confirmation pages; defaults to Preference Center. Example: Email Preferences.
statestring- active or draft. Example: active.one of
activedraft
braze_send_id_createCreate a send identifier for a campaign so its sends can be tracked separately.WriteCreate Send ID
Create a send identifier for a campaign so its sends can be tracked separately. Returns message success and the send_id. Use the send_id with braze_messages_send or braze_campaign_trigger_send, then read results with braze_send_analytics_get. Limited to 100 send IDs per workspace per day.
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
send_idstring- The send identifier to create; omit to let Braze generate one. Example: spring_sale_2026_wave1.
braze_subscription_group_status_setUpdate the subscription state of up to 50 users in one email, SMS, or RCS subscription group.WriteSet Subscription Group Status
Update the subscription state of up to 50 users in one email, SMS, or RCS subscription group. Returns message success. Use braze_subscription_group_status_set for one group; use braze_subscription_group_status_set_v2 to update several groups in one call; use braze_email_subscription_status_update for the global email state. Identify users by external_id, plus either email (email groups) or phone (SMS/RCS groups), but not both.
Inputs
subscription_group_idstringrequired- ID of the subscription group, from the Subscription Groups page in the dashboard. Example: 4a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d.
subscription_statestringrequired- subscribed to add users to the group, unsubscribed to remove them. Example: subscribed.one of
subscribedunsubscribed emailarray- For email groups: up to 50 email addresses; every profile sharing an address is updated. Do not combine with phone. Example: ["ada@example.com"].
external_idarray- External IDs of up to 50 users. Required unless email or phone is given. Example: ["user_123"].
phonearray- For SMS/RCS groups: up to 50 phone numbers in E.164 format; every profile sharing a number is updated. Do not combine with email. Example: ["+14155550123"].
use_double_opt_in_logicboolean- SMS groups only: set true with subscription_state subscribed to enter users into the SMS double opt-in workflow. Defaults to false. Example: false.
braze_subscription_group_status_set_v2Update subscription states across one or more subscription groups in a single request.WriteSet Subscription Group Status (Batch)
Update subscription states across one or more subscription groups in a single request. Returns message success. Use braze_subscription_group_status_set_v2 to change several groups at once; use braze_subscription_group_status_set for a single group. Use external_ids to mix email and SMS groups in one call; emails and phones cannot be combined.
Inputs
subscription_groupsarrayrequired- One object per subscription group. Each needs subscription_group_id, subscription_state (subscribed or unsubscribed), and up to 50 users given as external_ids, emails, or phones (E.164); SMS groups also accept use_double_opt_in_logic. Example: [{"subscription_group_id": "4a8b9c0d-1e2f-4a5b-8c7d-6e5f4a3b2c1d", "subscription_state": "subscribed", "external_ids": ["user_123"]}].
braze_transactional_email_sendSend a one-to-one transactional email, such as an order confirmation or password reset, from a Transactional Email campaign.WriteSend Transactional Email
Send a one-to-one transactional email, such as an order confirmation or password reset, from a Transactional Email campaign. Returns a dispatch_id, status, and metadata for this send. Use braze_transactional_email_send for single-user transactional email; use braze_campaign_trigger_send for batched API-triggered campaigns. Requires a Transactional Email campaign (available on select Braze packages).
Inputs
campaign_idstringrequired- The campaign API identifier, found on the campaign's details page in the Braze dashboard, under Settings > APIs and Identifiers, or from braze_campaigns_list. Must be a Transactional Email campaign. Example: 4cf9b8b8-3b1c-4a0a-9b9e-2a8b2c1d3e4f.
recipientobjectrequired- The single user to email: exactly one of external_user_id or user_alias, plus an optional attributes object that creates or updates the profile before sending (first_name, last_name, and email are applied synchronously). Example: {"external_user_id": "user_123", "attributes": {"email": "ada@example.com"}}.
external_send_idstring- Your own Base64-compatible identifier for this send (letters, digits, -, _, +, /, =). It appears in transactional postback events and deduplicates repeat requests for 24 hours. Example: b3JkZXItMTAwMQ==.
trigger_propertiesobject- Personalization key-value pairs applied to every recipient in this request; reference them in the message with {{api_trigger_properties.${key}}}. Example: {"order_id": "A100", "discount": 15}.
braze_user_alias_createAdd aliases to existing identified users, or create new alias-only users.WriteCreate User Alias
Add aliases to existing identified users, or create new alias-only users. Returns message success with aliases_processed; an alias name and label pair that already exists is silently skipped. Use braze_user_alias_create to add an alias; use braze_user_alias_update to rename one.
Inputs
user_aliasesarrayrequired- Up to 50 new alias objects, each with alias_name and alias_label. Include external_id to add the alias to that existing user; omit it to create a new alias-only user. Example: [{"external_id": "user_123", "alias_name": "crm-8812", "alias_label": "crm_id"}].
braze_user_alias_updateRename existing user aliases by label.WriteUpdate User Alias
Rename existing user aliases by label. Returns message success; aliases whose label and old name match no user are skipped. Use braze_user_alias_update to rename an alias; use braze_user_alias_create to add a new one.
Inputs
alias_updatesarrayrequired- Up to 50 update objects, each with alias_label, old_alias_name, and new_alias_name. Update order is not guaranteed. Example: [{"alias_label": "crm_id", "old_alias_name": "crm-8812", "new_alias_name": "crm-9900"}].
braze_users_export_by_idsExport full user profiles for specific users by external ID, alias, Braze ID, device ID, email, or phone.WriteExport Users by Identifier
Export full user profiles for specific users by external ID, alias, Braze ID, device ID, email, or phone. Returns a users array with each profile's attributes, custom events, purchases, devices, and message history, plus any identifiers that matched no user. Use braze_users_export_by_ids to read profiles; use braze_users_track to write them.
Inputs
braze_idstring- Braze identifier for a particular user. Example: 5cd5f3c5b6c4f43b72e8c84a.
device_idstring- Device identifier as returned by the Braze SDK's getDeviceId. Only one of device_id, email_address, or phone per request. Example: 1234567.
email_addressstring- Email address of the user. Only one of device_id, email_address, or phone per request. Example: ada@example.com.
external_idsarray- External IDs of up to 50 users to export. Example: ["user_123", "user_456"].
fields_to_exportarray- Names of profile fields to return, such as first_name, email, custom_attributes, purchases, or custom_events. Required for workspaces onboarded on or after August 22, 2024, and needed for the faster 40 requests/second rate limit. Example: ["first_name", "email", "custom_attributes"].
phonestring- Phone number of the user in E.164 format. Only one of device_id, email_address, or phone per request. Example: +14155550123.
user_aliasesarray- List of user alias objects, each with an alias name and an alias label. Up to 50 aliases per request. Example: [{"alias_name": "device123", "alias_label": "device_id"}].
braze_users_identifyIdentify alias-only, email-only, or phone-only user profiles by merging them into a profile with an external ID.WriteIdentify Users
Identify alias-only, email-only, or phone-only user profiles by merging them into a profile with an external ID. Returns message success with aliases_processed; a success does not guarantee a merge happened (alias names are case-sensitive). Use braze_users_identify after braze_user_alias_create to attach an external ID to an anonymous profile. Provide at least one of aliases_to_identify, emails_to_identify, or phone_numbers_to_identify.
Inputs
aliases_to_identifyarray- Up to 50 objects, each pairing an external_id with the user_alias (alias_name and alias_label) of the anonymous profile to merge into it. Example: [{"external_id": "user_123", "user_alias": {"alias_name": "device123", "alias_label": "device_id"}}].
emails_to_identifyarray- Objects pairing an external_id with an email and a prioritization array that decides which profile wins when several share the email (allowed values: identified or unidentified, plus most_recently_updated or least_recently_updated). Example: [{"external_id": "user_123", "email": "ada@example.com", "prioritization": ["unidentified", "most_recently_updated"]}].
phone_numbers_to_identifyarray- Objects pairing an external_id with a phone number (E.164) and a prioritization array, as for emails_to_identify. Example: [{"external_id": "user_123", "phone": "+14155550123", "prioritization": ["unidentified", "most_recently_updated"]}].
braze_users_trackCreate or update user profiles, log custom events, and record purchases in one request.WriteTrack Users
Create or update user profiles, log custom events, and record purchases in one request. Returns message success with counts of attributes, events, and purchases queued, plus any non-fatal errors. Use braze_users_track to write profile data; use braze_users_export_by_ids to read profiles back. Each object must identify its user with one of external_id, user_alias, braze_id, email, or phone.
Inputs
attributesarray- User attribute objects. Each object identifies one user (external_id, user_alias, braze_id, email, or phone) and sets standard fields such as first_name, email, or email_subscribe, plus any custom attributes as extra keys. Set _update_existing_only to false to create a new profile. Up to 75 objects in total across attributes, events, and purchases. Example: [{"external_id": "user_123", "first_name": "Ada", "loyalty_tier": "gold"}].
eventsarray- Custom event objects. Each needs a user identifier, the event name, and an ISO 8601 time; it can also carry an app_id and a properties object. Example: [{"external_id": "user_123", "name": "rented_movie", "time": "2026-10-01T19:20:45Z", "properties": {"title": "Up"}}].
group_idstring- Beta: an ID you choose to group this request with related requests so you can later check their processing status. Example: loyalty_backfill_2026-10-01.
purchasesarray- Purchase objects. Each needs a user identifier, a product_id, a three-letter currency code, a price, and an ISO 8601 time; quantity and properties are optional. Example: [{"external_id": "user_123", "product_id": "backpack", "currency": "USD", "price": 49.99, "time": "2026-10-01T18:47:12Z"}].
No tools match.