Pular para o conteúdo

Consulta unitária em tempo real

POST/v1/realtime/check/phone

Consulta síncrona de um número. Uma solicitação pode selecionar vários produtos em tempo real por ID; não use slugs de produtos em lote.

CampoTipoObrigatórioDescrição
identifierstringSimUm número E.164, por exemplo +8613800138000.
countrystringNãoOpcional para E.164 completo; um número nacional exige o código ISO de país correspondente. — Códigos de país
product_idsarraySimLista de 1 a 10 IDs de produtos em tempo real.

Os IDs de produto não se adivinham: leia-os em GET /v1/products e use o id da entrada cujo mode seja realtime. Produtos em lote são endereçados por slug, então um slug nunca funciona neste endpoint. A página de produtos mostra os IDs em tempo real com o prefixo # exatamente por isso.

Lista de Produtos

Uma chamada verifica um número contra até dez produtos em tempo real. Você recebe um único request_id, uma entrada por produto em results e cada uma é cobrada separadamente, então status pode voltar como partial_succeeded. Mais de dez IDs em uma chamada é rejeitado; o console aplica o mesmo limite.

{
"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
}
]
}
CampoTipoDescrição
request_idstring (UUID)UUID que identifica este envio. Informe-o em solicitações de suporte.
identifierstringO identificador verificado, devolvido na resposta.
seriesstringphone ou email.
statusstringsucceeded, partial_succeeded ou failed — derivado de quantos resultados foram cobrados.
request_statusstringEstado interno do ciclo de vida da requisição.
total_reservednumberValor reservado antes da execução das verificações.
total_chargednumberTotal cobrado em todos os produtos do combo.
total_refundednumberTotal reembolsado por itens que não puderam ser resolvidos.
charged_amountnumberCobrança líquida. Sempre igual a total_charged.
refunded_amountnumberReembolso líquido. Sempre igual a total_refunded.
replayedbooleantrue quando uma repetição de Idempotency-Key retornou um resultado armazenado.
resultsarrayUma entrada por produto solicitado, na ordem em que os produtos foram solicitados.
CampoTipoDescrição
product_idintegerID do produto em tempo real no catálogo.
productstringSlug do produto para o qual o ID é resolvido.
resultstringvalid, invalid ou unknown — indica se o identificador está registrado.
cachedbooleantrue quando o veredito veio do cache. Um acerto de cache ainda é cobrado.
billing_statusstringcharged ou refunded.
charged_amountnumberValor cobrado por este produto.
refunded_amountnumberValor reembolsado por este produto.
checked_atstring (ISO 8601)Quando o veredito foi produzido, em UTC.
error_codestring | nullMotivo pelo qual o item não pôde ser resolvido, ou null quando foi bem-sucedido.
Terminal window
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 produto usa o preço por consulta fixado para a solicitação, inclusive com cache. valid e invalid são cobrados; unknown, timeout e itens ocupados são reembolsados.

Um combo parcialmente bem-sucedido retorna HTTP 200 com status=partial_succeeded; falha total usa status=failed. Verifique billing_status e error_code de cada item.

Idempotency-Key tem até 191 bytes e é limitado por usuário. Após timeout ou erro 500, repita o conteúdo original com a chave original. Os resultados são mantidos por 30 dias por padrão.

error_code identifica falhas do provedor, capacidade, prazo, cache ou proteção de concorrência. Itens com falha não são cobrados.

EndpointsSignificado / ação
400Corrija o número, os produtos ou a chave; não houve pré-cobrança.
401Verifique a chave, a conta e o acesso em tempo real; não houve pré-cobrança.
402Saldo insuficiente; nenhum item do combo é executado.
409Repita após Retry-After; um conteúdo diferente não pode reutilizar a chave.
429Aguarde o Retry-After; não houve pré-cobrança.
500O resultado é incerto. Repita com a chave original e não envie uma nova chave.
503Rota, cache ou limitador indisponível; tente novamente mais tarde.