Inyo

Verificação de Telefone

A Verificação de Telefone confirma que um número de telefone realmente pertence à pessoa que o declara, usando uma consulta de identity-match da operadora. Ela compara o nome, o endereço e a data de nascimento do remetente com os dados que a operadora móvel possui para aquele número e retorna uma pontuação de correspondência. Use-a como sinal antifraude durante o onboarding ou antes de uma primeira transação.

Esta verificação é diagnóstica e explícita — nunca é executada automaticamente a partir do fluxo de transação e nunca reescreve o número de telefone armazenado do remetente. Chame-a quando quiser fazer uma verificação.


Verificar um Número de Telefone

Endpoint: POST /organizations/{tenant}/v2/people/verifyPhone
Autenticação: Nível de agente (x-api-key + x-agent-id + x-agent-api-key)

Há dois modos de chamada mutuamente exclusivos:

ModoEnviarComportamento
Modo pessoaApenas personIdA Inyo carrega o nome, o endereço e a data de nascimento do remetente a partir do registro armazenado, verifica junto à operadora e espelha o resultado na pessoa (phoneVerificationScore, phoneVerificationStatus, phoneVerificationLastCheckedAt).
Modo inlineOs campos de identidade diretamente, sem personIdSem estado — nada é lido ou gravado no registro da pessoa.

⚠️ Os modos não podem ser combinados. Se você enviar personId, não deve enviar nenhum campo de identidade inline, ou a requisição retorna 422.

Modo Pessoa

curl --request POST \
  --url https://{FQDN}/organizations/$TENANT/v2/people/verifyPhone \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --data '{
  "personId": "48066496-9445-41b7-acbe-85e069a77cb7"
}'

O phoneNumber armazenado do remetente já deve estar no formato E.164; caso contrário, a requisição retorna 422.

Modo Inline

curl --request POST \
  --url https://{FQDN}/organizations/$TENANT/v2/people/verifyPhone \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $API_KEY" \
  --header "x-agent-id: $AGENT_ID" \
  --header "x-agent-api-key: $AGENT_KEY" \
  --data '{
  "phoneNumber": "+14145447770",
  "firstName": "John",
  "lastName": "Doe",
  "addressLine1": "123 Market St",
  "city": "San Francisco",
  "state": "CA",
  "postalCode": "94105",
  "addressCountryCode": "US",
  "dateOfBirth": "1990-01-15"
}'

Campos da Requisição

CampoTipoObrigatórioDescrição
personIdstring (UUID)Modo pessoaO remetente a verificar. Quando presente, todos os campos de identidade são carregados do registro e nenhum pode ser enviado inline.
phoneNumberstringModo inlineO número a verificar, E.164 (+ e 1–15 dígitos, ex.: +14145447770). Não é normalizado — canonicalize antes de enviar.
firstNamestringNãoNome a corresponder
lastNamestringNãoSobrenome a corresponder
addressLine1stringNãoEndereço a corresponder
addressLine2stringNãoLinha de endereço adicional
citystringNãoCidade a corresponder
statestringNãoEstado/província a corresponder
postalCodestringNãoCEP/código postal a corresponder
addressCountryCodestringNãoCódigo de país ISO 3166-1 alfa-2
dateOfBirthstringNãoYYYY-MM-DD ou YYYYMMDD

Quanto mais campos de identidade você fornecer, mais completo será o resultado de correspondência.


Resposta

{
  "verificationId": 42,
  "phoneNumber": "+14145447770",
  "status": "MATCH",
  "summaryScore": 100,
  "callerType": "CONSUMER",
  "valid": true,
  "nationalFormat": "(414) 544-7770",
  "countryCode": "US",
  "identityMatch": {
    "first_name_match": "exact_match",
    "last_name_match": "exact_match",
    "address_lines_match": "exact_match",
    "date_of_birth_match": "exact_match",
    "summary_score": 100
  },
  "verifiedAt": "2026-09-09T14:22:11+00:00",
  "cached": false
}
CampoDescrição
verificationIdIdentificador deste registro de verificação
statusResultado geral — MATCH, PARTIAL, NO_MATCH ou ERROR
summaryScorePontuação de correspondência 0100, ou null quando o provedor não retornou pontuação
callerTypeCONSUMER, BUSINESS ou uma classificação similar da operadora
validSe o número é uma linha válida e acessível
nationalFormatO número formatado para o seu país
countryCodeCódigo de país ISO do número
identityMatchDetalhe de correspondência por campo (nome, partes do endereço, data de nascimento, etc.)
verifiedAtQuando a verificação foi realizada
cachedtrue quando este resultado foi servido do cache (veja abaixo)

Limiares de Status

status é derivado de summaryScore usando limiares por tenant (padrões: MATCH ≥ 80, PARTIAL ≥ 40, abaixo → NO_MATCH). O status é capturado no momento da verificação — mudanças de limiar posteriores não reclassificam resultados históricos. Contate a Inyo para ajustar seus limiares.


Cache

Requisições idênticas são armazenadas em cache por tenant durante 90 dias, com chave na tupla completa de entrada (número de telefone, nome, endereço, data de nascimento). Um acerto de cache retorna o resultado armazenado com "cached": true e não cobra novamente o provedor de verificação. Varie qualquer campo de entrada para forçar uma consulta nova.


Respostas de Erro

HTTPErroCausa
422VALIDATION_ERRORCampos ausentes/inválidos, telefone não E.164, ou personId enviado junto com campos de identidade inline
501PROVIDER_NOT_CONFIGUREDO provedor de verificação não está configurado para o seu tenant — contate o suporte da Inyo
502PROVIDER_ERRORO provedor está temporariamente indisponível — repita a requisição

Testes no Sandbox

No sandbox, a verificação de telefone não chama o provedor real — sem cobrança, sem consultas ao vivo. Em vez disso, o resultado é determinado inteiramente pelo último dígito do número de telefone, então você pode exercitar cada ramo escolhendo o número que envia:

O telefone termina emstatussummaryScoreO que simula
0, 1, 2MATCH100Correspondência de identidade total — todos os campos exact_match
3, 4, 5PARTIAL60Misto — alguns campos correspondem, outros não
6, 7NO_MATCH20Maioria dos campos no_match
8ERRORnullO provedor não retornou pontuação (nada para comparar)
9500 upstream → o endpoint retorna 502 PROVIDER_ERROR

Por exemplo, +14145550002 retorna MATCH e +14145550009 retorna 502.

Como a chave de cache inclui o número de telefone, reexecutar o mesmo número de sandbox retorna "cached": true na segunda chamada. Altere o número (ou qualquer outro campo) para forçar uma consulta simulada nova.


Todos os Endpoints

OperaçãoMétodoEndpoint
Verificar um número de telefonePOST/organizations/{tenant}/v2/people/verifyPhone