API pengesahan nombor
Keputusan pengesahan nombor WhatsApp (API)
Baca keputusan pengesahan nombor halaman demi halaman, ditapis mengikut tugas atau status. Gunakannya untuk mengeksport nombor yang menggunakan WhatsApp, membuang nombor tidak sah daripada senarai kenalan anda atau menyegerakkan keputusan ke dalam CRM anda.
https://wbiztool.com/api/v1/verification/results/Tanpa penapis, ia memulangkan setiap pengesahan dalam ruang kerja anda, yang terbaharu dahulu. Ini termasuk tugas yang dicipta dari halaman papan pemuka Number verification (Pengesahan nombor), bukan hanya yang dicipta melalui API.
Contoh ringkas#
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');
}Parameter permintaan#
Semua parameter diletakkan dalam rentetan pertanyaan.
Pengesahan identiti
AuthorizationheaderwajibBearer YOUR_API_KEY, menggunakan kunci dari Settings → API keys (Tetapan → Kunci API). Anda boleh menghantar kunci sebagai parameter pertanyaanapi_key, tetapi pengepala menghalangnya daripada muncul dalam log pelayan dan proksi.
Penapis dan penomboran halaman
campaign_idintegerpilihanPulangkan hanya nombor daripada tugas pengesahan ini. Ia mesti tugas pengesahan dalam ruang kerja yang sama dengan kunci API. Jangan sertakannya untuk mendapatkan keputusan daripada semua tugas.
statusstringpilihanPulangkan hanya nombor dengan status ini:
pending,verifiedatauinvalid. Sebarang nilai lain diabaikan dan tiada penapis status digunakan, termasukunknown, jadistatus=unknownmemulangkan setiap status. Nilai adalah sensitif huruf besar/kecil:Verifieddiabaikan dan memulangkan setiap status.limitintegerpilihanBilangan keputusan setiap halaman. Lalai
100. Gunakan nilai 1 atau lebih.offsetintegerpilihanBilangan keputusan yang dilangkau. Lalai
0. Mesti 0 atau lebih.
Respons#
Permintaan yang berjaya memulangkan HTTP 200:
{
"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"
}
]
}
| Medan | Jenis | Penerangan |
|---|---|---|
status | string | "success". Ralat memulangkan "error". |
total_count | integer | Keputusan yang sepadan dengan penapis anda, merentasi semua halaman. |
returned_count | integer | Keputusan dalam respons ini. |
limit | integer | limit yang digunakan. |
offset | integer | offset yang digunakan. |
has_more | boolean | true jika offset + limit kurang daripada total_count, bermaksud ada halaman lain. |
results | tatasusunan | Keputusan, yang terbaharu dahulu. |
results[].id | integer | ID rekod pengesahan ini. |
results[].campaign_id | integer atau null | ID tugas yang memiliki nombor itu. |
results[].campaign_name | string atau null | Nama tugas tersebut. |
results[].number | string | Nombor telefon yang telah dibersihkan. |
results[].status | string | pending, verified, invalid, atau unknown untuk semakan yang dibatalkan. |
results[].checked_at | string atau null | Masa nombor disemak, atau null semasa ia masih menunggu. |
results[].created_at | string | Masa nombor ditambah. |
Cap masa dalam ISO 8601 dalam UTC dengan ofset +00:00. Untuk maksud setiap status, lihat Nilai status nombor.
Ralat#
Ralat memulangkan badan JSON dengan status ditetapkan kepada "error" dan kod ralat HTTP:
{ "status": "error", "message": "Campaign not found" }
| HTTP | Mesej | Cara membetulkannya |
|---|---|---|
405 | Only GET method allowed | Hantar permintaan GET. |
401 | API key required | Tambah pengepala Authorization: Bearer YOUR_API_KEY. |
401 | Invalid API key | Pastikan kunci wujud dan belum dipadam atau dinyahdayakan. |
404 | Campaign not found | campaign_id tidak wujud, bukan tugas pengesahan, atau milik ruang kerja lain. |
500 | Internal server error: … | Biasanya campaign_id, limit atau offset bukan nombor bulat, offset negatif, atau offset + limit negatif. |
Membaca setiap halaman#
Tambah offset sebanyak limit sehingga has_more ialah false.
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");Petua#
- Buang pendua mengikut
idsemasa membaca halaman. Keputusan diisih mengikut masa penciptaan, yang terbaharu dahulu. Nombor daripada tugas yang sama berkongsi cap masa yang hampir sama dan pengesahan baharu boleh ditambah semasa anda membaca halaman, jadi satu baris boleh muncul pada dua halaman atau terlangkau. Menapis mengikutcampaign_iddan menunggu tugas selesai mengurangkan masalah ini. - Tunggu sehingga selesai sebelum mengeksport. Semak Status pengesahan sehingga
overall_statusialahcompleted, atau kendalikan keputusanpendingdalam kod anda. - Bersihkan senarai kenalan anda dengan mengeksport
status=invaliddan membuang nombor tersebut sebelum kempen seterusnya. - Saiz halaman: tiada had maksimum untuk
limit, tetapi halaman yang sangat besar menghasilkan respons yang besar dan perlahan.
