Відправка повідомлення 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 години: завантажте файл, коли прийде сповіщення. Сповіщення про відповідь із файлом приходить, коли файл збережено в нас, — зазвичай за кілька секунд.