WhatsAble

Template Message

Send personalized WhatsApp messages using pre-approved templates

This page documents the legacy API. New integrations use API v1: Send a message (API v1)

Templates enable personalized communication while ensuring compliance with WhatsApp's business policies. This API lets you send template-based messages to your customers with dynamic content.

WhatsApp requires businesses to use pre-approved templates for initiating conversations. This API allows you to send template messages with personalized variables, media attachments, and interactive components to your customers.

Overview

The Send Template Message API enables you to:

  • Send WhatsApp messages using your pre-approved templates
  • Dynamically replace variables with personalized content
  • Attach media (images, videos, documents) when supported by the template
  • Include interactive elements like buttons and quick replies
  • Track delivery status through WhatsApp response information

Legacy API reference

The field reference for this legacy endpoint.

Send Template Message

Send a personalized WhatsApp template message to a specific phone number.

Endpoint

POST https://api.insightssystem.com/api:hFrjh8a1/send_template_message_by_api

Authentication

All API requests require authentication using your API key. Never share your API keys in client-side code.

Include your API key in all requests using Bearer authentication:

Authorization: Bearer YOUR_API_KEY

Request Body

templatestringrequired

The unique identifier of the template to use. You can retrieve this from the Get Templates API.

phone_numberstringrequired

The recipient's phone number in international format with country code (e.g., "+123476529999").

variablesobjectrequired

Object containing key-value pairs for template variables. The keys must match the variable names defined in your template.

Show Variable Types
body{n}string

Text variables that replace placeholders in the message body (e.g., body1, body2, etc.)

header{n}string

Text variables that replace placeholders in the message header

mediastring

Public URL to media content (image, video, or document) for templates with media support

visit_websitestring

Set to "1" to enable dynamic button links in interactive templates

Response

The API returns a detailed response indicating whether the message was accepted for delivery and provides WhatsApp message identifiers for tracking.

successboolean

Indicates if the request was successfully processed

whatsapp_response_infoobject

Details from the WhatsApp Business API about the message delivery

Show WhatsApp Response Fields
messaging_productstring

Always "whatsapp" for WhatsApp messages

contactsarray

Information about the message recipient

inputstring

The phone number that was provided in the request

wa_idstring

WhatsApp's unique identifier for the recipient

messagesarray

Details about the sent message

idstring

Unique message identifier (wamid) for tracking status

message_statusstring

Initial status of the message (typically "accepted")

errorobject

Present only when an error occurs

codestring

Error code identifier

messagestring

Human-readable error description

Example Request

cURL
curl -X POST \
  'https://api.insightssystem.com/api:hFrjh8a1/send_template_message_by_api' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
    "template": "f10695a9-38d6-4f5f-8444-1f7bf52c6164",
    "phone_number": "+123476529999",
    "variables": {
      "body1": "Axel",
      "body2": "Shampoo",
      "body3": "$1",
      "media": "https://drive.google.com/file/d/1D35uTbceRPmCgwxVfBJZ2yxD2lQgs0bi/view?usp=sharing",
      "visit_website": "1"
    }
  }'

Example Response

Success Response
{
  "success": true,
  "whatsapp_response_info": {
    "messaging_product": "whatsapp",
    "contacts": [
      {
        "input": "+123476529999",
        "wa_id": "123476529999"
      }
    ],
    "messages": [
      {
        "id": "wamid.HBgLMTIzNDc2NTI5OTk5FQIAERgSNUU2RjM4NzM1M0Q5OEIwQTQwAA==",
        "message_status": "accepted"
      }
    ]
  }
}

Response Codes

Working with Template Variables

Templates contain placeholders that are replaced with dynamic content when sending messages. Understanding how to map your data to these variables is essential.

Variable Types

Text Variables

Body and header variables replace text placeholders in your template. They are named body1, body2, etc., or header1, header2, etc.

Media Variables

Media variables allow you to attach images, videos, or documents to your template. Provide a public URL in the media property.

Button Variables

Used for dynamic buttons in interactive templates. Use visit_website set to "1" to enable dynamic button URLs.

Quick Reply Variables

For templates with quick reply buttons, provide the text to display on each button.

Variable Mapping

Identify template variables

Examine your template structure to identify which variables are required. You can find this information using the Get Templates API.

Prepare your data

Format your data to match the expected variable structure. Ensure values meet any length or format requirements.

Map data to variables

Create a variables object with keys matching your template's variable names and values from your data.

Handle media properly

For media templates, ensure your media URL is publicly accessible and in a WhatsApp-supported format.

Media Guidelines

When including media in your templates, follow these guidelines for optimal delivery:

Images

  • Supported formats: JPG, JPEG, PNG
  • Max size: 5MB
  • Recommended aspect ratio: 1.91:1

Videos

  • Supported formats: MP4, 3GPP
  • Max size: 16MB
  • Max duration: 1 minute

Documents

  • Supported formats: PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX
  • Max size: 100MB

URLs

  • Must be publicly accessible
  • Direct file links (no redirects)
  • HTTPS required

Media URLs must be publicly accessible without requiring authentication. For security, we recommend using signed URLs with limited-time access.

Best Practices

Error Handling

Implement comprehensive error handling to manage API failures gracefully. Always check the success field in responses and handle various error scenarios.

Message Tracking

This endpoint offers no way to track delivery. To track a message, send it through Send a message (API v1), then look up its id with Read a message (API v1).

Throttling

Implement request throttling when sending to multiple recipients to avoid hitting rate limits and ensure reliable delivery.

Template Testing

Test your templates with various inputs to ensure variables are correctly replaced and messages appear as expected.

FAQs

Need help?

Our support team can assist with template issues, API integration, or any other questions.