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., "shipment_confirmation"). |
| language | string(required) |
The language code of the template (e.g., "en_US"). |
| 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(optional) |
Contains the text variable information for the template header. |
| header.type | string(required_with:header) |
Must be exactly "text". |
| header.text | string(required_with:header) |
The dynamic string to replace the 1 placeholder in your Text Header. Note: Meta only allows exactly 1 variable in text headers. |
| 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. |
| button_variables | array(optional) |
An array of strings to dynamically replace variables inside buttons (e.g., dynamic URLs). Must be provided in the exact order the buttons 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": "shipment_confirmation",
"language": "en_US",
"correlator": "SHIP-88392",
"delivery_endpoint": "https://yourclient.com/webhooks/whatsapp",
"header": {
"type": "text",
"text": "Edward"
},
"body_variables": [
"Edward",
"ZK12345KI999",
"Jul 1, 2026"
],
"button_variables": [
"ZK12345KI999"
]
}
]
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": "shipment_confirmation",
"correlator": "SHIP-88392",
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"message_id": 147,
"currency": "KES",
"cost_minor": 200,
"cost": 2.00,
"created_at": "2026-06-27 22:15:00"
}
}
]
}
If a message fails validation (e.g., a missing URL variable), 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": "Template Validation Failed: Buttons require exactly 1 variable(s), but 0 provided",
"data": {
"phone": "254708361797",
"correlator": "SHIP-88392"
}
}
]
}
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": 147,
"correlator": "SHIP-88392",
"batch_id": "820f15fc-9ab0-4393-950a-7c3e50f6f345",
"phone": "254708361797",
"error": null,
"timestamp": "2026-06-27T22:15:05+03:00"
}
{danger} The Generated Auth Token gives a person full access to your account balances. Do not share it under any circumstance.