API de verificación de números
Estado de la verificación de números de WhatsApp (API)
Consulta el progreso de una tarea de verificación de números y obtén el resultado de cada número que contiene. Consulta periódicamente este endpoint después de crear una tarea de verificación hasta que la tarea termine.
https://wbiztool.com/api/v1/verification/status/?campaign_id=4521Ejemplo rápido#
curl "https://wbiztool.com/api/v1/verification/status/?campaign_id=4521" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
response = requests.get(
"https://wbiztool.com/api/v1/verification/status/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"campaign_id": 4521},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 4xx or 5xx
if result["status"] == "success":
progress = result["progress"]
print(result["overall_status"], f"{progress['completed_percentage']}% done")
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/status/");
url.searchParams.set("campaign_id", "4521");
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.overall_status, `${result.progress.completed_percentage}% done`);
for (const item of result.results) {
console.log(item.number, item.status);
}
} else {
console.error(`Failed (${response.status}):`, result.message);
}<?php
$ch = curl_init('https://wbiztool.com/api/v1/verification/status/?campaign_id=4521');
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['overall_status'] . ' - ' . $result['progress']['completed_percentage'] . "% done\n";
foreach ($result['results'] as $item) {
echo $item['number'] . ': ' . $item['status'] . "\n";
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Parámetros de la solicitud#
AuthorizationheaderobligatorioBearer YOUR_API_KEY, con una clave de Configuración → Claves API. También puedes pasar la clave como parámetro de consultaapi_key, pero la cabecera evita que quede en los registros del servidor y de los proxies.campaign_idintegerobligatorioEl
campaign_idque devolvió Crear verificación, enviado en la query string. Debe ser una tarea de verificación del mismo espacio de trabajo que la clave API.
Respuesta#
Una solicitud correcta devuelve HTTP 200:
{
"status": "success",
"campaign_id": 4521,
"campaign_name": "Website leads - September",
"overall_status": "processing",
"progress": {
"total": 3,
"pending": 1,
"verified": 1,
"invalid": 1,
"completed_percentage": 66.67
},
"results": [
{
"number": "14155550123",
"status": "pending",
"checked_at": null,
"created_at": "2026-09-16T10:15:00.483101+00:00"
},
{
"number": "919876543210",
"status": "verified",
"checked_at": "2026-09-16T10:16:12.204551+00:00",
"created_at": "2026-09-16T10:15:00.482913+00:00"
},
{
"number": "919876543211",
"status": "invalid",
"checked_at": "2026-09-16T10:16:19.915372+00:00",
"created_at": "2026-09-16T10:15:00.483020+00:00"
}
],
"created_at": "2026-09-16T10:15:00.471820+00:00",
"last_updated": "2026-09-16T10:15:00.471820+00:00"
}
| Campo | Tipo | Descripción |
|---|---|---|
status | string | "success". Los errores devuelven "error". |
campaign_id | integer | ID de la tarea de verificación. |
campaign_name | string | Nombre de la tarea. |
overall_status | string | pending, processing o completed. Consulta Valores del estado general. |
progress.total | integer | Números de la tarea. |
progress.pending | integer | Números aún sin comprobar. |
progress.verified | integer | Números registrados en WhatsApp. |
progress.invalid | integer | Números marcados como invalid (no están en WhatsApp, no son un número válido o su comprobación falló). |
progress.completed_percentage | number | Números comprobados (verified + invalid) como porcentaje de total, redondeado a 2 decimales. |
results | array | Todos los números de la tarea, ordenados por número. La lista completa se devuelve de una vez, sin paginación. |
results[].number | string | El número de teléfono limpio. |
results[].status | string | pending, verified, invalid o unknown. Consulta Valores de estado del número. |
results[].checked_at | string or null | Cuándo se comprobó el número, o null mientras está pendiente. |
results[].created_at | string | Cuándo se añadió el número. |
created_at | string | Cuándo se creó la tarea. |
last_updated | string | Cuándo se modificó por última vez el registro de la tarea. No cambia a medida que se comprueban los números, así que usa checked_at para ver la actividad reciente. |
Todas las marcas de tiempo están en ISO 8601 en UTC, con microsegundos y un desfase +00:00, por ejemplo 2026-09-16T10:16:12.204551+00:00.
Valores de estado del número#
| Valor | Significado |
|---|---|
pending | Pendiente de comprobar. |
verified | El número está registrado en WhatsApp. |
invalid | El número no está registrado en WhatsApp, no es un número de teléfono válido o no se pudo comprobar por un error de procesamiento. Si un número que esperas que sea válido aparece como invalid, vuelve a verificarlo en una tarea nueva. |
unknown | El soporte de Wbiztool canceló la comprobación. El procesamiento normal no asigna este estado. |
Valores del estado general#
| Valor | Significado |
|---|---|
pending | Todavía no se ha comprobado ningún número. |
processing | Algunos números ya se han comprobado y otros siguen pendientes. |
completed | No queda ningún número pendiente. |
Una tarea completed puede mostrar un completed_percentage inferior a 100 si se cancelaron algunas comprobaciones, porque los números cancelados cuentan para total pero no para el porcentaje.
Errores#
Los errores devuelven un cuerpo JSON con status con valor "error" y un código de error HTTP:
{ "status": "error", "message": "Campaign not found" }
| HTTP | Mensaje | Cómo solucionarlo |
|---|---|---|
405 | Only GET method allowed | Envía una solicitud GET. |
401 | API key required | Añade la cabecera Authorization: Bearer YOUR_API_KEY. |
401 | Invalid API key | Comprueba que la clave existe y que no se ha eliminado ni desactivado. |
400 | campaign_id is required | Añade campaign_id a la query string. |
404 | Campaign not found | El ID no existe, no es una tarea de verificación o pertenece a otro espacio de trabajo. Usa una clave del espacio de trabajo que creó la tarea. |
500 | Internal server error: … | Lo más habitual es que campaign_id no sea un número. Envía solo dígitos. |
Consejos#
- No consultes con demasiada frecuencia. Se comprueban hasta 10 números por ejecución en segundo plano, así que basta con consultar cada 30 a 60 segundos, y una tarea grande puede tardar bastante.
- Deja de consultar cuando
overall_statusseacompleted. - ¿Se queda en
pending? La verificación necesita un número de WhatsApp conectado en la configuración de WhatsApp del mismo espacio de trabajo. Sin él, los números nunca se comprueban. Las comprobaciones también esperan mientras tu número conectado está ocupado enviando mensajes. - Tareas grandes: este endpoint devuelve todos los números en una sola respuesta. Para leer los resultados página a página, o solo los números
verified, usa Resultados de la verificación.
