Отправка сообщения WhatsApp
Сообщение WhatsApp отправляется в одной из двух форм:
- одобренный шаблон — в любое время. Шаблоны создаются в личном кабинете и проходят модерацию Meta; что нужно каждому из них помимо значений, возвращает Список шаблонов WhatsApp;
- свободное сообщение — текст, файл, локация или карточка с кнопкой. WhatsApp доставляет его только в течение 24 часов после последнего сообщения абонента вам.
Запрос синхронный, адрес /api/json.php: шлюз отвечает msg_id на каждое сообщение.
Тот же запрос можно поставить в очередь асинхронно по адресу /v1/json.
- Получатель должен написать вам первым или дать согласие на получение сообщений. Холодная рассылка по купленной базе в WhatsApp невозможна.
- Отправитель (
whatsapp_signature) должен быть подключён к вашему аккаунту, а его отображаемое имя — одобрено Meta. - Вне суточного окна принимается только одобренный шаблон.
URI: https://alphasms.ua/api/json.php
Все запросы к API отправляются в формате JSON с помощью метода POST.
Параметры заголовков
В запросах обязательно должен быть заголовок Content-Type: application/json, иначе запрос будет считаться некорректным даже при валидном JSON в нем
Параметры запроса
Пример запроса
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100500,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'order_ready',
'whatsapp_language' => 'en',
'whatsapp_var' => [
'Anna',
'A-1024',
],
'whatsapp_image' => 'https://url.com/storage/images/order.png',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024",
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100500,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'order_ready',
'whatsapp_language' => 'en',
'whatsapp_var' => [
'Anna',
'A-1024',
],
'whatsapp_image' => 'https://url.com/storage/images/order.png',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024",
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100500,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_language": "en",
"whatsapp_var": [
"Anna",
"A-1024"
],
"whatsapp_image": "https://url.com/storage/images/order.png",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
Параметры ответа
| successboolean Результат выполнения запроса | |||||||
| errorstring Текст ошибки, возвращается, если success=false | |||||||
| datalist[object] Список объектов с результатами выполнения запроса
|
Примеры ответа
- Успешный
- Доступ запрещен
- Шаблон не одобрен
- Нет содержимого шапки
HTTP Status Code: 200
Content Type: JSON application/json
{
"success": true,
"data": [
{
"success": true,
"data": {
"id": 100500,
"msg_id": 123456789,
"data": 1,
"parts": 1
}
}
]
}
HTTP Status Code: 200
Content Type: JSON application/json
{
"success": false,
"error": "Access denied"
}
HTTP Status Code: 200
Content Type: JSON application/json
{
"success": true,
"data": [
{
"success": false,
"error": "WhatsApp template is not approved for sending",
"data": {
"id": 100500
}
}
]
}
HTTP Status Code: 200
Content Type: JSON application/json
{
"success": true,
"data": [
{
"success": false,
"error": "WhatsApp template has a media, location or text-with-placeholder header: pass its content",
"data": {
"id": 100500
}
}
]
}
Что нужно шаблону
Помимо значений в whatsapp_var шаблон может ждать файл, текст, локацию или значение кнопки. Список шаблонов WhatsApp возвращает это полем shape:
shape шаблона | Что передать в запросе |
|---|---|
header: image, video или document | whatsapp_image, whatsapp_video или whatsapp_document; для документа — ещё whatsapp_filename |
header: location | whatsapp_location |
header: text и header_var: true | whatsapp_header |
url_button: true | whatsapp_button_var |
copy_code: true | whatsapp_coupon |
authentication: true | whatsapp_code — и больше ничего |
Если нужного шаблону значения в запросе нет или передано значение, которого шаблон не принимает, запрос отклоняется при приёме, до списания: сам WhatsApp отказал бы такому сообщению только после отправки.
Ещё примеры
Шаблон с кнопкой-ссылкой и купоном
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100501,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'spring_sale',
'whatsapp_var' => [
'Anna',
],
'whatsapp_button_var' => 'spring-24',
'whatsapp_coupon' => 'SPRING15',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna",
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100501,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'spring_sale',
'whatsapp_var' => [
'Anna',
],
'whatsapp_button_var' => 'spring-24',
'whatsapp_coupon' => 'SPRING15',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna",
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100501,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "spring_sale",
"whatsapp_var": [
"Anna"
],
"whatsapp_button_var": "spring-24",
"whatsapp_coupon": "SPRING15",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
Код подтверждения (шаблон подтверждения)
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100502,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'login_code',
'whatsapp_code' => '481516',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100502,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'login_code',
'whatsapp_code' => '481516',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100502,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "login_code",
"whatsapp_code": "481516",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
Свободный документ в суточном окне
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100503,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_message' => 'Your invoice for September',
'whatsapp_document' => 'https://url.com/storage/files/invoice.pdf',
'whatsapp_filename' => 'Invoice A-1024.pdf',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100503,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_message' => 'Your invoice for September',
'whatsapp_document' => 'https://url.com/storage/files/invoice.pdf',
'whatsapp_filename' => 'Invoice A-1024.pdf',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100503,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_message": "Your invoice for September",
"whatsapp_document": "https://url.com/storage/files/invoice.pdf",
"whatsapp_filename": "Invoice A-1024.pdf",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
Свободная локация в суточном окне
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100504,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_location' => [
'latitude' => 50.4501,
'longitude' => 30.5234,
'name' => 'Pickup point',
'address' => '1 Main St',
],
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St",
},
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp',
'id' => 100504,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_location' => [
'latitude' => 50.4501,
'longitude' => 30.5234,
'name' => 'Pickup point',
'address' => '1 Main St',
],
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St",
},
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp",
"id": 100504,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_location": {
"latitude": 50.4501,
"longitude": 30.5234,
"name": "Pickup point",
"address": "1 Main St"
},
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
WhatsApp с запасной SMS
- Sync
- Async
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://alphasms.ua/api/json.php' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp+sms',
'id' => 100505,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'order_ready',
'whatsapp_var' => [
'Anna',
'A-1024',
],
'sms_signature' => 'SMSTest',
'sms_message' => 'Anna, your order A-1024 is ready',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://alphasms.ua/api/json.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024",
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://alphasms.ua/api/json.php",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://alphasms.ua/api/json.php", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
- JSON
- cURL
- PHP
- Python
- Node.js
{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
}
curl -X POST 'https://api-async.alphasms.ua/v1/json' \
-H 'Content-Type: application/json' \
--data-raw '{
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
}'
<?php
$payload = json_encode([
'auth' => 'bb56a4369eb19***cfec6d1776bd25',
'data' => [
[
'type' => 'whatsapp+sms',
'id' => 100505,
'phone' => 380971234567,
'whatsapp_signature' => 'WhatsAppTest',
'whatsapp_template' => 'order_ready',
'whatsapp_var' => [
'Anna',
'A-1024',
],
'sms_signature' => 'SMSTest',
'sms_message' => 'Anna, your order A-1024 is ready',
'hook' => 'https://example.org/webhook/url.php',
],
],
], JSON_UNESCAPED_UNICODE);
$ch = curl_init('https://api-async.alphasms.ua/v1/json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
import requests
payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024",
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php",
},
],
}
response = requests.post(
"https://api-async.alphasms.ua/v1/json",
json=payload,
timeout=30,
)
print(response.json())
const payload = {
"auth": "bb56a4369eb19***cfec6d1776bd25",
"data": [
{
"type": "whatsapp+sms",
"id": 100505,
"phone": 380971234567,
"whatsapp_signature": "WhatsAppTest",
"whatsapp_template": "order_ready",
"whatsapp_var": [
"Anna",
"A-1024"
],
"sms_signature": "SMSTest",
"sms_message": "Anna, your order A-1024 is ready",
"hook": "https://example.org/webhook/url.php"
}
]
};
const response = await fetch("https://api-async.alphasms.ua/v1/json", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
console.log(await response.json());
Ошибки
Ошибка приходит в одном из двух мест:
- Весь запрос отклоняется, когда у поля неверный тип или формат:
success: falseи текст вerrorв корне ответа. Ничего не создаётся. - Одно сообщение отклоняется, когда его содержимое не подходит отправителю или шаблону:
success: falseи текст вdata[].errorэтого сообщения. Оно не создаётся и не списывается; остальные сообщения запроса обрабатываются.
Запрос
| Ошибка | Что означает |
|---|---|
Whatsapp signature parameter is required | Нет whatsapp_signature |
Whatsapp message parameter is required | Нет ни шаблона, ни свободного сообщения (текста, файла или локации) |
WhatsApp template parameter must match [a-z0-9_] | Имя шаблона не в формате Meta |
Whatsapp var value must not exceed 1024 characters | Значение в whatsapp_var слишком длинное |
Whatsapp header must not exceed 60 characters | whatsapp_header слишком длинный |
Whatsapp button_var must not exceed 2000 characters | whatsapp_button_var слишком длинный |
Whatsapp filename must not exceed 240 characters | whatsapp_filename слишком длинный |
Whatsapp button caption must not exceed 20 characters | whatsapp_button слишком длинный |
Whatsapp lifetime must be in range from 60 to 86400 | whatsapp_lifetime вне допустимого диапазона |
Сообщение
| Ошибка | Что означает |
|---|---|
WhatsApp is not confirmed for user | WhatsApp не подключён к вашему аккаунту |
Error in WhatsApp sender | Отправитель не подключён к вашему аккаунту или для него нет маршрута WhatsApp |
WhatsApp sender display name is not approved | Meta ещё не одобрила отображаемое имя отправителя |
WhatsApp template not found | У этого отправителя нет шаблона с таким именем и языком |
WhatsApp template is not approved | Шаблон на модерации, отклонён или приостановлен |
Wrong number of WhatsApp template parameters | Число значений в whatsapp_var не совпадает с params шаблона |
WhatsApp template header content is required | У шаблона есть шапка с файлом, локацией или подстановкой, а её содержимое не передано — см. таблицу выше |
WhatsApp template header takes no value | Текстовая шапка шаблона статичная: whatsapp_header не передаётся |
WhatsApp template header type mismatch | Например, видео для шаблона с картинкой в шапке |
WhatsApp template has no header | Не передавайте файл, локацию или whatsapp_header |
WhatsApp template has one header | Передайте что-то одно: файл, whatsapp_location или whatsapp_header |
WhatsApp template button value is required | У шаблона кнопка-ссылка с подстановкой или кнопка копирования кода: передайте whatsapp_button_var или whatsapp_coupon |
WhatsApp template has no such button | У шаблона нет кнопки для переданного значения |
WhatsApp authentication template needs a code | Шаблон подтверждения без whatsapp_code |
WhatsApp authentication template takes only a code | С шаблоном подтверждения передаётся только код |
WhatsApp code is only for authentication templates | whatsapp_code для шаблона, который не является шаблоном подтверждения |
WhatsApp code is too long | whatsapp_code длиннее 15 символов |
WhatsApp coupon is too long | whatsapp_coupon длиннее 15 символов |
One kind of WhatsApp content per message | Свободное сообщение несёт что-то одно: файл, локацию или карточку с кнопкой |
Only one WhatsApp media file per message | Два файла в одном сообщении |
WhatsApp location and audio carry no text | Локация и аудио отправляются без whatsapp_message |
WhatsApp location coordinates are out of range | Широта вне −90…90 или долгота вне −180…180 |
Ответы абонента
Ответ абонента открывает суточное окно для свободных сообщений ему.
- Если ответ пришёл на сообщение, отправленное с
hook, вебхук этого сообщения отправляется повторно со спискомreplies. - Иначе шлюз отправляет
POSTс полями формы на адрес уведомлений из настроек API:
| Поле | Значение |
|---|---|
action | whatsapp/inbound |
phone | Номер абонента |
message | Текст ответа или подпись к файлу |
type | Тип ответа: text, image, video, audio, document, location, button и другие |
datetime | Время ответа, YYYY-MM-DDThh:mm:ss±hh:mm |
button | Кнопка, которую нажал абонент |
media[url], media[type] | Ссылка на файл и его MIME-тип |
location[latitude], location[longitude], location[name], location[address] | Локация, которую прислал абонент |
msg_id | Ваше сообщение, на которое пришёл ответ, если оно известно |
Ссылка на файл действует 24 часа: скачайте файл, когда придёт уведомление. Уведомление об ответе с файлом приходит, когда файл сохранён у нас, — обычно через несколько секунд.