API проверки номеров
Создание проверки номеров WhatsApp (API)
Проверьте, зарегистрированы ли номера телефонов из списка в WhatsApp, прежде чем писать на них. Используйте этот API, чтобы очищать импортированные списки контактов, проверять номера при регистрации или удалять номера, отправка на которые всё равно завершится ошибкой.
https://wbiztool.com/api/v1/verification/create/Тело запроса: JSON (application/json)
Запрос создаёт задачу проверки и сразу возвращает campaign_id. Затем номера проверяются в фоновом режиме одним из ваших подключённых номеров WhatsApp. Используйте campaign_id в API статуса проверки, чтобы следить за ходом проверки, или в API результатов проверки, чтобы получить результаты.
Быстрый пример#
curl -X POST https://wbiztool.com/api/v1/verification/create/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaign_name": "Website leads - September",
"numbers": ["919876543210", "+91 98765 43211", "14155550123"]
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/verification/create/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"campaign_name": "Website leads - September",
"numbers": ["919876543210", "+91 98765 43211", "14155550123"],
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 4xx or 5xx
if result["status"] == "success":
print("Task created, campaign_id", result["campaign_id"])
print("Accepted numbers:", result["numbers_submitted"])
else:
print(f"Failed ({response.status_code}):", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/verification/create/", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
campaign_name: "Website leads - September",
numbers: ["919876543210", "+91 98765 43211", "14155550123"],
}),
});
const result = await response.json(); // read the body even when the HTTP code is 4xx or 5xx
if (result.status === "success") {
console.log("Task created, campaign_id", result.campaign_id);
console.log("Accepted numbers:", result.numbers_submitted);
} else {
console.error(`Failed (${response.status}):`, result.message);
}<?php
$payload = [
'campaign_name' => 'Website leads - September',
'numbers' => ['919876543210', '+91 98765 43211', '14155550123'],
];
$ch = curl_init('https://wbiztool.com/api/v1/verification/create/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? '') === 'success') {
echo 'Task created, campaign_id ' . $result['campaign_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Замените YOUR_API_KEY ключом из раздела Настройки → API ключи. Ключ определяет, к какому рабочему пространству относится задача.
Параметры запроса#
Заголовок
AuthorizationheaderобязательноBearer YOUR_API_KEY. Ключ должен быть активным и не удалённым.client_idдля этого API не нужен.Content-TypestringобязательноДолжен быть
application/json. При любом другом типе содержимогоnumbersне читается, и вы получитеNumbers array is required.
Тело запроса
numbersarray of stringsобязательноПроверяемые номера телефонов, каждый с кодом страны, например
919876543210для индийского номера. Перед проверкой каждый номер очищается:- удаляются пробелы,
+,-и скобки - удаляется один ведущий
0 - результат должен состоять только из цифр и содержать не менее 10 цифр
Номера, не прошедшие проверку, молча отбрасываются. Дубликаты не удаляются, поэтому каждая копия проверяется отдельно.
- удаляются пробелы,
campaign_namestringнеобязательноНазвание, по которому задачу можно найти в панели управления. Если не передано, используется
API Verificationс датой и временем сервера по IST (UTC+5:30), напримерAPI Verification 20260916_154500. Название может быть длиной до 500 символов. Не передавайтеnull: более длинные названия иnullприводят к ошибке HTTP500.
Ответ#
Успешный запрос возвращает HTTP 200:
{
"status": "success",
"message": "Verification task created successfully",
"campaign_id": 4521,
"numbers_count": 3,
"numbers_submitted": ["919876543210", "919876543211", "14155550123"]
}
| Поле | Тип | Описание |
|---|---|---|
status | string | "success". При ошибках возвращается "error". |
message | string | Verification task created successfully. |
campaign_id | integer | ID задачи проверки. Используйте его в API статуса проверки и API результатов проверки. |
numbers_count | integer | Сколько номеров принято после очистки. |
numbers_submitted | array of strings | Очищенные номера, которые будут проверены. Сравните с тем, что вы отправили, чтобы увидеть, какие номера были отброшены. |
Каждый принятый номер изначально получает статус pending. Задача также появляется на странице проверки номеров в вашей панели управления. Карточка задачи там может продолжать показывать «Обработка» и после завершения, поэтому реальное состояние узнавайте через API статуса проверки.
Ошибки#
Ошибки возвращают JSON-тело со status, равным "error", и кодом ошибки HTTP:
{ "status": "error", "message": "No valid phone numbers found" }
| HTTP | Сообщение | Как исправить |
|---|---|---|
405 | Only POST method allowed | Отправьте запрос POST. |
401 | API key required | Добавьте заголовок Authorization: Bearer YOUR_API_KEY. |
401 | Invalid API key | Проверьте, что ключ существует, не удалён и не отключён. |
403 | Verification feature not available for your plan | Ваш тариф не включает проверку номеров. Повысьте тариф. |
400 | Numbers array is required | Передайте numbers непустым JSON-массивом с Content-Type: application/json. |
400 | No valid phone numbers found | Ни один номер после очистки не содержал 10 или более цифр. Указывайте код страны. |
400 | Request contains N numbers but your plan allows only M verifications | Тариф ограничивает количество номеров в одном запросе. Разбейте список на несколько запросов поменьше. |
500 | Internal server error: … | Обычно тело JSON некорректно, например из-за лишней запятой в конце. |
Как проверяются номера#
Задача ставится в очередь
API сохраняет каждый принятый номер со статусом
pendingи сразу возвращает ответ.Подключённый номер WhatsApp проверяет их
Номера проверяются не более чем по 10 за раз с помощью номера WhatsApp, подключённого на странице настроек WhatsApp. Каждый номер получает статус
verified, если он зарегистрирован в WhatsApp, илиinvalid, если нет. Проверки выполняются только на подключённом номере, который не занят отправкой сообщений, поэтому во время крупной кампании они могут ждать, пока отправка не закончится.Вы получаете результаты
Опрашивайте API статуса проверки, пока
overall_statusне станетcompleted, затем прочитайте номера из того же ответа или из API результатов проверки.
Советы#
- Всегда указывайте код страны. 10-значный местный номер без него проходит проверку длины, но проверяется ровно в том виде, в котором записан, поэтому результат будет не для того номера, который вы имели в виду.
- Не используйте международный префикс
00. Удаляется только один ведущий0, поэтому00919876543210проверяется как0919876543210. Передавайте919876543210. - Удаляйте дубликаты самостоятельно перед отправкой, чтобы не тратить лимит тарифа на один запрос на повторы.
- Проверяйте
numbers_submitted, чтобы найти номера, отброшенные из-за недостаточной длины или букв. - Большие списки: если вы упираетесь в лимит на один запрос, создайте несколько задач поменьше и отслеживайте каждый
campaign_id.
Впервые работаете с проверкой номеров? См. руководство по проверке номеров.
