curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "January 15, 2026",
"3": "2:00 PM"
}
}'
curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://call.aiployees.com/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://call.aiployees.com/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Insufficient balance. Please top up your account.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Sender not found or does not belong to you",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Template not found or does not belong to this sender",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Template is not approved. Current status: pending",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Invalid phone number format. Use E.164 format (e.g., +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Sender is not online. Current status: Offline",
"error_code": "SENDER_OFFLINE"
}
WhatsApp
Изпращане на шаблонно съобщение
Изпращане на WhatsApp съобщение чрез одобрен шаблон
POST
/
user
/
whatsapp
/
send
curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "January 15, 2026",
"3": "2:00 PM"
}
}'
curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://call.aiployees.com/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://call.aiployees.com/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Insufficient balance. Please top up your account.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Sender not found or does not belong to you",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Template not found or does not belong to this sender",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Template is not approved. Current status: pending",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Invalid phone number format. Use E.164 format (e.g., +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Sender is not online. Current status: Offline",
"error_code": "SENDER_OFFLINE"
}
Този endpoint изпраща WhatsApp съобщение чрез предварително одобрен шаблон. Шаблонните съобщения са задължителни при започване на разговор с потребител за първи път или при изпращане на съобщения извън 24-часовия прозорец за съобщения.
Този endpoint има ограничение от 5 заявки в секунда на потребител.
Тяло на заявката
integer
required
ID на WhatsApp изпращача от който да се изпрати (получен от endpoint-а Get Senders)
integer
required
ID на шаблона за съобщение който да се използва (получен от endpoint-а Get Templates)
string
required
Телефонния номер на получателя в международен формат (например,
+1234567890)string
Името на получателя, максимум 255 символа (използва се за проследяване на разговори и CRM цели)
object
Двойки ключ-стойност за променливите на шаблона. Ключовете трябва да съответстват на имената на променливите от шаблона. Ако шаблонът има променливи
{{1}}, {{2}}, и т.н., подайте ги като {"1": "стойност1", "2": "стойност2"} или използвайте именуваните ключове от масива variables на шаблона.Полета в отговора
boolean
Дали съобщението е изпратено успешно
integer
ID на разговора (нов или съществуващ) свързан с това съобщение
integer
ID на записа на съобщението в разговора
integer
ID на записа на WhatsApp съобщението
string
Twilio message SID за проследяване на доставката
string
Началният статус на доставка на съобщението (например,
queued, sent)Отговори при грешки
curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "January 15, 2026",
"3": "2:00 PM"
}
}'
curl -X POST "https://call.aiployees.com/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://call.aiployees.com/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://call.aiployees.com/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': 'January 15, 2026',
'3': '2:00 PM'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Insufficient balance. Please top up your account.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Sender not found or does not belong to you",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Template not found or does not belong to this sender",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Template is not approved. Current status: pending",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Invalid phone number format. Use E.164 format (e.g., +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Sender is not online. Current status: Offline",
"error_code": "SENDER_OFFLINE"
}
Забележки
- Шаблонните съобщения трябва да използват одобрени шаблони. Шаблони със статус
pendingилиrejectedще се провалят. - Изпращачът трябва да е
online. Офлайн изпращачи не могат да изпращат съобщения. - Разходите за съобщения се приспадат автоматично от баланса на акаунта ви (кредити за tenant потребители, минути за директни потребители).
- След изпращане на шаблонно съобщение се отваря 24-часов прозорец за съобщения. През този прозорец можете да изпращате свободни съобщения без нужда от шаблон.
- Ако разговор със получателя вече съществува, съобщението се добавя към съществуващия разговор.
- Ограничение на честотата: 5 заявки в секунда на потребител.

