Saltearse al contenido

Comprobación individual en tiempo real

POST/v1/realtime/check/phone

Comprueba un número de forma síncrona. Una solicitud puede incluir varios productos en tiempo real; usa sus ID, no los slugs de productos por lotes.

CampoTipoRequeridoDescripción
identifierstringSíUn número E.164, por ejemplo +8613800138000.
countrystringNoOpcional para un E.164 completo; un número nacional requiere el código ISO de país correspondiente. — Códigos de país
product_idsarraySíLista de 1 a 10 ID de productos en tiempo real.

Los IDs de producto no se adivinan: léelos de GET /v1/products y toma el id de la entrada cuyo mode sea realtime. Los productos por lotes se direccionan por slug, así que un slug nunca funciona en este endpoint. La página de productos muestra los IDs en tiempo real con el prefijo # precisamente por esto.

Productos

Una llamada verifica un número contra hasta diez productos en tiempo real. Obtienes un único request_id, una entrada por producto en results y cada una se factura por separado, por lo que status puede devolver partial_succeeded. Más de diez IDs en una llamada se rechazan; la consola aplica el mismo límite.

{
"request_id": "8c1e4f91-7bd8-4d7e-a3ae-3d7e5b0c6c11",
"identifier": "+8613800138000",
"series": "phone",
"status": "succeeded",
"request_status": "completed",
"replayed": false,
"total_reserved": 0.004000,
"total_charged": 0.004000,
"total_refunded": 0.000000,
"charged_amount": 0.004000,
"refunded_amount": 0.000000,
"results": [
{
"product_id": 47,
"product": "wavalid-realtime",
"result": "valid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:00Z",
"error_code": null
},
{
"product_id": 50,
"product": "tgValid-rt",
"result": "invalid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:01Z",
"error_code": null
}
]
}
CampoTipoDescripción
request_idstring (UUID)UUID que identifica este envío. Cítalo en las solicitudes de soporte.
identifierstringEl identificador que se verificó, devuelto tal cual.
seriesstringphone o email.
statusstringsucceeded, partial_succeeded o failed: se deriva de cuántos resultados se cobraron.
request_statusstringEstado interno del ciclo de vida de la solicitud.
total_reservednumberMonto reservado antes de ejecutar las verificaciones.
total_chargednumberTotal cobrado en todos los productos de la combinación.
total_refundednumberTotal reembolsado por los elementos que no se pudieron resolver.
charged_amountnumberCargo neto. Siempre es igual a total_charged.
refunded_amountnumberReembolso neto. Siempre es igual a total_refunded.
replayedbooleantrue cuando una repetición del Idempotency-Key devolvió un resultado almacenado.
resultsarrayUna entrada por cada producto solicitado, en el orden en que se solicitaron los productos.
CampoTipoDescripción
product_idintegerID del producto de tiempo real del catálogo.
productstringSlug del producto al que resuelve ese ID.
resultstringvalid, invalid o unknown: si el identificador está registrado.
cachedbooleantrue cuando el veredicto provino de la caché. Un acierto de caché igualmente se cobra.
billing_statusstringcharged o refunded.
charged_amountnumberImporte cobrado por este producto.
refunded_amountnumberImporte reembolsado por este producto.
checked_atstring (ISO 8601)Cuándo se produjo el veredicto, en UTC.
error_codestring | nullPor qué no se pudo resolver el elemento, o null cuando tuvo éxito.
Ventana de terminal
curl -X POST "https://api.zelnum.com/api/v1/realtime/check/phone" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"+8613800138000","country":"CN","product_ids":[47,50]}'

Cada producto usa el precio por consulta fijado para la solicitud, incluso con caché. Solo valid e invalid se cobran; unknown, los tiempos de espera y los elementos ocupados se reembolsan.

Un combo parcialmente correcto devuelve HTTP 200 con status=partial_succeeded; si todo falla, status=failed. Revisa billing_status y error_code de cada elemento.

Idempotency-Key admite hasta 191 bytes y se aplica por usuario. Tras un timeout o error 500, repite el contenido original con la misma clave. Los resultados se conservan 30 días de forma predeterminada.

error_code identifica fallos del proveedor, capacidad, plazo, caché o protección de concurrencia. Los elementos fallidos no se cobran.

EndpointsSignificado / acción
400Corrige el número, los productos o la clave; no hubo prepago.
401Comprueba la clave, la cuenta y el acceso en tiempo real; no hubo prepago.
402Saldo insuficiente; no se ejecuta ningún elemento.
409Respeta Retry-After; una carga distinta no puede reutilizar la clave.
429Espera el tiempo indicado en Retry-After; no hubo prepago.
500El resultado es incierto. Repite con la clave original y no envíes otra clave.
503La ruta, la caché o el limitador no están disponibles; inténtalo más tarde.