Send Template with Named Variables
Send a template created in the dashboard with named variables, for example
Hello {{name}}, my name is {{vendor_name}}. Regards, {{vendor_name}}. Pass one
named_variables object keyed by variable name, instead of ordered body_variables /
header_variables. Each name fills every header, body and URL-button slot where it appears.
- System variables (
customer.name,customer.phone,customer.email,customer.attributes.<attribute>,business.name,date.today) resolve from the recipient and may be omitted. - A custom variable that is omitted uses its saved fallback value.
- Values are resolved in this order: the value you pass, then the system value, then the fallback. Blank values count as missing.
Returns 400 when named_variables is sent together with body_variables /
header_variables, when the template was not created with named variables, or when a
variable is still missing (the error lists the names).
List your variables with GET /api/v1/named-variables and the built-in ones with
GET /api/v1/named-variables/system.
Authorization
ApiKeyAuth API key from your dashboard (Settings > API Keys)
In: header
Header Parameters
Optional. Attribute this send to a specific agent, overriding the agent bound to the API key. The agent must belong to your account and be active (role AGENT, parent = your account) — otherwise the request returns 400. Drives customer assignment, agent allotment limits, and the wallet ledger entry.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/messages/send#template-named-vars" \ -H "X-AGENT-ID: agt_abc123" \ -H "Content-Type: application/json" \ -d '{ "to": "919876543210", "message": { "message_type": "template", "template_name": "vendor_intro", "template_language": "en_US", "named_variables": { "name": "Manjeet", "vendor_name": "Narayan" } } }'{
"success": true,
"data": {
"id": "clx9abc123def456"
}
}{
"success": false,
"message": "to field is required"
}{
"success": false,
"message": "user not authenticated"
}{
"success": false,
"message": "insufficient balance to send message"
}{
"success": false,
"message": "template not found"
}{
"success": false,
"message": "internal server error"
}Send Template with a Location Header POST
Send a template whose header format is `LOCATION`. WhatsApp takes the map pin as a send-time parameter, not part of the template definition, so it can differ on every message — send the customer's own delivery address, pickup point, or store. Omit `location` to fall back to the default pin saved on the template. A location template with neither a send-time pin nor a default is rejected.
Send Bulk Message POST
Send the same message to multiple recipients (max 50). The message body follows the same structure as single message operations — specify the `message_type` and its required fields. Recipients are deduplicated automatically. Empty phone numbers are ignored.


