Parameter with body footer button – quick-replay ,visit-website and phone-number Estimated reading: 3 minutes 67 views OverviewThe marketing_aa template is a WhatsApp Business API message template that includes:A body containing the main message text. A Quick Reply Button that allows users to opt out of promotional messages. Phone Number Used for contact informationFor URL and Phone Number buttons, they do not need to be included in the Example payload.The footer example payload does not need to be included in the example payload, as it is already in the template; it will function correctly on its own.This template is useful for marketing messages while providing users with an easy way to opt out.Endpoint:http://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messagesReplace placeholders:{{key}}: Your API key for authentication.How to create key{{your_domain}}: Your domain URL where the API is hosted.{{phone_number_id}}: The unique identifier of the phone number used for sending messages.Method:POSTHeaders:Content-Type: application/json Authorization: Bearer <your_access_token>Example Payload:{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxxx", "type": "template", "template": { "name": "marketing_aa", "language": { "code": "en_us" }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "Our" }, { "type": "text", "text": "whatsapp message app" } ] }, { "type": "button", "sub_type": "quick_reply", "index": 0, "parameters": [ { "type": "text", "text": "Unsubscribe from Promos" } ] } ] } }Key Components in the Payloadmessaging_productType: String Description: Specifies the messaging platform. Always set to "whatsapp".recipient_typeType: String Description: Defines the recipient type. Use "individual" for one-on-one messaging.toType: String Description: The recipient’s WhatsApp number in international format (e.g., "91xxxxxxxxxxx").typeType: String Description: Defines the type of message. Always set to "template".template.nameType: String Description: Specifies the pre-approved WhatsApp template name. In this case, it is "marketing_aa".template.language.codeType: String Description: Language code for the template. Must match the approved template settings. Example: "en_us" for English (United States).componentsType: Array Description: Defines the interactive elements in the template.BodyType: body Description: The main content of the template message. parameters:type: "text" text: "Our" – First part of the message. text: "whatsapp message app" – Second part of the message.Quick Reply ButtonType: button Description: Adds an interactive Quick Reply button. sub_type: "quick_reply" index: 0 (First button in the list) parameters:type: "text" text: "Unsubscribe from Promos" – The text displayed on the button.ResponseIf the request is successful, the API returns a 200 OK response with the following JSON structure:{ "messaging_product": "whatsapp", "contacts": [ { "input": "91xxxxxxxxxxx", "wa_id": "91xxxxxxxxxxx", "status_id": "NTg0MTc=" } ], "messages": [ { "id": "M2s4da2y4P", "message_status": "accepted" } ] }Response Field Descriptionsmessaging_productType: String Description: Always returns "whatsapp".contactsType: Array Description: Contains recipient details.Fields within contacts:input: The phone number used in the API request. wa_id: WhatsApp ID linked to the phone number. status_id: A unique identifier for message status.messagesType: Array Description: Contains details about the sent message.Fields within messages:id: A unique message identifier. message_status: Indicates the message processing status."accepted": The message was successfully processed. Sample codes CURL PHP Java Ruby Python C# Node JS curl –location ‘https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages’ \ –header ‘Content-Type: application/json’ \ –header ‘Authorization: Bearer xxxxxxxxxxxxx………………….’ \ –data ‘{ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_aa”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “type”: “button”, “sub_type”: “quick_reply”, “index”: 0, “parameters”: [ { “type”: “text”, “text”: “Unsubscribe from Promos” } ] } ] } }’ ‘<'+'?'+'php'+ ` $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => ‘https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages’, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => ”, CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => ‘POST’, CURLOPT_POSTFIELDS =>'{ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_aa”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “type”: “button”, “sub_type”: “quick_reply”, “index”: 0, “parameters”: [ { “type”: “text”, “text”: “Unsubscribe from Promos” } ] } ] } }’, CURLOPT_HTTPHEADER => array( ‘Content-Type: application/json’, ‘Authorization: Bearer xxxxxxxxxxxxx………………….’ ), )); $response = curl_exec($curl); curl_close($curl); echo $response; ?>;`; OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse(“application/json”); RequestBody body = RequestBody.create(mediaType, “{\r\n \”messaging_product\”: \”whatsapp\”,\r\n \”recipient_type\”: \”individual\”,\r\n \”to\”: \”91xxxxxxxxxx\”,\r\n \”type\”: \”template\”,\r\n \”template\”: {\r\n \”name\”: \”marketing_aa\”,\r\n \”language\”: {\r\n \”code\”: \”en_us\”\r\n },\r\n \”components\”: [\r\n \r\n {\r\n \”type\”: \”body\”,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”Our\”\r\n },\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”whatsapp message app\”\r\n }\r\n ]\r\n },\r\n {\r\n \”type\”: \”button\”,\r\n \”sub_type\”: \”quick_reply\”,\r\n \”index\”: 0,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”Unsubscribe from Promos\”\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n}”); Request request = new Request.Builder() .url(“https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages”) .method(“POST”, body) .addHeader(“Content-Type”, “application/json”) .addHeader(“Authorization”, “Bearer xxxxxxxxxxxxx………………….”) .build(); Response response = client.newCall(request).execute(); require “uri” require “json” require “net/http” url = URI(“https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages”) https = Net::HTTP.new(url.host, url.port) https.use_ssl = true request = Net::HTTP::Post.new(url) request[“Content-Type”] = “application/json” request[“Authorization”] = “Bearer xxxxxxxxxxxxx………………….” request.body = JSON.dump({ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_aa”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “type”: “button”, “sub_type”: “quick_reply”, “index”: 0, “parameters”: [ { “type”: “text”, “text”: “Unsubscribe from Promos” } ] } ] } }) response = https.request(request) puts response.read_body import requests import json url = “https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages” payload = json.dumps({ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_aa”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “type”: “button”, “sub_type”: “quick_reply”, “index”: 0, “parameters”: [ { “type”: “text”, “text”: “Unsubscribe from Promos” } ] } ] } }) headers = { ‘Content-Type’: ‘application/json’, ‘Authorization’: ‘Bearer xxxxxxxxxxxxx………………….’ } response = requests.request(“POST”, url, headers=headers, data=payload) print(response.text) var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, “https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages”); request.Headers.Add(“Authorization”, “Bearer xxxxxxxxxxxxx………………….”); var content = new StringContent(“{\r\n \”messaging_product\”: \”whatsapp\”,\r\n \”recipient_type\”: \”individual\”,\r\n \”to\”: \”91xxxxxxxxxx\”,\r\n \”type\”: \”template\”,\r\n \”template\”: {\r\n \”name\”: \”marketing_aa\”,\r\n \”language\”: {\r\n \”code\”: \”en_us\”\r\n },\r\n \”components\”: [\r\n \r\n {\r\n \”type\”: \”body\”,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”Our\”\r\n },\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”whatsapp message app\”\r\n }\r\n ]\r\n },\r\n {\r\n \”type\”: \”button\”,\r\n \”sub_type\”: \”quick_reply\”,\r\n \”index\”: 0,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”Unsubscribe from Promos\”\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n}”, null, “application/json”); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); var request = require(‘request’); var options = { ‘method’: ‘POST’, ‘url’: ‘https://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages’, ‘headers’: { ‘Content-Type’: ‘application/json’, ‘Authorization’: ‘Bearer xxxxxxxxxxxxx………………….’ }, body: JSON.stringify({ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_aa”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “type”: “button”, “sub_type”: “quick_reply”, “index”: 0, “parameters”: [ { “type”: “text”, “text”: “Unsubscribe from Promos” } ] } ] } }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });