API v2 (בטא)
בדיקת מספרים
בדיקת מספרים מבררת לאילו מספרי טלפון יש חשבון WhatsApp, בלי לשלוח להם כלום. נקו רשימה לפני קמפיין, או בדקו את המספר של מי שנרשם לפני שאתם שולחים לו הודעה. בדיקות שנוצרות עם ה-API זהות לרשימות שבדף אימות מספרים בלוח הבקרה.
| פעולה | Endpoint | הרשאה |
|---|---|---|
| התחלת בדיקה | 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גוף הבקשה: JSON (application/json)
המספרים נכנסים לתור, והתגובה היא 201 עם הבדיקה בסטטוס pending. מספר WhatsApp מחובר של סביבת העבודה שלכם בודק אותם בדקות הקרובות. בצעו polling לבדיקה עד ש-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), כולל בדיקות שהתחילו בלוח הבקרה. כל אחת מהן היא Number check.
curl https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
קבלת בדיקה#
https://wbiztool.com/api/v2/number-checks/{id}הבדיקה וההתקדמות שלה. בצעו לה polling בערך כל 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 | רק בתגובה להתחלת בדיקה: רשומות שלא היו מספר טלפון. |
מדריכים קשורים#
- אימות מספרים בלוח הבקרה
- תוכניות וחיובים
- שגיאות
