WhatsApp API Platform
Template Messages

Send Template in a Campaign

POST
/api/v1/messages/send#template-campaign

Group API template sends into a campaign by passing campaign_id, any string you choose (an order batch, a date, your own campaign key). The first send with a new campaign_id creates a campaign in the dashboard's Campaigns list; every later send with the same id joins it. It gets the usual campaign reporting: sent, delivered, read, failed, button replies and the recipient list.

  • campaign_name names the campaign when it is created (default Custom campaign) and is ignored afterwards.
  • Template messages only.
  • A campaign is locked to the template and WhatsApp number of its first send. A different template under the same id returns 400 INVALID_CAMPAIGN; use a new id instead.
  • Quick-reply buttons get a campaign payload (bc:<id>:<index>) so replies are attributed to the campaign, unless you pass that button yourself.
  • Billing is unchanged: each message is charged when sent, exactly like any API send.
  • The id is echoed back as campaign_id in the response and in message.report webhooks.

Also works on POST /api/v1/messages/send/bulk (one campaign for the whole batch) and the GET send endpoint (campaignId / campaignName query parameters). Dashboard campaigns and API campaign ids are separate.

Authorization

ApiKeyAuth
X-API-Key<token>

API key from your dashboard (Settings > API Keys)

In: header

Header Parameters

X-AGENT-ID?string

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-campaign" \  -H "X-AGENT-ID: agt_abc123" \  -H "Content-Type: application/json" \  -d '{    "to": "919876543210",    "campaign_id": "diwali-2026",    "campaign_name": "Diwali offers",    "message": {      "message_type": "template",      "template_name": "diwali_offer",      "template_language": "en_US",      "body_variables": [        "John"      ]    }  }'
{
  "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"
}