Verifizierungs-API
Ergebnisse der WhatsApp-Nummernverifizierung (API)
Rufen Sie die Ergebnisse der Nummernverifizierung seitenweise ab, gefiltert nach Aufgabe oder Status. Nutzen Sie die API, um die Nummern zu exportieren, die WhatsApp nutzen, ungültige Nummern aus Ihrer Kontaktliste zu entfernen oder Ergebnisse mit Ihrem CRM zu synchronisieren.
https://wbiztool.com/api/v1/verification/results/Ohne Filter gibt der Endpoint jede Verifizierung in Ihrem Arbeitsbereich zurück, die neuesten zuerst. Dazu gehören auch Aufgaben, die auf der Dashboard-Seite Nummernverifizierung erstellt wurden, nicht nur die über die API erstellten.
Kurzes Beispiel#
curl "https://wbiztool.com/api/v1/verification/results/?campaign_id=4521&status=verified&limit=100&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
response = requests.get(
"https://wbiztool.com/api/v1/verification/results/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"campaign_id": 4521, "status": "verified", "limit": 100, "offset": 0},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 4xx or 5xx
if result["status"] == "success":
print(f"{result['returned_count']} of {result['total_count']} results")
for item in result["results"]:
print(item["number"], item["status"])
else:
print(f"Failed ({response.status_code}):", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const url = new URL("https://wbiztool.com/api/v1/verification/results/");
url.search = new URLSearchParams({ campaign_id: "4521", status: "verified", limit: "100", offset: "0" });
const response = await fetch(url, {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const result = await response.json(); // read the body even when the HTTP code is 4xx or 5xx
if (result.status === "success") {
console.log(`${result.returned_count} of ${result.total_count} results`);
for (const item of result.results) {
console.log(item.number, item.status);
}
} else {
console.error(`Failed (${response.status}):`, result.message);
}<?php
$query = http_build_query([
'campaign_id' => 4521,
'status' => 'verified',
'limit' => 100,
'offset' => 0,
]);
$ch = curl_init('https://wbiztool.com/api/v1/verification/results/?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? '') === 'success') {
echo $result['returned_count'] . ' of ' . $result['total_count'] . " results\n";
foreach ($result['results'] as $item) {
echo $item['number'] . ': ' . $item['status'] . "\n";
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Request-Parameter#
Alle Parameter werden im Query-String übergeben.
Authentifizierung
AuthorizationheadererforderlichBearer YOUR_API_KEYmit einem Schlüssel aus Einstellungen → API-Schlüssel. Sie können den Schlüssel stattdessen als Query-Parameterapi_keyübergeben, der Header hält ihn jedoch aus Server- und Proxy-Logs heraus.
Filter und Paginierung
campaign_idintegeroptionalGibt nur Nummern aus dieser Verifizierungsaufgabe zurück. Es muss eine Verifizierungsaufgabe im selben Arbeitsbereich wie der API-Schlüssel sein. Lassen Sie den Parameter weg, um Ergebnisse aus allen Aufgaben zu erhalten.
statusstringoptionalGibt nur Nummern mit diesem Status zurück:
pending,verifiedoderinvalid. Jeder andere Wert wird ignoriert, und es wird nicht nach Status gefiltert, auch beiunknown:status=unknownliefert also alle Status. Bei den Werten wird zwischen Groß- und Kleinschreibung unterschieden:Verifiedwird ignoriert und liefert alle Status.limitintegeroptionalErgebnisse pro Seite. Standard
100. Verwenden Sie einen Wert von 1 oder mehr.offsetintegeroptionalWie viele Ergebnisse übersprungen werden. Standard
0. Muss 0 oder mehr sein.
Antwort#
Ein erfolgreicher Request gibt HTTP 200 zurück:
{
"status": "success",
"total_count": 2,
"returned_count": 2,
"limit": 100,
"offset": 0,
"has_more": false,
"results": [
{
"id": 88215,
"campaign_id": 4521,
"campaign_name": "Website leads - September",
"number": "14155550123",
"status": "verified",
"checked_at": "2026-09-16T10:16:26.730114+00:00",
"created_at": "2026-09-16T10:15:00.483101+00:00"
},
{
"id": 88213,
"campaign_id": 4521,
"campaign_name": "Website leads - September",
"number": "919876543210",
"status": "verified",
"checked_at": "2026-09-16T10:16:12.204551+00:00",
"created_at": "2026-09-16T10:15:00.482913+00:00"
}
]
}
| Feld | Typ | Beschreibung |
|---|---|---|
status | string | "success". Fehler liefern "error". |
total_count | integer | Ergebnisse, die Ihren Filtern entsprechen, über alle Seiten. |
returned_count | integer | Ergebnisse in dieser Antwort. |
limit | integer | Das verwendete limit. |
offset | integer | Der verwendete offset. |
has_more | boolean | true, wenn offset + limit kleiner als total_count ist, es also eine weitere Seite gibt. |
results | array | Die Ergebnisse, die neuesten zuerst. |
results[].id | integer | ID dieses Verifizierungsdatensatzes. |
results[].campaign_id | integer or null | ID der Aufgabe, zu der die Nummer gehört. |
results[].campaign_name | string or null | Name dieser Aufgabe. |
results[].number | string | Die bereinigte Telefonnummer. |
results[].status | string | pending, verified, invalid oder unknown für eine abgebrochene Prüfung. |
results[].checked_at | string or null | Wann die Nummer geprüft wurde, oder null, solange sie aussteht. |
results[].created_at | string | Wann die Nummer hinzugefügt wurde. |
Zeitstempel sind im Format ISO 8601 in UTC mit der Abweichung +00:00 angegeben. Was jeder Status bedeutet, erfahren Sie unter Werte für den Nummernstatus.
Fehler#
Fehler liefern einen JSON-Body mit status gleich "error" und einen HTTP-Fehlercode:
{ "status": "error", "message": "Campaign not found" }
| HTTP | Meldung | Lösung |
|---|---|---|
405 | Only GET method allowed | Senden Sie einen GET-Request. |
401 | API key required | Fügen Sie den Header Authorization: Bearer YOUR_API_KEY hinzu. |
401 | Invalid API key | Prüfen Sie, ob der Schlüssel existiert und nicht gelöscht oder deaktiviert wurde. |
404 | Campaign not found | Die campaign_id existiert nicht, ist keine Verifizierungsaufgabe oder gehört zu einem anderen Arbeitsbereich. |
500 | Internal server error: … | Meist ist campaign_id, limit oder offset keine ganze Zahl, offset ist negativ, oder offset + limit ist negativ. |
Alle Seiten abrufen#
Erhöhen Sie offset um limit, bis has_more den Wert false hat.
import requests
numbers, offset, limit = [], 0, 500
while True:
response = requests.get(
"https://wbiztool.com/api/v1/verification/results/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"campaign_id": 4521, "status": "verified", "limit": limit, "offset": offset},
timeout=60,
)
result = response.json()
if result["status"] != "success":
raise RuntimeError(result["message"])
numbers += [item["number"] for item in result["results"]]
if not result["has_more"]:
break
offset += limit
print(len(numbers), "numbers are on WhatsApp")// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const numbers = [];
const limit = 500;
let offset = 0;
while (true) {
const url = new URL("https://wbiztool.com/api/v1/verification/results/");
url.search = new URLSearchParams({ campaign_id: "4521", status: "verified", limit: String(limit), offset: String(offset) });
const response = await fetch(url, { headers: { Authorization: "Bearer YOUR_API_KEY" } });
const result = await response.json();
if (result.status !== "success") throw new Error(result.message);
numbers.push(...result.results.map((item) => item.number));
if (!result.has_more) break;
offset += limit;
}
console.log(numbers.length, "numbers are on WhatsApp");Tipps#
- Beim Blättern nach
iddeduplizieren. Die Ergebnisse sind nach Erstellungszeit sortiert, die neuesten zuerst. Nummern derselben Aufgabe haben fast denselben Zeitstempel, und während Sie blättern, können neue Verifizierungen hinzukommen. Eine Zeile kann daher auf zwei Seiten erscheinen oder übersprungen werden. Das Filtern nachcampaign_idund das Warten auf den Abschluss der Aufgabe verringern dieses Problem. - Warten Sie auf den Abschluss, bevor Sie exportieren. Prüfen Sie Verifizierungsstatus, bis
overall_statusden Wertcompletedhat, oder behandeln Siepending-Ergebnisse in Ihrem Code. - Bereinigen Sie Ihre Kontaktliste, indem Sie
status=invalidexportieren und diese Nummern vor Ihrer nächsten Kampagne entfernen. - Seitengröße: Es gibt kein Maximum für
limit, aber eine sehr große Seite führt zu einer großen, langsamen Antwort.
