API v2 (beta)
Numara kontrolleri
Bir numara kontrolü, hangi telefon numaralarının bir WhatsApp hesabı olduğunu onlara hiçbir şey göndermeden bulur. Bir kampanyadan önce listeyi temizleyin veya mesaj göndermeden önce yeni kaydolan birinin numarasını kontrol edin. API ile yapılan kontroller, paneldeki Numara doğrulama sayfasındaki listelerle aynıdır.
| İşlem | Endpoint | Kapsam |
|---|---|---|
| Kontrol başlatın | POST /api/v2/number-checks | contacts |
| Kontrolleri listeleyin | GET /api/v2/number-checks | contacts |
| Bir kontrolü alın | GET /api/v2/number-checks/{id} | contacts |
| Sonuçları alın | GET /api/v2/number-checks/{id}/results | contacts |
Kontrol başlatmak için numara doğrulamayı içeren bir plan gerekir; aksi halde 403 plan_required yanıtı alırsınız. Kontrolleri okumak her planda çalışır.
Kontrol başlatın#
https://wbiztool.com/api/v2/number-checksGövde: JSON (application/json)
Numaralar kuyruğa alınır ve yanıt, pending durumundaki kontrolle birlikte 201 olur. Çalışma alanınızın bağlı bir WhatsApp numarası onları sonraki dakikalarda kontrol eder. status değeri completed olana kadar kontrolü sorgulayın, ardından sonuçları okuyun.
Gövde
numbersarray of stringszorunluKontrol edilecek numaralar, 1 ile 10.000 arasında öğe. Onları
+ile uluslararası biçimde yazın (+919876543210). Ülke kodu olmayan bir numara çalışma alanının ülke kodunu alır. Tekrarlanan numaralar bir kez kontrol edilir; telefon numarası olmayan öğeler atlanır.namestringisteğe bağlıKontrolün Numara doğrulama sayfasında gösterilen adı, en fazla 500 karakter. Varsayılan:
API checkve UTC tarih ve saati, örneğinAPI 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'];Yanıt (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, telefon numarası olmayan (metin, 7'den az veya 15'ten fazla rakam) öğelerin sayısıdır: bunlar kontrol edilmez ve planınızdan düşülmez.
Plan sınırları#
Planınız kaç numara kontrol edebileceğinizi belirler (bkz. Plan sınırları):
- Kontrol başına: bir kontrol, planın belirlediği sayıdan fazla numara içeremez. Bu sayı aşılırsa kontrol,
countvelimitile birliktetoo_many_numbershatasıyla reddedilir. - Fatura dönemi başına: API'den ve panelden yapılan tüm kontroller toplamda da bu sınırı aşamaz. Sınırı aşacak bir kontrol,
requested,usedvelimitile birliktenumber_check_quota_reachedhatasıyla reddedilir. - Sınırı olmayan bir planda ikisi de yoktur. Plan ne olursa olsun API istek başına en fazla 10.000 numara alır.
- Reddedilen bir kontrol hiçbir şeyi kuyruğa almaz. Listeyi bölün, sonraki dönemi bekleyin veya planınızı yükseltin.
Kontrol başlatırken alınan hatalar#
| HTTP | Kod | Ne zaman |
|---|---|---|
400 | validation_failed | numbers eksik, boş veya bir dize listesi değil ya da name boş veya çok uzun |
403 | plan_required | Plan numara doğrulamayı içermiyor |
422 | no_valid_numbers | Öğelerin hiçbiri telefon numarası değil; skipped kaç öğe olduğunu söyler |
422 | too_many_numbers | 10.000'den fazla öğe veya planın kontrol başına izin verdiğinden fazla numara |
422 | number_check_quota_reached | Kontrol, planın bu fatura dönemi için numara sınırını aşacak |
Kontrolleri listeleyin#
https://wbiztool.com/api/v2/number-checksPanelden başlatılanlar dahil çalışma alanının kontrolleri, en yeniden başlayarak sayfalar halinde (limit 1 ile 100 arası, varsayılan 25, ve cursor). Her biri bir Number check nesnesidir.
curl https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Bir kontrolü alın#
https://wbiztool.com/api/v2/number-checks/{id}Kontrol ve ilerlemesi. status değeri completed olana kadar yaklaşık her 30 saniyede bir sorgulayın.
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"
}
Var olmayan bir kontrol 404 number_check_not_found ile yanıt verir.
Kontrol için çalışma alanının QR kodla veya eşleştirme koduyla bağlanmış bir WhatsApp numarası gerekir ve numaralarınız gönderim yaparken kontrol bekler. Bir kontrol bir süre pending veya processing durumunda kalabilir; bkz. Kontrol nasıl çalışır.
Sonuçları alın#
https://wbiztool.com/api/v2/number-checks/{id}/resultsKontrolün numaraları ve bulunanlar, sayfalar halinde (limit 1 ile 100 arası, varsayılan 25, ve cursor). Kontrol çalışırken de okuyabilirsiniz: henüz kontrol edilmemiş numaralar pending olur.
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
}
| Alan | Tür | Açıklama |
|---|---|---|
number | string | Kontrol edilen numara: ülke koduyla birlikte rakamları, + olmadan. |
on_whatsapp | boolean veya null | Kontrol edildikten sonra true veya false; beklerken veya iptal edildiğinde null. |
status | string | pending, on_whatsapp, not_on_whatsapp veya cancelled (kontrol edilmeden önce durduruldu). |
checked_at | string veya null | Kontrol edildiği zaman. |
Number check nesnesi#
| Alan | Tür | Açıklama |
|---|---|---|
id | integer | Kontrolün ID'si. |
name | string | Adı. |
status | string | pending (henüz hiçbir şey kontrol edilmedi), processing (bazıları kontrol edildi) veya completed (kontrol edilecek numara kalmadı). |
counts | object | total, pending, on_whatsapp, not_on_whatsapp ve cancelled. |
created_at | string | Başlatıldığı zaman. |
skipped | integer | Yalnızca Kontrol başlatın yanıtında: telefon numarası olmayan öğeler. |
İlgili sayfalar#
- Paneldeki Numara doğrulama
- Planlar ve faturalandırma
- Hatalar
