API v2 (Beta)
Nummernprüfungen
Eine Nummernprüfung findet heraus, welche Telefonnummern ein WhatsApp-Konto haben, ohne ihnen etwas zu senden. Bereinigen Sie eine Liste vor einer Kampagne oder prüfen Sie die Nummer einer Anmeldung, bevor Sie ihr schreiben. Mit der API erstellte Prüfungen sind dieselben wie die Listen auf der Seite Nummernverifizierung im Dashboard.
| Vorgang | Endpoint | Scope |
|---|---|---|
| Prüfung starten | POST /api/v2/number-checks | contacts |
| Prüfungen auflisten | GET /api/v2/number-checks | contacts |
| Eine Prüfung abrufen | GET /api/v2/number-checks/{id} | contacts |
| Ergebnisse abrufen | GET /api/v2/number-checks/{id}/results | contacts |
Zum Starten einer Prüfung ist ein Plan nötig, der die Nummernverifizierung enthält; sonst lautet die Antwort 403 plan_required. Prüfungen lesen funktioniert in jedem Plan.
Prüfung starten#
https://wbiztool.com/api/v2/number-checksBody: JSON (application/json)
Die Nummern kommen in die Warteschlange, und die Antwort ist 201 mit der Prüfung im Status pending. Eine verbundene WhatsApp-Nummer Ihres Arbeitsbereichs prüft sie in den folgenden Minuten. Fragen Sie die Prüfung regelmäßig ab, bis status completed ist, und lesen Sie dann die Ergebnisse.
Body
numbersarray of stringserforderlichDie zu prüfenden Nummern, 1 bis 10.000 Einträge. Schreiben Sie sie im internationalen Format mit
+(+919876543210). Eine Nummer ohne Ländervorwahl erhält die des Arbeitsbereichs. Doppelte Einträge werden einmal geprüft, und Einträge, die keine Telefonnummern sind, werden übersprungen.namestringoptionalEin Name für die Prüfung, bis zu 500 Zeichen, wie er auf der Seite Nummernverifizierung angezeigt wird. Standard:
API checkund Datum und Uhrzeit in UTC, zum BeispielAPI 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'];Antwort (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 gibt an, wie viele Einträge keine Telefonnummer waren (Text, weniger als 7 oder mehr als 15 Ziffern): Sie werden nicht geprüft und zählen nicht für Ihren Plan.
Plan-Limits#
Ihr Plan legt fest, wie viele Nummern Sie prüfen können (siehe Plan-Limits):
- Pro Prüfung: Eine Prüfung darf nicht mehr Nummern haben als die Zahl des Plans. Darüber wird die Prüfung mit
too_many_numbersabgelehnt, mitcountundlimit. - Pro Abrechnungszeitraum: Alle Prüfungen zusammen, aus der API und dem Dashboard, dürfen sie ebenfalls nicht überschreiten. Eine Prüfung, die darüber ginge, wird mit
number_check_quota_reachedabgelehnt, mitrequested,usedundlimit. - Ein Plan ohne Limit hat keines von beiden. Die API nimmt unabhängig vom Plan höchstens 10.000 Nummern pro Request an.
- Eine abgelehnte Prüfung stellt nichts in die Warteschlange. Teilen Sie die Liste auf, warten Sie auf den nächsten Zeitraum oder wechseln Sie zu einem höheren Plan.
Fehler beim Starten einer Prüfung#
| HTTP | Code | Wann |
|---|---|---|
400 | validation_failed | numbers fehlt, ist leer oder keine Liste von Strings, oder name ist leer oder zu lang |
403 | plan_required | Der Plan enthält keine Nummernverifizierung |
422 | no_valid_numbers | Keiner der Einträge ist eine Telefonnummer; skipped gibt an, wie viele es waren |
422 | too_many_numbers | Mehr als 10.000 Einträge oder mehr Nummern, als der Plan pro Prüfung erlaubt |
422 | number_check_quota_reached | Die Prüfung würde die Nummern des Plans für diesen Abrechnungszeitraum überschreiten |
Prüfungen auflisten#
https://wbiztool.com/api/v2/number-checksDie Prüfungen des Arbeitsbereichs, die neueste zuerst, in Seiten (limit 1 bis 100, Standard 25, und cursor), einschließlich der im Dashboard gestarteten. Jede ist eine Nummernprüfung.
curl https://wbiztool.com/api/v2/number-checks \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Eine Prüfung abrufen#
https://wbiztool.com/api/v2/number-checks/{id}Die Prüfung und ihr Fortschritt. Fragen Sie sie etwa alle 30 Sekunden ab, bis status completed ist.
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"
}
Eine Prüfung, die nicht existiert, antwortet mit 404 number_check_not_found.
Zum Prüfen ist eine per QR-Code oder Kopplungscode verbundene WhatsApp-Nummer des Arbeitsbereichs nötig, und die Prüfung wartet, während Ihre Nummern senden. Eine Prüfung kann eine Weile pending oder processing bleiben; siehe So funktioniert die Prüfung.
Ergebnisse abrufen#
https://wbiztool.com/api/v2/number-checks/{id}/resultsDie Nummern der Prüfung und was gefunden wurde, in Seiten (limit 1 bis 100, Standard 25, und cursor). Sie können sie lesen, während die Prüfung läuft: Noch nicht geprüfte Nummern sind 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
}
| Feld | Typ | Beschreibung |
|---|---|---|
number | string | Die geprüfte Nummer: ihre Ziffern mit Ländervorwahl, ohne +. |
on_whatsapp | boolean or null | true oder false, sobald geprüft; null, solange ausstehend oder wenn storniert. |
status | string | pending, on_whatsapp, not_on_whatsapp oder cancelled (angehalten, bevor sie geprüft wurde). |
checked_at | string or null | Wann sie geprüft wurde. |
Das Number-check-Objekt#
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | Die ID der Prüfung. |
name | string | Ihr Name. |
status | string | pending (noch nichts geprüft), processing (einige geprüft) oder completed (keine mehr zu prüfen). |
counts | object | total, pending, on_whatsapp, not_on_whatsapp und cancelled. |
created_at | string | Wann sie gestartet wurde. |
skipped | integer | Nur in der Antwort auf Prüfung starten: Einträge, die keine Telefonnummer waren. |
Verwandte Themen#
- Nummernverifizierung im Dashboard
- Pläne und Abrechnung
- Fehler
