Braze Messaging > Send Messages API
The Messaging > Send Messages API from Braze — 5 operation(s) for messaging > send messages.
The Messaging > Send Messages API from Braze — 5 operation(s) for messaging > send messages.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/braze-messaging-send-messages-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Braze Messaging > Send Messages API
description: The Braze and Radar integration allows you to access sophisticated location-based campaign triggers and user profile enrichment with rich, first-party location data.
version: 1.0.0
servers:
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-01.braze.com
description: REST endpoint for instance US-01
- url: https://rest.iad-02.braze.com
description: REST endpoint for instance US-02
- url: https://rest.iad-03.braze.com
description: REST endpoint for instance US-03
- url: https://rest.iad-04.braze.com
description: REST endpoint for instance US-04
- url: https://rest.iad-05.braze.com
description: REST endpoint for instance US-05
- url: https://rest.iad-06.braze.com
description: REST endpoint for instance US-06
- url: https://rest.iad-08.braze.com
description: REST endpoint for instance US-08
- url: https://rest.fra-01.braze.eu
description: REST endpoint for instance EU-01
- url: https://rest.fra-02.braze.eu
description: REST endpoint for instance EU-02
security:
- BearerAuth: []
tags:
- name: Messaging > Send Messages
paths:
/sends/id/create:
post:
tags:
- Messaging > Send Messages
summary: Create Send IDs For Message Send Tracking
description: '> Use this endpoint to create send IDs that can be used to send messages and track message performance programatically, without campaign creation for each send.
To use this endpoint, youll need to generate an API key with the `sends.id.create` permission.
Using the send identifier to track and send messages is useful if you are planning to programmatically generate and send content.
## Rate limit
The daily maximum number of custom send identifiers that can be created via this endpoint is 100 for a given app group. Each `send_id` and `campaign_id` combination that you create will count towards your daily limit. The response headers for any valid request include the current rate limit status, see API rate limits for details.
### Request parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `campaign_id` | Required | String | See campaign identifier. |
| `send_id` | Optional | String | See send identifier. |
## Response
### Example success response
``` json
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"message": "success",
"send_id" : (string) the send identifier
}
```'
requestBody:
content:
application/json:
schema:
type: object
example:
campaign_id: campaign_identifier
send_id: send_identifier
properties:
campaign_id:
type: string
send_id:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postSendsIdCreate
x-operation-id-source: derived
/messages/send:
post:
tags:
- Messaging > Send Messages
summary: Send Messages Immediately via API Only
description: '> Use this endpoint to send immediate, ad-hoc messages to designated users via the Braze API.
To use this endpoint, youll need to generate an API key with the `messages.send` permission.
Be sure to include Messaging Objects in your body to complete your requests.
If you are targeting a segment, a record of your request will be stored in the Developer Console.
## Rate limit
When specifying a segment or Connected Audience in your request, we apply a rate limit of 250 requests per minute to this endpoint. Otherwise, if specifying an `external_id`, this endpoint has a default rate limit of 250,000 requests per hour, as documented in API rate limits.
Braze endpoints support batching API requests. A single request to the messaging endpoints can reach any of the following:
- Up to 50 specific `external_ids`, each with individual message parameters
- A segment of any size created in the Braze dashboard, specified by its `segment_id`
- An ad-hoc audience segment of any size, defined in the request as a Connected Audience object
### Request parameters
| Parameter | Required | Data Type | Description |
| --- | --- | --- | --- |
| `broadcast` | Optional | Boolean | See broadcast. This parameter defaults to false (as of August 31, 2017).
If `recipients` is omitted, `broadcast` must be set to true. However, use caution when setting `broadcast: true`, as unintentionally setting this flag may cause you to send your messages to a larger than expected audience. |
| `external_user_ids` | Optional | Array of strings | See external user ID. |
| `user_aliases` | Optional | Array of user alias objects | See user alias object. |
| `segment_id` | Optional | String | See segment identifier. |
| `audience` | Optional | Connected audience object | See connected audience. |
| `campaign_id` | Optional\* | String | See campaign identifier for more information.
\*Required if you wish to track campaign stats (e.g. sends, clicks, bounces, etc) on the Braze dashboard. |
| `send_id` | Optional | String | See send identifier |
| `override_frequency_capping` | Optional | Boolean | Ignore \`frequency_capping\` for campaigns, defaults to false. |
| `recipient_subscription_state` | Optional | String | Use this to send messages to only users who have opted in (`opted_in`), only users who have subscribed or are opted in (`subscribed`) or to all users, including unsubscribed users (`all`).
Using `all` users is useful for transactional email messaging. Defaults to `subscribed`. |
| `messages` | Optional | Messaging objects | See available messaging objects. |
## Response details
Message sending endpoint responses will include the messages `dispatch_id` for reference back to the dispatch of the message. The `dispatch_id` is the id of the message dispatch (unique id for each transmission sent from the Braze platform). For more, information refer to Dispatch ID behavior.'
requestBody:
content:
application/json:
schema:
type: object
example:
broadcast: 'false'
external_user_ids: external_user_identifiers
user_aliases:
alias_name: example_name
alias_label: example_label
segment_id: segment_identifier
audience:
AND:
- custom_attribute:
custom_attribute_name: eye_color
comparison: equals
value: blue
- custom_attribute:
custom_attribute_name: favorite_foods
comparison: includes_value
value: pizza
- OR:
- custom_attribute:
custom_attribute_name: last_purchase_time
comparison: less_than_x_days_ago
value: 2
- push_subscription_status:
comparison: is
value: opted_in
- email_subscription_status:
comparison: is_not
value: subscribed
- last_used_app:
comparison: after
value: 2019-07-22T13:17:55+0000
campaign_id: campaign_identifier
send_id: send_identifier
override_frequency_capping: 'false'
recipient_subscription_state: all
messages:
android_push: (optional, Android Push Object)
apple_push: (optional, Apple Push Object)
content_card: (optional, Content Card Object)
email: (optional, Email Object)
kindle_push: (optional, Kindle/FireOS Push Object)
web_push: (optional, Web Push Object)
windows_phone8_push: (optional, Windows Phone 8 Push Object)
windows_universal_push: (optional, Windows Universal Push Object)
properties:
broadcast:
type: string
external_user_ids:
type: string
user_aliases:
type: object
properties:
alias_name:
type: string
alias_label:
type: string
segment_id:
type: string
audience:
type: object
properties:
AND:
type: array
items:
type: object
campaign_id:
type: string
send_id:
type: string
override_frequency_capping:
type: string
recipient_subscription_state:
type: string
messages:
type: object
properties:
android_push:
type: string
apple_push:
type: string
content_card:
type: string
email:
type: string
kindle_push:
type: string
web_push:
type: string
windows_phone8_push:
type: string
windows_universal_push:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postMessagesSend
x-operation-id-source: derived
/transactional/v1/campaigns/{campaign_id}/send:
post:
tags:
- Messaging > Send Messages
summary: Send Transactional Email via API Triggered Delivery
description: '> Use this endpoint to send immediate, ad-hoc transactional messages to a designated user.'
requestBody:
content:
application/json:
schema:
type: object
example:
external_send_id: YOUR_BASE64_COMPATIBLE_ID
trigger_properties:
example_string_property: YOUR_EXAMPLE_STRING
example_integer_property: YOUR_EXAMPLE_INTEGER
recipient:
- external_user_id: TARGETED_USER_ID_STRING
properties:
external_send_id:
type: string
trigger_properties:
type: object
properties:
example_string_property:
type: string
example_integer_property:
type: string
recipient:
type: array
items:
type: object
properties:
external_user_id:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
- name: campaign_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postTransactionalV1CampaignsByCampaignIdSend
x-operation-id-source: derived
/campaigns/trigger/send:
post:
tags:
- Messaging > Send Messages
summary: Send Campaign Messages via API Triggered Delivery
description: '> Use this endpoint to send immediate, ad-hoc messages to designated users via API-triggered delivery.'
requestBody:
content:
application/json:
schema:
type: object
example:
campaign_id: campaign_identifier
send_id: send_identifier
trigger_properties: {}
broadcast: false
audience:
AND:
- custom_attribute:
custom_attribute_name: eye_color
comparison: equals
value: blue
- custom_attribute:
custom_attribute_name: favorite_foods
comparison: includes_value
value: pizza
- OR:
- custom_attribute:
custom_attribute_name: last_purchase_time
comparison: less_than_x_days_ago
value: 2
- push_subscription_status:
comparison: is
value: opted_in
- email_subscription_status:
comparison: is_not
value: subscribed
- last_used_app:
comparison: after
value: 2019-07-22T13:17:55+0000
recipients:
- user_alias:
alias_name: example_name
alias_label: example_label
external_user_id: external_user_identifier
trigger_properties: {}
send_to_existing_only: true
attributes:
first_name: Alex
properties:
campaign_id:
type: string
send_id:
type: string
trigger_properties:
type: object
broadcast:
type: boolean
audience:
type: object
properties:
AND:
type: array
items:
type: object
recipients:
type: array
items:
type: object
properties:
user_alias:
type: object
properties:
alias_name:
type: string
alias_label:
type: string
external_user_id:
type: string
trigger_properties:
type: object
send_to_existing_only:
type: boolean
attributes:
type: object
properties:
first_name:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postCampaignsTriggerSend
x-operation-id-source: derived
/canvas/trigger/send:
post:
tags:
- Messaging > Send Messages
summary: Send Canvas Messages via API Triggered Delivery
description: '> Use this endpoint to send Canvas messages via API-triggered delivery.'
requestBody:
content:
application/json:
schema:
type: object
example:
canvas_id: canvas_identifier
canvas_entry_properties:
product_name: shoes
product_price: 79.99
broadcast: false
audience:
AND:
- custom_attribute:
custom_attribute_name: eye_color
comparison: equals
value: blue
- custom_attribute:
custom_attribute_name: favorite_foods
comparison: includes_value
value: pizza
- OR:
- custom_attribute:
custom_attribute_name: last_purchase_time
comparison: less_than_x_days_ago
value: 2
- push_subscription_status:
comparison: is
value: opted_in
- email_subscription_status:
comparison: is_not
value: subscribed
- last_used_app:
comparison: after
value: 2019-07-22T13:17:55+0000
recipients:
- user_alias:
alias_name: example_name
alias_label: example_label
external_user_id: user_identifier
trigger_properties: {}
canvas_entry_properties: ''
send_to_existing_only: true
attributes:
first_name: Alex
properties:
canvas_id:
type: string
canvas_entry_properties:
type: object
properties:
product_name:
type: string
product_price:
type: number
broadcast:
type: boolean
audience:
type: object
properties:
AND:
type: array
items:
type: object
recipients:
type: array
items:
type: object
properties:
user_alias:
type: object
properties:
alias_name:
type: string
alias_label:
type: string
external_user_id:
type: string
trigger_properties:
type: object
canvas_entry_properties:
type: string
send_to_existing_only:
type: boolean
attributes:
type: object
properties:
first_name:
type: string
parameters:
- name: Content-Type
in: header
schema:
type: string
example: application/json
- name: Authorization
in: header
schema:
type: string
example: Bearer {{api_key}}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'201':
description: Successful response
content:
application/json:
schema:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
operationId: postCanvasTriggerSend
x-operation-id-source: derived
components:
responses:
Unauthorized:
description: 401 Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: 400 Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: 404 Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: 403 Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InternalServerError:
description: 500 Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: 429 Rate Limited
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
message:
type: string
errors:
type: array
items:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer