Numara doğrulama API'si
WhatsApp numara doğrulama sonuçları (API)
Numara doğrulama sonuçlarını göreve veya duruma göre filtreleyerek sayfa sayfa okuyun. WhatsApp'ta olan numaraları dışa aktarmak, geçersiz numaraları kişi listenizden temizlemek veya sonuçları CRM'inizle eşitlemek için kullanın.
https://wbiztool.com/api/v1/verification/results/Filtre olmadan, çalışma alanınızdaki her doğrulamayı en yeniden başlayarak döndürür. Buna yalnızca API ile oluşturulan görevler değil, Numara doğrulama panel sayfasından oluşturulan görevler de dahildir.
Hızlı örnek#
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');
}İstek parametreleri#
Tüm parametreler sorgu dizesinde gönderilir.
Kimlik doğrulama
AuthorizationheaderzorunluAyarlar → API anahtarları sayfasındaki bir anahtarla
Bearer YOUR_API_KEY. Anahtarı bunun yerineapi_keysorgu parametresi olarak da iletebilirsiniz, ancak başlık kullanmak anahtarı sunucu ve proxy günlüklerinin dışında tutar.
Filtreler ve sayfalama
campaign_idintegeristeğe bağlıYalnızca bu doğrulama görevindeki numaraları döndürür. API anahtarıyla aynı çalışma alanındaki bir doğrulama görevi olmalıdır. Tüm görevlerin sonuçlarını almak için göndermeyin.
statusstringisteğe bağlıYalnızca bu durumdaki numaraları döndürür:
pending,verifiedveyainvalid. Diğer her değer,unknowndahil, yok sayılır ve durum filtresi uygulanmaz; yanistatus=unknownher durumu döndürür. Değerler büyük/küçük harfe duyarlıdır:Verifiedyok sayılır ve her durumu döndürür.limitintegeristeğe bağlıSayfa başına sonuç. Varsayılan
100. 1 veya daha büyük bir değer kullanın.offsetintegeristeğe bağlıAtlanacak sonuç sayısı. Varsayılan
0. 0 veya daha büyük olmalıdır.
Yanıt#
Başarılı bir istek HTTP 200 döndürür:
{
"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"
}
]
}
| Alan | Tür | Açıklama |
|---|---|---|
status | string | "success". Hatalar "error" döndürür. |
total_count | integer | Tüm sayfalarda filtrelerinizle eşleşen sonuçlar. |
returned_count | integer | Bu yanıttaki sonuçlar. |
limit | integer | Kullanılan limit. |
offset | integer | Kullanılan offset. |
has_more | boolean | offset + limit değeri total_count değerinden küçükse, yani başka bir sayfa varsa true. |
results | dizi | Sonuçlar, en yeniden başlayarak. |
results[].id | integer | Bu doğrulama kaydının ID'si. |
results[].campaign_id | integer veya null | Numaranın ait olduğu görevin ID'si. |
results[].campaign_name | string veya null | O görevin adı. |
results[].number | string | Temizlenmiş telefon numarası. |
results[].status | string | pending, verified, invalid veya iptal edilmiş bir kontrol için unknown. |
results[].checked_at | string veya null | Numaranın kontrol edildiği zaman; beklemedeyken null. |
results[].created_at | string | Numaranın eklendiği zaman. |
Zaman damgaları +00:00 farkıyla UTC'de ISO 8601 biçimindedir. Her durumun ne anlama geldiği için Numara durumu değerleri bölümüne bakın.
Hatalar#
Hatalar, status değeri "error" olan bir JSON gövdesi ve bir HTTP hata kodu döndürür:
{ "status": "error", "message": "Campaign not found" }
| HTTP | Mesaj | Nasıl düzeltilir |
|---|---|---|
405 | Only GET method allowed | Bir GET isteği gönderin. |
401 | API key required | Authorization: Bearer YOUR_API_KEY başlığını ekleyin. |
401 | Invalid API key | Anahtarın mevcut olduğunu ve silinmediğini veya devre dışı bırakılmadığını kontrol edin. |
404 | Campaign not found | campaign_id mevcut değil, bir doğrulama görevi değil veya başka bir çalışma alanına ait. |
500 | Internal server error: … | Genellikle campaign_id, limit veya offset bir tam sayı değildir, offset negatiftir ya da offset + limit negatiftir. |
Her sayfayı okuma#
has_more değeri false olana kadar offset değerini limit kadar artırın.
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");İpuçları#
- Sayfalarken
iddeğerine göre tekrarları ayıklayın. Sonuçlar oluşturulma zamanına göre, en yeniden başlayarak sıralanır. Aynı görevdeki numaraların zaman damgaları neredeyse aynıdır ve siz sayfalarken yeni doğrulamalar eklenebilir; bu yüzden bir satır iki sayfada görünebilir veya atlanabilir.campaign_idile filtrelemek ve görevin bitmesini beklemek bunu azaltır. - Tamamlanmasını bekleyin: dışa aktarmadan önce
overall_statusdeğericompletedolana kadar Doğrulama durumu ile kontrol edin veya kodunuzdapendingsonuçları ele alın. - Kişi listenizi temizleyin: bir sonraki kampanyanızdan önce
status=invalidsonuçlarını dışa aktarın ve bu numaraları kaldırın. - Sayfa boyutu: en büyük
limitdeğeri yoktur, ancak çok büyük bir sayfa büyük ve yavaş bir yanıt oluşturur.
