Skip to main content
POST

Ciclo de dois momentos

1

Você cria a validação

O código sai por WhatsApp para o telefone informado.
2

A pessoa devolve o código

Colete na sua interface o código que chegou.
3

Você confirma o código

Chame POST /validations/{id}/verify com o id desta resposta.

Prazo e tentativas

O código vale 10 minutos e a pessoa tem 3 tentativas. Um dígito errado gasta uma tentativa, não a validação inteira. Passado o prazo, a validação vira expired. Não fixe o tamanho do código na sua interface: o número de dígitos é política do provedor.

Número fora de alcance

Um celular brasileiro válido nem sempre consegue receber o código pelo WhatsApp, e aí a resposta é 422 phone_not_reachable.

Authorizations

Authorization
string
header
required

Sua chave de API no cabeçalho Authorization: Bearer sk_.... Crie e revogue chaves no painel ou pelos endpoints de Chaves de API.

Headers

Idempotency-Key
string

Torna a operação segura para retentativa. Reenviar a mesma chave repete a resposta original em vez de executar a operação de novo.

Required string length: 1 - 256
Pattern: ^[A-Za-z0-9_-]{1,256}$

Body

application/json

Dados para criar uma validação de posse de telefone.

phone
string
required

Telefone celular brasileiro que recebe o código, em formato E.164.

Example:

"+5511999998888"

Confirma que o titular consentiu com a consulta. Precisa ser true.

external_id
string

Sua referência de correlação. Volta em todas as respostas desta validação.

Required string length: 1 - 256
Pattern: ^[A-Za-z0-9_-]{1,256}$
Example:

"pedido_12345"

Response

Código enviado e validação criada em estado pending.

Resultado de uma validação.

object
enum<string>
required

Sempre validation.

Available options:
validation
id
string
required

Identificador único da validação.

Example:

"val_0NQW3MVYJYQ453E95V3V1T76AV"

type
enum<string>
required

Tipo da validação.

Os quatro primeiros têm endpoint de criação. Os outros dois podem aparecer em consultas e listagens de contas que os usam por outros canais.

Available options:
liveness_document_match,
liveness_cpf_match,
cpf_phone_match,
sim_swap,
telco_financial_capacity,
phone_ownership
status
enum<string>
required

Estado atual.

Available options:
pending,
completed,
failed,
expired
result
enum<string> | null
required

Resultado de negócio. É null enquanto status for pending.

Available options:
passed,
not_passed,
match,
no_match,
recent_swap,
no_recent_swap,
high_capacity,
moderate_capacity,
low_capacity,
unknown
reason_code
enum<string> | null
required

Por que o resultado foi o que foi. É null quando o resultado não precisa de explicação. Acompanha unknown na maioria dos casos, e também not_passed quando a validação foi recusada por um motivo específico.

Available options:
liveness_failed,
face_mismatch,
spoof_detected,
document_tampered,
document_invalid,
document_unreadable,
cpf_reference_not_found,
data_unavailable,
phone_not_covered,
invalid_code
external_id
string | null
required

A referência de correlação que você enviou na criação.

created_at
string<date-time>
required

Data de criação em ISO-8601.

resolved_at
string<date-time> | null
required

Data de resolução em ISO-8601. É null enquanto não resolvida.

validation_url
string | null
required

URL para onde redirecionar o titular. Preenchida nas validações hospedadas; null nas síncronas.

expires_at
string<date-time> | null
required

Quando a validação vence, em ISO-8601. Preenchida nas validações hospedadas e nas que enviam um código; null nas síncronas.

attempts_remaining
integer | null
required

Quantas chamadas de verificação ainda serão aceitas. Preenchida nos tipos que enviam um código para a pessoa devolver (hoje só phone_ownership) e null nos demais.

Vale 0 assim que a validação é resolvida, em qualquer desfecho, porque nenhuma outra tentativa será aceita.

details
object | null
required

Dados extraídos, agrupados pela chave do type. Hoje só liveness_document_match produz detalhes, e só com status igual a completed. Nos demais casos é null.