Parameter with body , button – phone number – copy code Estimated reading: 3 minutes 166 views Overview A body containing the main marketing message text. A Copy Code Button, allowing users to copy a promotional code directly. For URL and Phone Number buttons, they do not need to be included in the Example payload. This template is ideal for marketing campaigns where users can quickly receive and use a promotional code. Endpoint: http://{{your_domain}}/api/v1.0/{{phone_number_id}}/{{key}}/messages Replace 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: POST Headers: Content-Type: application/json Authorization: Bearer <your_access_token> Example Payload: { "messaging_product": "whatsapp", "recipient_type": "individual", "to": "91xxxxxxxxxx", "type": "template", "template": { "name": "marketing_aj", "language": { "code": "en_us" }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "Our" }, { "type": "text", "text": "whatsapp message app" } ] }, { "type": "button", "sub_type": "copy_code", "index": 1, "parameters": [ { "type": "text", "text": "WRETTT" } ] } ] } } Key Components in the Payload messaging_product Type: String Description: Specifies the messaging platform. Always set to "whatsapp". recipient_type Type: String Description: Defines the recipient type. Use "individual" for one-on-one messaging. to Type: String Description: The recipient’s WhatsApp number in international format (e.g., "91xxxxxxxxxx"). type Type: String Description: Defines the type of message. Always set to "template". template.name Type: String Description: Specifies the pre-approved WhatsApp template name. In this case, it is "marketing_aj". template.language.code Type: String Description: Language code for the template. Must match the approved template settings. Example: "en_us" for English (United States). components Type: Array Description: Defines the interactive elements in the template. Body Type: 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. Copy Code Button Type: button Description: Adds a Copy Code button for users to copy a promotional code. sub_type: "copy_code" index: 0 parameters: type: "text" text: "WRETTT" – The promotional code displayed. Response If the request is successful, the API returns a 200 OK response with the following JSON structure: { "messaging_product": "whatsapp", "contacts": [ { "input": "91xxxxxxxxxx", "wa_id": "91xxxxxxxxxx" } ], "messages": [ { "id": "wamid.HBgLMjAyNTAyMT..." } ] } Response Field Descriptions messaging_product Type: String Description: Always returns "whatsapp". contacts Type: `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. messages Type: `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_aj”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “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://{{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_aj”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “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, “{\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_aj\”,\r\n \”language\”: {\r\n \”code\”: \”en_us\”\r\n },\r\n \”components\”: [\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\”: \”copy_code\”, \r\n \”index\”: 1,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”WRETTT\” \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_aj”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “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://{{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_aj”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “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://{{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_aj\”,\r\n \”language\”: {\r\n \”code\”: \”en_us\”\r\n },\r\n \”components\”: [\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\”: \”copy_code\”, \r\n \”index\”: 1,\r\n \”parameters\”: [\r\n {\r\n \”type\”: \”text\”,\r\n \”text\”: \”WRETTT\” \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_aj”, “language”: { “code”: “en_us” }, “components”: [ { “type”: “body”, “parameters”: [ { “type”: “text”, “text”: “Our” }, { “type”: “text”, “text”: “whatsapp message app” } ] }, { “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); });