Skip to main content
POST
/
v1
/
whatsapp
/
templates
/
send
cURL
curl --request POST \
  --url https://api.buildwithchirp.com/v1/whatsapp/templates/send \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "from": "+15551234567",
  "to": "+15559876543",
  "templateName": "order_confirmation",
  "languageCode": "en_US",
  "variables": {
    "customer_name": "John",
    "order_id": "12345"
  },
  "headerVariables": {
    "header_text": "Order Update"
  },
  "buttonVariables": {
    "button_0": [
      "https://example.com/track/12345"
    ]
  }
}
'
{
  "id": "msg_wa_abc123",
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "input": "<string>",
      "wa_id": "<string>"
    }
  ],
  "messages": [
    {
      "id": "wamid.HBgLMTUwMzMwNzk5NzQVAgARGBI...",
      "message_status": "<string>"
    }
  ]
}

Authorizations

Authorization
string
header
required

App API key (format: sk_live_app_* or sk_test_app_*) for app-level operations

Body

application/json
from
string
required

Your WhatsApp phone number to send from (E.164 format)

Example:

"+15551234567"

to
string
required

Recipient phone number in E.164 format

Example:

"+15559876543"

templateName
string
required

Name of the approved template to send

Example:

"order_confirmation"

languageCode
string
required

Language code of the template

Example:

"en_US"

variables
object

Body variables as key-value pairs

Example:
{
"customer_name": "John",
"order_id": "12345"
}
headerVariables
object

Header variables as key-value pairs

Example:
{ "header_text": "Order Update" }
buttonVariables
object

Button URL variables by button index (e.g., button_0: ['value'])

Example:
{
"button_0": ["https://example.com/track/12345"]
}

Response

Message sent successfully

id
string
required

Chirp message ID - use this to correlate with webhook events

Example:

"msg_wa_abc123"

messaging_product
enum<string>
required
Available options:
whatsapp
contacts
object[]
required
messages
object[]
required