curl -i -X POST \ https://graph.facebook.com/<API_VERSION>/<WABA_ID>/message_templates \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d' { "name": "example_template_name", "language": "en_US", "category": "MARKETING", "components": [ { "type": "body", "text": "This is a flows as template demo" }, { "type": "BUTTONS", "buttons": [ { "type": "FLOW", "text": "Open flow!", "flow_id" : "<FLOW_ID>", // or "flow_name" : "<flow_name>", // or "flow_json" : "{\"version\":\"5.0\",\"screens\":[{\"id\":\"WELCOME_SCREEN\",\"layout\":{\"type\":\"SingleColumnLayout\",\"children\":[{\"type\":\"TextHeading\",\"text\":\"Hello World\"},{\"type\":\"Footer\",\"label\":\"Complete\",\"on-click-action\":{\"name\":\"complete\",\"payload\":{}}}]},\"title\":\"Welcome\",\"terminal\":true,\"success\":true,\"data\":{}}]}" } ] } ] }'
| buttons object Parameters | Description |
|---|---|
type string | Required. Button type. Default value is FLOW |
text string | Required. Button label text. 25 characters maximum. |
flow_id string | Required. The unique ID of the Flow. Cannot be used if flow_name or flow_json parameters are provided. Only one of these parameters is required. |
flow_name string | Required. The name of the Flow. Supported in Cloud API only. The Flow ID is stored in the message template, not the name, so changing the Flow name will not affect existing message templates. Cannot be used if flow_id or flow_json parameters are provided. Only one of these parameters is required. |
flow_json string | Required. The Flow JSON encoded as string with escaping. The Flow JSON specifies the content of the Flow. Supported in Cloud API only. Cannot be used if flow_id or flow_name parameters are provided. Only one of these parameters is required. |
flow_action string | Default value is navigate. Either navigate or data_exchange. |
nagivate_screen string | The unique ID of the Screen in the Flow. Default value is FIRST_ENTRY_SCREEN. Optional if flow_action is navigate. |
{ "id": "<TEMPLATE_ID>", "status": "PENDING", "category": "MARKETING" }
{ "id": "<template-id>", "status": "PENDING", "category": "MARKETING" }
status is APPROVED instead of PENDING.curl -X POST \ 'https://graph.facebook.com/v16.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "template", "template": { "name": "TEMPLATE_NAME", "language": { "code": "LANGUAGE_AND_LOCALE_CODE" }, "components": [ { "type": "button", "sub_type": "flow", "index": "0", "parameters": [ { "type": "action", "action": { "flow_token": "FLOW_TOKEN", //optional, default is "unused" "flow_action_data": { ... } // optional, json object with the data payload for the first screen } } ] } ] } }'
{ "messaging_product": "whatsapp", "contacts": [ { "input": "<phone-number>", "wa_id": "<phone-number>" } ], "messages": [ { "id": "<message-id>" } ] }
flow with the following properties.| Property | Type | Description |
|---|---|---|
interactive.type | String | Value must be flow |
interactive.action.name | String | Value must be flow |
interactive.action.parameters.flow_message_version | String | Value must be 3. |
interactive.action.parameters.flow_id | String | Unique ID of the Flow provided by WhatsApp. Cannot be used with the flow_name parameter. Only one of these parameters is required. |
interactive.action.parameters.flow_name | String | The name of the Flow that you created. Changing the Flow name will require updating this parameter to match the new name. Cannot be used with the flow_id parameter. Only one of these parameters is required. |
interactive.action.parameters.flow_cta | String | Text on the CTA button. For example: “Signup” CTA text length is advised to be 30 characters or less (no emoji). |
interactive.action.parameters.mode | String | The Flow can be in either draft or published mode. published is the default value for this field. |
interactive.action.parameters.flow_token | String | Flow token that is generated by the business to serve as an identifier. Default value is unused. |
interactive.action.parameters.flow_action | String | navigate or data_exchange. Default value is navigate |
interactive.action.parameters.flow_action_payload | String | Optional if flow_action is navigate. Should be omitted otherwise. |
interactive.action.parameters.flow_action_payload.screen | String | The id of the first screen.Default is FIRST_ENTRY_SCREEN |
interactive.action.parameters.flow_action_payload.data | String | Optional. The input data for the first screen of the Flow. Must be a non-empty object. |
| Interactive messages parameter | Description |
|---|---|
interactive object | The interactive message configuration. Available parameters:
|
| action.parameter Parameter | Description |
|---|---|
flow_action string | navigate or data_exchange. (Default value: navigate) |
flow_action_payload object | Optional if flow_action is navigate. Should be omitted otherwise. Available values:
|
flow_cta string | Text on the CTA button. For example: “Signup” CTA text length is advised to be 30 characters or less (no emoji). |
flow_id string | Required if not using flow_name. Unique ID of the Flow provided by WhatsApp. Cannot be used with the flow_name parameter. |
flow_message_version string | Value must be "3". |
flow_name string | Required if not using flow_id. The name of the Flow that you created. Supported in Cloud API only. Changing the Flow name will require updating this parameter to match the new name. Cannot be used with the flow_id parameter. |
flow_token string | Flow token that is generated by the business to serve as an identifier.
(Default value: ‘unused’) |
mode string | Status of the message. Can be draft or published. (Default value: published) |
curl -X POST \ 'https://graph.facebook.com/v18.0/FROM_PHONE_NUMBER/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_name": "appointment_booking_v1", //or flow_id "flow_cta": "Book!" } } } }'
curl -X POST \ 'https://graph.facebook.com/v18.0/FROM_PHONE_NUMBER/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.", "flow_name": "appointment_booking_v1", //or "flow_id": "123456", "flow_cta": "Book!", "flow_action": "navigate", "flow_action_payload": { "screen": "<SCREEN_NAME>", "data": "{\"product_name\":\"name\",\"product_description\":\"description\",\"product_price\":100}" } } } } }'
{ "contacts": [ { "Input": "+447385946746", "wa_id": "47385946746" } ], "messages": [ { "id": "gHTRETHRTHTRTH-av4Y" } ], "meta": { "api_status": "stable", "version": "2.44.0.27" } }