For sending WhatsApp templates, the base url is:
https://rebuetext.com/api/v1
| Method | URI |
|---|---|
| POST | /whatsapp/send-template |
| Param | Type | Description |
|---|---|---|
| sender_phone | string(required) |
Your approved WhatsApp Business Phone Number (e.g., "254741226412"). |
| phone | string(required) |
Recipient's Phone Number starting with the country code (e.g., "254708XXXXXX"). |
| template_name | string(required) |
The exact name of your approved Meta template (e.g., "customer_welcome"). |
| language | string(required) |
The language code of the template (e.g., "en_US", "en_GB", "sw"). |
| correlator | string(optional) |
A Unique identifier generated by YOUR system. We forward delivery receipts together with your correlator to help you map statuses back to your database. |
| delivery_endpoint | string(optional) |
Your webhook endpoint where we will send real-time delivery and read receipts for this specific message. Click HERE for the payload structure. |
| header | object(required) |
Contains the media information for the template header. |
| header.type | string(required) |
Must be exactly "image". |
| header.link | string(required) |
A valid, publicly accessible HTTPS URL to your image file. |
| body_variables | array(optional) |
An array of strings to dynamically replace placeholders (1, 2) in your template's body. Must be provided in the exact order they appear in the template. |
{
"Content-type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer 123456789"
}
To send a batch of messages, simply pass an array of message objects. A single request can process between 1 and 100 messages.
{info} Even if you are sending a single message, the JSON body must be wrapped in an array
[ ].
[
{
"sender_phone": "254741226412",
"phone": "254708361797",
"template_name": "customer_welcome",
"language": "en_GB",
"correlator": "USR-002",
"delivery_endpoint": "https://yourclient.com/webhooks/whatsapp",
"header": {
"type": "image",
"link": "https://ressirli.sirv.com/og-images/budget-wise-og.png"
},
"body_variables": [
"Jane",
"the VIP Club"
]
}
]
StatusCode 200
Content
{
"status": true,
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"results": [
{
"status": true,
"message": "Template queued successfully",
"data": {
"sender_phone": "254741226412",
"phone": "254708361797",
"template_name": "customer_welcome",
"correlator": "USR-002",
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"message_id": 143,
"currency": "KES",
"cost_minor": 200,
"cost": 2.00,
"created_at": "2026-06-27 21:50:00"
}
}
]
}
If a message fails validation (e.g., missing header image or variables), the API will successfully process the rest of the batch, but return status: false with the exact error for the failed item.
StatusCode 200
{
"status": true,
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"results": [
{
"status": false,
"message": "Validation failed: The header.link field must be a valid URL.",
"data": {
"phone": "254708361797",
"correlator": "USR-002"
}
}
]
}
If you provide a delivery_endpoint in your request, we will automatically POST real-time status updates back to your server as Meta processes the message.
{info} The
statusfield can returnsent,delivered,read, orfailed.
{
"status": "delivered",
"message_id": 143,
"correlator": "USR-002",
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"phone": "254708361797",
"error": null,
"timestamp": "2026-06-27T21:50:03+03:00"
}
{danger} The Generated Auth Token gives a person full access to your account balances. Do not share it under any circumstance.