Message with parameters,header ,body ,footer and with buttons Estimated reading: 3 minutes 73 views PingtoChat’s Marketing Category enables businesses to send pre-approved WhatsApp template messages through the WhatsApp Business API. The supported message types include:Messages Without Parameters Messages With Parameters Messages With Parameters and Attachments Messages With Buttons (Quick Reply, URL, Phone Number, Copy Code)For URL and Phone Number buttons, they do not need to be included in the response.Description:A basic template message without dynamic parameters.Endpoint:http://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messagesMethod:POSTHeaders:Content-Type: application/json Authorization: Bearer <your_access_token>Example Payload:{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "template", "template": { "name": "marketing_all_buttons", "language": { "code": "en_us" }, "components": [ { "type": "header", "parameters": [ { "type": "text", "text": "Hi user" } ] }, { "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" } ] }, { "type": "button", "sub_type": "copy_code", "index": 1, "parameters": [ { "type": "text", "text": "WRETTT" } ] } ] } }Key Points in the PayloadComponents:Header: Includes an image URL. Body: Contains text with placeholders replaced by dynamic values. Footer: Simple static text. Buttons: Supports two types of buttons:QUICK_REPLY: For quick interactions. URL: Redirects to a specific URL.Parameters:The parameters inside the header and body match the placeholders defined in the template.URL Requirements:The URL in the buttons section must be publicly accessible.Template Approval:Templates (e.g., marketing_all_buutons) must be pre-approved.Response StructureA successful request will return an HTTP status code of 200 OK along with the following response structure:{ "messaging_product": "whatsapp", "contacts": [ { "input": "91xxxxxxxxxx", "wa_id": "91xxxxxxxxxx", "status_id": "MTA0NDI3" } ], "messages": [ { "id": "kfGlB7LpVI", "message_status": "accepted" } ]}Field Descriptionsmessaging_product:Type: String Description: Indicates the messaging platform. Always returns "whatsapp" for messages sent via the WhatsApp Business API.contacts:Type: Array Description: Contains information about the message recipient(s).Fields:input:Type: String Description: The phone number input used in the API request (e.g., 91xxxxxxxxxx). wa_id:Type: String Description: The WhatsApp ID associated with the input phone number. status_id:Type: String Description: A unique identifier for the status of the message.messages:Type: Array Description: Contains details about the sent message.Fields:id:Type: String Description: A unique identifier for the message sent (e.g., "M2s4da2y4P"). message_status:Type: String Description: The status of the message at the time of the response. Example values include:“accepted” – The message was successfully accepted by the system. Sample codes CURL PHP Java Ruby Python C# Node JS curl –location ‘https://example.com/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_all_buttons”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “header”, “parameters”: [ { “type”: “text”, “text”: “Hi user” } ] }, { “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” } ] }, { “type”: “button”, “sub_type”: “copy_code”, “index”: 1, “parameters”: [ { “type”: “text”, “text”: “WRETTT” } ] } ] } }’ ‘<'+'?'+'php'+ ` $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => ‘https://example.com/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_all_buttons”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “header”, “parameters”: [ { “type”: “text”, “text”: “Hi user” } ] }, { “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” } ] }, { “type”: “button”, “sub_type”: “copy_code”, “index”: 1, “parameters”: [ { “type”: “text”, “text”: “WRETTT” } ] } ] } }’, 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, “{\n \”messaging_product\”: \”whatsapp\”,\n \”recipient_type\”: \”individual\”,\n \”to\”: \”91xxxxxxxxxx\”,\n \”type\”: \”template\”,\n \”template\”: {\n \”name\”: \”marketing_all_buttons\”,\n \”language\”: {\n \”code\”: \”en_us\”\n },\n \”components\”: [\n {\n \”type\”: \”header\”,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Hi user\”\n }\n ]\n },\n {\n \”type\”: \”body\”,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Our\”\n },\n {\n \”type\”: \”text\”,\n \”text\”: \”whatsapp message app\”\n }\n ]\n },\n {\n \”type\”: \”button\”,\n \”sub_type\”: \”quick_reply\”,\n \”index\”: 0,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Unsubscribe from Promos\”\n }\n ]\n },\n {\n \”type\”: \”button\”,\n \”sub_type\”: \”copy_code\”, \n \”index\”: 1,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”WRETTT\” \n }\n ]\n }\n ]\n }\n}”); Request request = new Request.Builder() .url(“https://example.com/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://example.com/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_all_buttons”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “header”, “parameters”: [ { “type”: “text”, “text”: “Hi user” } ] }, { “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” } ] }, { “type”: “button”, “sub_type”: “copy_code”, “index”: 1, “parameters”: [ { “type”: “text”, “text”: “WRETTT” } ] } ] } }) response = https.request(request) puts response.read_body import requests import json url = “https://example.com/api/v1.0/phone_number_id/key/messages” payload = json.dumps({ “messaging_product”: “whatsapp”, “recipient_type”: “individual”, “to”: “91xxxxxxxxxx”, “type”: “template”, “template”: { “name”: “marketing_all_buttons”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “header”, “parameters”: [ { “type”: “text”, “text”: “Hi user” } ] }, { “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” } ] }, { “type”: “button”, “sub_type”: “copy_code”, “index”: 1, “parameters”: [ { “type”: “text”, “text”: “WRETTT” } ] } ] } }) 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://example.com/api/v1.0/phone_number_id/key/messages”); request.Headers.Add(“Authorization”, “Bearer xxxxxxxxxxxxx………………….”); var content = new StringContent(“{\n \”messaging_product\”: \”whatsapp\”,\n \”recipient_type\”: \”individual\”,\n \”to\”: \”91xxxxxxxxxx\”,\n \”type\”: \”template\”,\n \”template\”: {\n \”name\”: \”marketing_all_buttons\”,\n \”language\”: {\n \”code\”: \”en_us\”\n },\n \”components\”: [\n {\n \”type\”: \”header\”,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Hi user\”\n }\n ]\n },\n {\n \”type\”: \”body\”,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Our\”\n },\n {\n \”type\”: \”text\”,\n \”text\”: \”whatsapp message app\”\n }\n ]\n },\n {\n \”type\”: \”button\”,\n \”sub_type\”: \”quick_reply\”,\n \”index\”: 0,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”Unsubscribe from Promos\”\n }\n ]\n },\n {\n \”type\”: \”button\”,\n \”sub_type\”: \”copy_code\”, \n \”index\”: 1,\n \”parameters\”: [\n {\n \”type\”: \”text\”,\n \”text\”: \”WRETTT\” \n }\n ]\n }\n ]\n }\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://example.com/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_all_buttons”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “header”, “parameters”: [ { “type”: “text”, “text”: “Hi user” } ] }, { “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” } ] }, { “type”: “button”, “sub_type”: “copy_code”, “index”: 1, “parameters”: [ { “type”: “text”, “text”: “WRETTT” } ] } ] } }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });