Objet WhatsApp
L’objet
whats_appvous permet de modifier ou de créer des messages WhatsApp via nos endpoints d’envoi de messages.
Objet WhatsApp
{
"app_id": (required, string) see App Identifier,
"subscription_group_id": (required, string) the ID of your subscription group,
"message_variation_id": (optional, string) used when providing a campaign_id to specify which message variation this message should be tracked under,
"message_type": (required, string) the type of WhatsApp message being sent under the `message` key (template_message | text_response_message | text_image_response_message | quick_reply_response_message | list_response_message | flow_response_message | carousel_response_message),
"message": (required, object) The message object that must include the required fields based on the selected `message_type`. Below are the specific message structures for each type. Refer to the relevant message type for the required fields and their format.
}
Types de messages
template_message
{
"template_name": (required, string) the WhatsApp template name for the message,
"template_language_code": (required, string) the language code of the WhatsApp template for the message,
"header_variables": (optional, header variables object) an object to specify header variable values for specified template_name, required if the header has variables; see object specification below,
"body_variables": (optional, body variable object) an object to specify body variable values for specified template_name, required if the body has variables; see object specification below,
"button_variables": (optional, button variables object) an object to specify button variable values for specified template_name, required if buttons have variables; see object specification below,
"header_media_uri": (optional, string) URI to the header media, if the header is of type IMAGE in specified template_name. Only IMAGE and TEXT header types are supported by the messages/send API,
"carousel_cards": (optional, array) an array of carousel card objects, required if the specified template_name is a carousel template; see object specification below
}

L’envoi de médias (documents, vidéos et autres types de médias) n’est pas pris en charge par l’API messages/send. Seuls les types d’en-tête TEXT et IMAGE sont pris en charge pour les messages de modèle envoyés via l’API. Si votre modèle WhatsApp utilise un en-tête de type DOCUMENT, VIDEO ou un autre type de média, vous ne pouvez pas l’envoyer avec l’API messages/send. Utilisez l’API Campaigns déclenchées ou le tableau de bord de Braze pour envoyer des modèles avec des en-têtes médias. Cela s’applique uniquement à l’en-tête principal du modèle ; les médias des cartes du carrousel prennent en charge les images et les vidéos.
Objet carte de carrousel
Chaque carte de carrousel remplit une carte d’un modèle de carrousel approuvé, dans l’ordre. La carte à l’index 0 remplit la première carte du modèle.
{
"header_media_uri": (required, string) URI to the card's header media; must be Braze-hosted media,
"header_media_type": (required, string) The type of the card's header media (image | video),
"body_variables": (optional, body variables object) Values for the card's body variables, in the same format as the template-level body_variables,
"button_variables": (optional, button variables object) Values for the card's button variables, in the same format as the template-level button_variables
}
Contraintes
carousel_cards: doit contenir entre 2 et 10 cartes, correspondant au nombre de cartes du modèle approuvé.header_media_uri: doit faire référence à un média hébergé dans la bibliothèque multimédia de Braze.header_media_type: toutes les cartes doivent utiliser le même type de média, correspondant au modèle approuvé.
Exemple
{
"template_name": "weekly_picks",
"template_language_code": "en",
"body_variables": {
"0": "Jane"
},
"carousel_cards": [
{
"header_media_uri": "https://braze-images.com/card1.png",
"header_media_type": "image",
"body_variables": {
"0": "Runner X"
}
},
{
"header_media_uri": "https://braze-images.com/card2.png",
"header_media_type": "image",
"body_variables": {
"0": "Trail Pro"
},
"button_variables": {
"0": "/promo/123"
}
}
]
}
Objet variables d’en-tête
L’objet header_variables vous permet de spécifier des valeurs pour les variables d’en-tête dans le modèle WhatsApp. Chaque clé correspond à l’index de variable du modèle WhatsApp (indexé à partir de zéro) à remplacer par la valeur spécifiée.

Vous ne pouvez utiliser header_variables qu’avec des modèles dont les en-têtes sont de type TEXT. Pour les en-têtes de type IMAGE, utilisez plutôt header_media_uri. Les types d’en-tête DOCUMENT, VIDEO et autres types de médias ne sont pas pris en charge par l’API messages/send.
header_image_uri est utilisé uniquement pour les types de messages de réponse (comme quick_reply_response_message), pas pour les messages de modèle.
{
"$TEMPLATE_VARIABLE_INDEX_0": "$TEMPLATE_VARIABLE_VALUE_0"
}
Actuellement, seules zéro ou une variable d’en-tête peuvent être spécifiées.
Exemple
{
"0": "Check it out!"
}
Objet variables de corps
L’objet body_variables vous permet de spécifier des valeurs pour les variables de corps dans le modèle WhatsApp. Chaque clé correspond à l’index de variable du modèle WhatsApp (indexé à partir de zéro) à remplacer par la valeur spécifiée.
{
"$TEMPLATE_VARIABLE_INDEX_0": "$TEMPLATE_VARIABLE_VALUE_0",
"$TEMPLATE_VARIABLE_INDEX_1": "$TEMPLATE_VARIABLE_VALUE_1"
}
Exemple
{
"0": "Check it out!",
"1": "It's pretty neat."
}
Objet variables de bouton
L’objet button_variables vous permet de spécifier des valeurs pour les variables de bouton dans le modèle WhatsApp. Chaque clé correspond à l’index de variable du modèle WhatsApp (indexé à partir de zéro) à remplacer par la valeur spécifiée.
{
"$TEMPLATE_VARIABLE_INDEX_1": "$TEMPLATE_VARIABLE_VALUE_1"
}
Actuellement, une seule variable de bouton peut être spécifiée, correspondant au composant de chemin d’une URL d’appel à l’action. L’index de la variable doit correspondre à l’index du bouton URL CTA dans le modèle. Par exemple, si votre bouton CTA est le deuxième bouton de votre modèle, utilisez l’index de variable « 1 ».
Exemple
{
"1": "/marketing/promotion123"
}
Messages de réponse
text_response_message
{
"body": (required, string) the body of the message to send,
"preview_url": (optional, boolean) whether WhatsApp should render a preview of links included in body
}
Exemple
{
"body": "Check out our new deals at https://braze.com",
"preview_url": true
}
text_image_response_message
{
"image_uri": (required, string) the uri of the image to send,
"caption": (optional, string) the caption for the image being sent
}
Exemple
{
"image_uri": "https://braze.com/promotion.jpg",
"caption": "This won't last for long, check it out!"
}
quick_reply_response_message
{
"body": (required, string) the body of the message to send,
"header_image_uri": (optional, string) the URI of the image to send as the message header (only valid if header_text not present),
"header_text": (optional, string) the text to send as the message header (only valid if header_image_uri not present),
"footer": (optional, string) the footer of the message to send,
"buttons": (required, array) array of Button objects. Will render in message based on order in array.
}
Objet bouton
{
"text": (required, string) the text of the button
}
Exemple
{
"body": "Want to keep hearing from us?",
"buttons": [
{
"text": "Yes!"
},
{
"text": "No thanks"
}
]
}
list_response_message
Le type list_response_message vous permet d’envoyer un message sous forme de liste dans WhatsApp. Ce type de message inclut une liste d’éléments avec lesquels le destinataire peut interagir.
{
"header": (optional, string) the header of the message to send,
"body": (required, string) the body of the message to send,
"footer": (optional, string) the footer of the message to send,
"list": (required, object) the list object that contains:
"list_button_text": (required, string) the text that will appear on the list button,
"list_sections": (required, array) an array of List Section Objects
}
Objet section de liste
{
"section_title": (required, string) The title of the section,
"list_rows": (required, array) An array of List Row Objects
}
Objet ligne de liste
{
"row_title": (required, string) The title of the row,
"row_description": (optional, string) The description for the row
}
Contraintes
list_sections: doit contenir au moins une section.list_rows: un maximum de 10 lignes peut être inclus dans l’ensemble des sections.row_description: facultatif pour chaque ligne.
Exemple
{
"body": "Here is a list of options to choose from:",
"list": {
"list_button_text": "Choose an option",
"list_sections": [
{
"section_title": "Section 1",
"list_rows": [
{
"row_title": "Option 1"
},
{
"row_title": "Option 2",
"row_description": "Description for Option 2"
}
]
},
{
"section_title": "Section 2",
"list_rows": [
{
"row_title": "Option 3"
},
{
"row_title": "Option 4"
},
{
"row_title": "Option 5"
}
]
}
]
}
}
flow_response_message
Le type flow_response_message vous permet d’envoyer un message basé sur un flux dans WhatsApp. Ce type de message inclut un flux interactif que le destinataire peut compléter.
{
"header_text": (optional, string) the header text of the message to send,
"body": (required, string) the body of the message to send,
"footer": (optional, string) the footer of the message to send,
"flow_button": (required, object) the flow button object that contains:
"caption": (required, string) the text that will appear on the flow button,
"flow_id": (required, string) the unique identifier of the WhatsApp Flow,
"generate_custom_attribute": (optional, boolean) whether to save flow response on the user profile and generate a custom attribute upon responding to this flow message
}
Objet bouton de flux
{
"caption": (required, string) The text displayed on the button,
"flow_id": (required, string) The ID of the flow
}
Contraintes
flow_button: doit inclure à la foiscaptionetflow_id.caption: 20 caractères maximum.flow_id: doit être un ID de flux publié valide.
Exemple
{
"body": "Please complete your order details",
"flow_button": {
"caption": "Start Order",
"flow_id": "594425479261596"
},
"generate_custom_attribute": true
}
carousel_response_message
Le type carousel_response_message vous permet d’envoyer un carrousel interactif de cartes médias que les utilisateurs peuvent faire défiler en tant que message de réponse. Chaque carte contient un média, un texte de corps facultatif, et soit des boutons de réponse rapide, soit un bouton de site web.
{
"body": (required, string) the body of the message to send,
"carousel_button_type": (required, string) the button type used by every card (quick_reply | url),
"cards": (required, array) an array of Card objects. Cards render in the carousel in array order.
}
Objet carte
{
"media_uri": (required, string) the URI of the card's media,
"media_type": (required, string) the type of the card's media (image | video),
"body_text": (optional, string) the body text of the card,
"buttons": (required for quick_reply, array) an array of button label strings,
"cta_url_button": (required for url, object) the website button object that contains:
"display_text": (required, string) the text displayed on the button,
"url": (required, string) the URL the button opens
}
Contraintes
cards: doit contenir entre 2 et 10 cartes.media_type: toutes les cartes doivent utiliser le même type de média.body_text: 160 caractères maximum par carte.buttons: pourquick_reply, chaque carte doit avoir le même nombre de boutons, avec un maximum de deux par carte.cta_url_button: poururl, chaque carte doit inclure uncta_url_button.
Exemple avec boutons de réponse rapide
{
"body": "Check out this week's picks!",
"carousel_button_type": "quick_reply",
"cards": [
{
"media_uri": "https://example.com/card1.png",
"media_type": "image",
"body_text": "Runner X - now 20% off",
"buttons": ["Shop now", "Not for me"]
},
{
"media_uri": "https://example.com/card2.png",
"media_type": "image",
"body_text": "Trail Pro - back in stock",
"buttons": ["Shop now", "Not for me"]
}
]
}
Exemple avec boutons de site web
{
"body": "Check out this week's picks!",
"carousel_button_type": "url",
"cards": [
{
"media_uri": "https://example.com/card1.png",
"media_type": "image",
"body_text": "Runner X - now 20% off",
"cta_url_button": {
"display_text": "Visit",
"url": "https://example.com/runner-x"
}
},
{
"media_uri": "https://example.com/card2.png",
"media_type": "image",
"body_text": "Trail Pro - back in stock",
"cta_url_button": {
"display_text": "Visit",
"url": "https://example.com/trail-pro"
}
}
]
}