API проверки номеров
Статус проверки номеров WhatsApp (API)
Следите за ходом задачи проверки номеров и получайте результат по каждому номеру в ней. Опрашивайте этот endpoint после создания задачи проверки, пока задача не завершится.
https://wbiztool.com/api/v1/verification/status/?campaign_id=4521Быстрый пример#
curl "https://wbiztool.com/api/v1/verification/status/?campaign_id=4521" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
response = requests.get(
"https://wbiztool.com/api/v1/verification/status/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"campaign_id": 4521},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 4xx or 5xx
if result["status"] == "success":
progress = result["progress"]
print(result["overall_status"], f"{progress['completed_percentage']}% done")
for item in result["results"]:
print(item["number"], item["status"])
else:
print(f"Failed ({response.status_code}):", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const url = new URL("https://wbiztool.com/api/v1/verification/status/");
url.searchParams.set("campaign_id", "4521");
const response = await fetch(url, {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const result = await response.json(); // read the body even when the HTTP code is 4xx or 5xx
if (result.status === "success") {
console.log(result.overall_status, `${result.progress.completed_percentage}% done`);
for (const item of result.results) {
console.log(item.number, item.status);
}
} else {
console.error(`Failed (${response.status}):`, result.message);
}<?php
$ch = curl_init('https://wbiztool.com/api/v1/verification/status/?campaign_id=4521');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? '') === 'success') {
echo $result['overall_status'] . ' - ' . $result['progress']['completed_percentage'] . "% done\n";
foreach ($result['results'] as $item) {
echo $item['number'] . ': ' . $item['status'] . "\n";
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Параметры запроса#
AuthorizationheaderобязательноBearer YOUR_API_KEYс ключом из раздела Настройки → API ключи. Вместо этого ключ можно передать в параметре запросаapi_key, но заголовок не попадает в журналы серверов и прокси.campaign_idintegerобязательноcampaign_id, возвращённый API создания проверки, в строке запроса. Это должна быть задача проверки в том же рабочем пространстве, что и API-ключ.
Ответ#
Успешный запрос возвращает HTTP 200:
{
"status": "success",
"campaign_id": 4521,
"campaign_name": "Website leads - September",
"overall_status": "processing",
"progress": {
"total": 3,
"pending": 1,
"verified": 1,
"invalid": 1,
"completed_percentage": 66.67
},
"results": [
{
"number": "14155550123",
"status": "pending",
"checked_at": null,
"created_at": "2026-09-16T10:15:00.483101+00:00"
},
{
"number": "919876543210",
"status": "verified",
"checked_at": "2026-09-16T10:16:12.204551+00:00",
"created_at": "2026-09-16T10:15:00.482913+00:00"
},
{
"number": "919876543211",
"status": "invalid",
"checked_at": "2026-09-16T10:16:19.915372+00:00",
"created_at": "2026-09-16T10:15:00.483020+00:00"
}
],
"created_at": "2026-09-16T10:15:00.471820+00:00",
"last_updated": "2026-09-16T10:15:00.471820+00:00"
}
| Поле | Тип | Описание |
|---|---|---|
status | string | "success". При ошибках возвращается "error". |
campaign_id | integer | ID задачи проверки. |
campaign_name | string | Название задачи. |
overall_status | string | pending, processing или completed. См. раздел Значения общего статуса. |
progress.total | integer | Номера в задаче. |
progress.pending | integer | Ещё не проверенные номера. |
progress.verified | integer | Номера, зарегистрированные в WhatsApp. |
progress.invalid | integer | Номера со статусом invalid (нет в WhatsApp, недействительный номер или проверка завершилась сбоем). |
progress.completed_percentage | number | Доля проверенных номеров (verified + invalid) от total в процентах, с округлением до 2 знаков после запятой. |
results | array | Все номера задачи, отсортированные по номеру. Список возвращается целиком, без пагинации. |
results[].number | string | Очищенный номер телефона. |
results[].status | string | pending, verified, invalid или unknown. См. раздел Значения статуса номера. |
results[].checked_at | string or null | Когда номер был проверен, или null, пока проверка не выполнена. |
results[].created_at | string | Когда номер был добавлен. |
created_at | string | Когда задача была создана. |
last_updated | string | Когда запись задачи изменялась в последний раз. Это значение не меняется по мере проверки номеров, поэтому для отслеживания недавней активности используйте checked_at. |
Все метки времени указываются в формате ISO 8601 в UTC с микросекундами и смещением +00:00, например 2026-09-16T10:16:12.204551+00:00.
Значения статуса номера#
| Значение | Смысл |
|---|---|
pending | Ожидает проверки. |
verified | Номер зарегистрирован в WhatsApp. |
invalid | Номер не зарегистрирован в WhatsApp, не является действительным номером телефона или не был проверен из-за ошибки обработки. Если номер, который должен быть действительным, показывает invalid, проверьте его ещё раз в новой задаче. |
unknown | Проверка была отменена службой поддержки Wbiztool. При обычной обработке этот статус не устанавливается. |
Значения общего статуса#
| Значение | Смысл |
|---|---|
pending | Ни один номер ещё не проверен. |
processing | Часть номеров проверена, часть ещё ожидает проверки. |
completed | Номеров, ожидающих проверки, не осталось. |
У задачи со статусом completed значение completed_percentage может быть меньше 100, если часть проверок была отменена: отменённые номера учитываются в total, но не в проценте.
Ошибки#
Ошибки возвращают JSON-тело со status, равным "error", и кодом ошибки HTTP:
{ "status": "error", "message": "Campaign not found" }
| HTTP | Сообщение | Как исправить |
|---|---|---|
405 | Only GET method allowed | Отправьте запрос GET. |
401 | API key required | Добавьте заголовок Authorization: Bearer YOUR_API_KEY. |
401 | Invalid API key | Проверьте, что ключ существует, не удалён и не отключён. |
400 | campaign_id is required | Добавьте campaign_id в строку запроса. |
404 | Campaign not found | ID не существует, не является задачей проверки или принадлежит другому рабочему пространству. Используйте ключ из рабочего пространства, в котором создана задача. |
500 | Internal server error: … | Чаще всего campaign_id не является числом. Передавайте только цифры. |
Советы#
- Не опрашивайте слишком часто. За один запуск в фоне проверяется до 10 номеров, поэтому опроса раз в 30–60 секунд вполне достаточно, а большая задача может выполняться долго.
- Прекращайте опрос, когда
overall_statusравенcompleted. - Задача застряла в
pending? Для проверки нужен номер WhatsApp, подключённый на странице настроек WhatsApp в том же рабочем пространстве. Без него номера никогда не будут проверены. Проверки также ждут, пока ваш подключённый номер занят отправкой сообщений. - Большие задачи: этот endpoint возвращает все номера в одном ответе. Чтобы читать результаты постранично или только номера со статусом
verified, используйте API результатов проверки.
