API v2 (تجريبي)
فحص الأرقام
يكشف فحص الأرقام أي أرقام الهواتف لديها حساب WhatsApp، دون إرسال أي شيء إليها. نظّف قائمة قبل حملة، أو افحص رقم مشترك جديد قبل مراسلته. والفحوص التي تُنشأ عبر API هي نفسها القوائم الموجودة في صفحة التحقق من الأرقام في لوحة التحكم.
| العملية | نقطة النهاية | النطاق |
|---|---|---|
| بدء فحص | POST /api/v2/number-checks | contacts |
| عرض الفحوص | GET /api/v2/number-checks | contacts |
| جلب فحص | GET /api/v2/number-checks/{id} | contacts |
| جلب النتائج | GET /api/v2/number-checks/{id}/results | contacts |
يحتاج بدء فحص إلى باقة تتضمن التحقق من الأرقام؛ وإلا يُرجع 403 plan_required. أما قراءة الفحوص فتعمل مع أي باقة.
بدء فحص#
https://wbiztool.com/api/v2/number-checksالنص (Body): JSON (application/json)
توضع الأرقام في قائمة الانتظار، والاستجابة 201 مع الفحص بحالة pending. يفحصها رقم WhatsApp متصل في مساحة عملك خلال الدقائق التالية. استعلم عن الفحص حتى تصبح قيمة status هي completed، ثم اقرأ النتائج.
الجسم
numbersarray of stringsمطلوبالأرقام المراد فحصها، من 1 إلى 10,000 عنصر. اكتبها بالصيغة الدولية مع
+(+919876543210). والرقم بدون رمز دولته يأخذ رمز دولة مساحة العمل. تُفحص الأرقام المكررة مرة واحدة، وتُتخطّى العناصر التي ليست أرقام هواتف.namestringاختيارياسم للفحص، بحد أقصى 500 حرف، كما يظهر في صفحة التحقق من الأرقام. الافتراضي:
API checkمع التاريخ والوقت بتوقيت UTC، مثلAPI 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'];الاستجابة (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 هو عدد العناصر التي لم تكن رقم هاتف (نص، أو أقل من 7 خانات أو أكثر من 15 خانة): فهي لا تُفحص ولا تُحسب ضمن باقتك.
حدود الباقة#
تحدّد باقتك عدد الأرقام التي يمكنك فحصها (راجع حدود الباقة):
- لكل فحص: لا يمكن أن يحتوي الفحص على أرقام أكثر من العدد الذي تسمح به الباقة. وعند تجاوزه، يُرفض الفحص مع
too_many_numbers، معcountوlimit. - لكل فترة فوترة: لا يمكن لكل الفحوص معًا، من API ومن لوحة التحكم، أن تتجاوزه أيضًا. والفحص الذي سيتجاوزه يُرفض مع
number_check_quota_reached، معrequestedوusedوlimit. - الباقة التي لا حدّ لها لا تخضع لأي منهما. ويقبل API بحد أقصى 10,000 رقم لكل طلب أيًّا كانت الباقة.
- الفحص المرفوض لا يضع شيئًا في قائمة الانتظار. قسّم القائمة، أو انتظر الفترة التالية، أو رقِّ باقتك.
أخطاء بدء الفحص#
| HTTP | الرمز | متى |
|---|---|---|
400 | validation_failed | numbers مفقود أو فارغ أو ليس قائمة سلاسل نصية، أو name فارغ أو طويل جدًا |
403 | plan_required | الباقة لا تتضمن التحقق من الأرقام |
422 | no_valid_numbers | لا يوجد بين العناصر أي رقم هاتف؛ ويوضّح skipped عددها |
422 | too_many_numbers | أكثر من 10,000 عنصر، أو أرقام أكثر مما تسمح به الباقة لكل فحص |
422 | number_check_quota_reached | سيتجاوز الفحص أرقام الباقة لفترة الفوترة هذه |
عرض الفحوص#
https://wbiztool.com/api/v2/number-checksفحوص مساحة العمل، الأحدث أولًا، في صفحات (limit من 1 إلى 100، والافتراضي 25، وcursor)، بما فيها الفحوص التي بدأت من لوحة التحكم. كل منها فحص أرقام.
curl https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
جلب فحص#
https://wbiztool.com/api/v2/number-checks/{id}الفحص وتقدّمه. استعلم عنه كل 30 ثانية تقريبًا حتى تصبح قيمة status هي 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"
}
الفحص غير الموجود يُرجع 404 number_check_not_found.
يحتاج الفحص إلى رقم WhatsApp في مساحة العمل متصل برمز QR أو برمز الربط، وينتظر ما دامت أرقامك ترسل. قد يبقى الفحص pending أو processing لبعض الوقت؛ راجع كيف يعمل الفحص.
جلب النتائج#
https://wbiztool.com/api/v2/number-checks/{id}/resultsأرقام الفحص وما وُجد لكل منها، في صفحات (limit من 1 إلى 100، والافتراضي 25، وcursor). يمكنك قراءتها أثناء تشغيل الفحص: الأرقام التي لم تُفحص بعد تكون 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
}
| الحقل | النوع | الوصف |
|---|---|---|
number | string | الرقم المفحوص: خاناته مع رمز الدولة، بدون +. |
on_whatsapp | boolean or null | true أو false بعد فحصه؛ وnull ما دام قيد الانتظار أو عند إلغائه. |
status | string | pending أو on_whatsapp أو not_on_whatsapp أو cancelled (أُوقف قبل فحصه). |
checked_at | string or null | وقت فحصه. |
كائن Number check#
| الحقل | النوع | الوصف |
|---|---|---|
id | integer | معرّف الفحص. |
name | string | اسمه. |
status | string | pending (لم يُفحص شيء بعد)، أو processing (فُحص بعضها)، أو completed (لم يتبقَّ شيء للفحص). |
counts | object | total وpending وon_whatsapp وnot_on_whatsapp وcancelled. |
created_at | string | وقت بدئه. |
skipped | integer | فقط في استجابة بدء فحص: العناصر التي لم تكن رقم هاتف. |
صفحات ذات صلة#
- التحقق من الأرقام في لوحة التحكم
- الباقات والفوترة
- الأخطاء
