API v2 (beta)
Semakan nombor
Semakan nombor mengetahui nombor telefon mana yang mempunyai akaun WhatsApp, tanpa menghantar apa-apa kepadanya. Bersihkan senarai sebelum kempen, atau semak nombor pendaftar sebelum anda menghantar mesej kepadanya. Semakan yang dicipta dengan API sama seperti senarai di halaman Pengesahan nombor dalam papan pemuka.
| Operasi | Endpoint | Skop |
|---|---|---|
| Mulakan semakan | POST /api/v2/number-checks | contacts |
| Senaraikan semakan | GET /api/v2/number-checks | contacts |
| Dapatkan semakan | GET /api/v2/number-checks/{id} | contacts |
| Dapatkan keputusan | GET /api/v2/number-checks/{id}/results | contacts |
Memulakan semakan memerlukan pelan yang merangkumi pengesahan nombor; jika tidak, ia menjawab 403 plan_required. Membaca semakan berfungsi pada mana-mana pelan.
Mulakan semakan#
https://wbiztool.com/api/v2/number-checksBody: JSON (application/json)
Nombor dimasukkan ke dalam baris gilir, dan responsnya ialah 201 dengan semakan berstatus pending. Nombor WhatsApp ruang kerja anda yang disambungkan menyemaknya dalam beberapa minit seterusnya. Tinjau semakan sehingga status ialah completed, kemudian baca keputusannya.
Badan
numbersarray of stringswajibNombor untuk disemak, 1 hingga 10,000 entri. Tulisnya dalam format antarabangsa dengan
+(+919876543210). Nombor tanpa kod negaranya mendapat kod negara ruang kerja. Nombor berulang disemak sekali, dan entri yang bukan nombor telefon dilangkau.namestringpilihanNama untuk semakan, sehingga 500 aksara, seperti yang dipaparkan di halaman Pengesahan nombor. Lalai:
API checkdiikuti tarikh dan masa dalam UTC, sepertiAPI check 2026-10-18 10:40.
curl -X POST https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: october-leads" \
-d '{
"name": "October leads",
"numbers": ["+919876543210", "+447700900123", "+14155550123"]
}'import os
import time
import requests
API = "https://wbiztool.com/api/v2"
headers = {"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}"}
check = requests.post(f"{API}/number-checks", headers=headers, timeout=60, json={
"name": "October leads",
"numbers": ["+919876543210", "+447700900123", "+14155550123"],
}).json()
print("Skipped entries:", check["skipped"])
while check["status"] != "completed":
time.sleep(30)
check = requests.get(f"{API}/number-checks/{check['id']}", headers=headers, timeout=30).json()
print(check["counts"])
params = {"limit": 100}
while True:
page = requests.get(f"{API}/number-checks/{check['id']}/results",
headers=headers, params=params, timeout=30).json()
for result in page["data"]:
print(result["number"], result["status"])
if not page["next_cursor"]:
break
params["cursor"] = page["next_cursor"]// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const API = "https://wbiztool.com/api/v2";
const headers = { Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}`, "Content-Type": "application/json" };
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
let check = await (await fetch(`${API}/number-checks`, {
method: "POST",
headers,
body: JSON.stringify({ name: "October leads", numbers: ["+919876543210", "+447700900123", "+14155550123"] }),
})).json();
while (check.status !== "completed") {
await sleep(30000);
check = await (await fetch(`${API}/number-checks/${check.id}`, { headers })).json();
}
const params = new URLSearchParams({ limit: "100" });
while (true) {
const page = await (await fetch(`${API}/number-checks/${check.id}/results?${params}`, { headers })).json();
for (const result of page.data) console.log(result.number, result.status);
if (!page.next_cursor) break;
params.set("cursor", page.next_cursor);
}<?php
$ch = curl_init('https://wbiztool.com/api/v2/number-checks');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'October leads',
'numbers' => ['+919876543210', '+447700900123', '+14155550123'],
]),
CURLOPT_RETURNTRANSFER => true,
]);
$check = json_decode(curl_exec($ch), true);
curl_close($ch);
// Save $check['id'], then poll GET /api/v2/number-checks/{id} until status is completed.
echo $check['id'] . ' ' . $check['status'] . ' skipped: ' . $check['skipped'];Respons (201):
{
"id": 51207,
"name": "October leads",
"status": "pending",
"counts": { "total": 3, "pending": 3, "on_whatsapp": 0, "not_on_whatsapp": 0, "cancelled": 0 },
"created_at": "2026-10-18T10:40:02.511Z",
"skipped": 0
}
skipped ialah bilangan entri yang bukan nombor telefon (teks, kurang daripada 7 atau lebih daripada 15 digit): ia tidak disemak dan tidak dikira dalam pelan anda.
Had pelan#
Pelan anda menetapkan berapa banyak nombor yang boleh anda semak (lihat Had pelan):
- Bagi setiap semakan: satu semakan tidak boleh mempunyai lebih banyak nombor daripada had pelan. Jika melebihinya, semakan ditolak dengan
too_many_numbers, bersamacountdanlimit. - Bagi setiap tempoh pengebilan: semua semakan bersama-sama, dari API dan papan pemuka, juga tidak boleh melebihinya. Semakan yang akan melebihinya ditolak dengan
number_check_quota_reached, bersamarequested,useddanlimit. - Pelan tanpa had tidak mempunyai kedua-duanya. API menerima paling banyak 10,000 nombor bagi setiap permintaan, tidak kira pelannya.
- Semakan yang ditolak tidak memasukkan apa-apa ke dalam baris gilir. Pecahkan senarai, tunggu tempoh seterusnya, atau naik taraf.
Ralat semasa memulakan semakan#
| HTTP | Kod | Bila |
|---|---|---|
400 | validation_failed | numbers tiada, kosong atau bukan senarai rentetan, atau name kosong atau terlalu panjang |
403 | plan_required | Pelan tidak merangkumi pengesahan nombor |
422 | no_valid_numbers | Tiada satu pun entri ialah nombor telefon; skipped menyatakan berapa banyak entri yang ada |
422 | too_many_numbers | Lebih daripada 10,000 entri, atau lebih banyak nombor daripada yang dibenarkan oleh pelan bagi setiap semakan |
422 | number_check_quota_reached | Semakan akan melebihi kuota nombor pelan untuk tempoh pengebilan ini |
Senaraikan semakan#
https://wbiztool.com/api/v2/number-checksSemakan ruang kerja, yang terbaharu dahulu, dalam halaman (limit 1 hingga 100, lalai 25, dan cursor), termasuk yang dimulakan dalam papan pemuka. Setiap satu ialah Number check.
curl https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Dapatkan semakan#
https://wbiztool.com/api/v2/number-checks/{id}Semakan dan kemajuannya. Tinjaunya kira-kira setiap 30 saat sehingga status ialah completed.
curl https://wbiztool.com/api/v2/number-checks/51207 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{
"id": 51207,
"name": "October leads",
"status": "processing",
"counts": { "total": 3, "pending": 1, "on_whatsapp": 1, "not_on_whatsapp": 1, "cancelled": 0 },
"created_at": "2026-10-18T10:40:02.511Z"
}
Semakan yang tidak wujud menjawab 404 number_check_not_found.
Semakan memerlukan nombor WhatsApp ruang kerja yang disambungkan dengan kod QR atau kod pautan, dan menunggu semasa nombor anda sedang menghantar. Semakan boleh kekal pending atau processing untuk seketika; lihat Cara semakan berfungsi.
Dapatkan keputusan#
https://wbiztool.com/api/v2/number-checks/{id}/resultsNombor dalam semakan dan apa yang ditemui, dalam halaman (limit 1 hingga 100, lalai 25, dan cursor). Anda boleh membacanya semasa semakan berjalan: nombor yang belum disemak ialah pending.
curl "https://wbiztool.com/api/v2/number-checks/51207/results?limit=100" \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{
"data": [
{ "number": "14155550123", "on_whatsapp": null, "status": "pending", "checked_at": null },
{ "number": "447700900123", "on_whatsapp": false, "status": "not_on_whatsapp", "checked_at": "2026-10-18T10:42:57.204Z" },
{ "number": "919876543210", "on_whatsapp": true, "status": "on_whatsapp", "checked_at": "2026-10-18T10:42:51.880Z" }
],
"next_cursor": null
}
| Medan | Jenis | Penerangan |
|---|---|---|
number | string | Nombor yang disemak: digitnya dengan kod negara, tanpa +. |
on_whatsapp | boolean or null | true atau false setelah disemak; null semasa menunggu atau apabila dibatalkan. |
status | string | pending, on_whatsapp, not_on_whatsapp atau cancelled (dihentikan sebelum disemak). |
checked_at | string or null | Bila ia disemak. |
Objek Number check#
| Medan | Jenis | Penerangan |
|---|---|---|
id | integer | ID semakan. |
name | string | Namanya. |
status | string | pending (belum ada yang disemak), processing (sebahagian telah disemak) atau completed (tiada lagi yang perlu disemak). |
counts | object | total, pending, on_whatsapp, not_on_whatsapp dan cancelled. |
created_at | string | Bila ia dimulakan. |
skipped | integer | Hanya dalam respons kepada Mulakan semakan: entri yang bukan nombor telefon. |
Berkaitan#
- Pengesahan nombor dalam papan pemuka
- Pelan dan bil
- Ralat
