Send Personalized Messages
curl --request POST \
--url https://api.example.com/api/whatsapp/v1/Send \
--header 'Content-Type: application/json' \
--data '
{
"SenderNumber": "<string>",
"MetaTemplateId": "<string>",
"CustomPayload": [
{}
],
"CustomPayload[].RecieverNumber": "<string>"
}
'import requests
url = "https://api.example.com/api/whatsapp/v1/Send"
payload = {
"SenderNumber": "<string>",
"MetaTemplateId": "<string>",
"CustomPayload": [{}],
"CustomPayload[].RecieverNumber": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
SenderNumber: '<string>',
MetaTemplateId: '<string>',
CustomPayload: [{}],
'CustomPayload[].RecieverNumber': '<string>'
})
};
fetch('https://api.example.com/api/whatsapp/v1/Send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Send Messages
Send Personalized Messages
Send different template variable values to each WhatsApp recipient
Send Personalized Messages
curl --request POST \
--url https://api.example.com/api/whatsapp/v1/Send \
--header 'Content-Type: application/json' \
--data '
{
"SenderNumber": "<string>",
"MetaTemplateId": "<string>",
"CustomPayload": [
{}
],
"CustomPayload[].RecieverNumber": "<string>"
}
'import requests
url = "https://api.example.com/api/whatsapp/v1/Send"
payload = {
"SenderNumber": "<string>",
"MetaTemplateId": "<string>",
"CustomPayload": [{}],
"CustomPayload[].RecieverNumber": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
SenderNumber: '<string>',
MetaTemplateId: '<string>',
CustomPayload: [{}],
'CustomPayload[].RecieverNumber': '<string>'
})
};
fetch('https://api.example.com/api/whatsapp/v1/Send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Use
CustomPayload when recipients need different header or body values. Each array item represents one recipient.
Request fields
string
required
Active WhatsApp sender number returned by the connectors endpoint.
string
required
Identifier of the approved Meta template to send.
object[]
required
Recipient-specific payloads.
string
required
Recipient number in international format.
string
Recipient-specific value for a dynamic text header.
string[]
Recipient-specific values for body placeholders, in template order.
Header and body variables
curl --request POST \
--url "https://app.notify.ng/api/whatsapp/v1/Send" \
--user "$CLIENT_ID:$API_KEY" \
--header "Content-Type: application/json" \
--data '{
"SenderNumber": "15551234567",
"MetaTemplateId": "12121212212",
"CustomPayload": [
{
"RecieverNumber": "15559876543",
"HeaderVariable": "Order update",
"BodyVariables": ["Amina", "ORD-1042"]
},
{
"RecieverNumber": "15557654321",
"HeaderVariable": "Delivery update",
"BodyVariables": ["David", "ORD-1043"]
}
]
}'
Authentication template (OTP)
For an authentication template, put each recipient’s OTP inBodyVariables:
{
"SenderNumber": "15551234567",
"MetaTemplateId": "458911",
"CustomPayload": [
{
"RecieverNumber": "15559876543",
"BodyVariables": ["384921"]
},
{
"RecieverNumber": "15557654321",
"BodyVariables": ["927145"]
}
]
}
The template determines whether a header variable, body variables, or both are required. Omit fields that the template does not define.
Success response
{
"statusCode": 0,
"status": "Success",
"messages": [
{
"messageId": "11111111-2222-4333-8444-555566667777",
"receiverNumber": "15559876543"
},
{
"messageId": "88888888-9999-4aaa-8bbb-ccccddddeeee",
"receiverNumber": "15557654321"
}
]
}

