> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de verificação de telefone: OTP, SMS e WhatsApp

> A Didit verifica números de telefone com OTP por SMS, WhatsApp, Telegram, RCS e voz, com detecção de operadora e risco. $0.02 por chamada + operadora.

A Verificação de telefone da Didit oferece um método confiável para verificar o número de telefone dos usuários por meio de códigos de uso único (OTP). Esse recurso adiciona uma camada essencial de segurança ao seu processo de verificação de identidade, garantindo informações de contato legítimas.

Prompt de integração da Verificação de telefone
        Copy prompt to clipboard



      
      

\<pre>

\````# Goal
Integrate Didit Phone Verification (OTP send + check + carrier/risk lookup) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when the user goes through a hosted Didit flow — the SDK collects the number and OTP for you.

1\. Add the PHONE feature to the workflow (Business Console or POST /v3/workflows/). Configure risk actions: duplicated_phone_number_action, disposable_number_action, voip_number_action.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `phone_verifications[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server, OTP pair)
Two endpoints, paired by phone_number.

Step 1 — send the code:
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/send/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"options": {
  "code_size": 6,
  "preferred_channel": "whatsapp",
  "locale": "en-US"
},
"vendor_data": "user-1234"
}'
\```
Channels: `whatsapp` (default), `sms`, `telegram`, `voice` — delivery falls back to SMS if the preferred channel is unavailable. Codes are valid for **5 minutes**; one free retry per number within the window.
Branding: SMS codes carry your app's SMS sender name ("123456 is your verification code for Acme Bank") on every send, at no extra cost; set it in the Business Console. Pass `options.sms_sender_name` to sign one code with another name (1 to 30 characters). WhatsApp codes use a fixed message; connect your own WhatsApp Business number in the Business Console to send them under your business name.

Step 2 — check the code (user types it into your UI):
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/check/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"code": "123456",
"voip_number_action": "DECLINE"
}'
\```
Each session accepts **up to 3** code-entry attempts. The check response includes the full phone metadata (carrier, line_type, disposable, voip, ported).

\# Status enum (per phone_verifications[].status / phone.status)
"Not Started" | "In Progress" | "Approved" | "Declined" | "Failed" | "Expired or Not Found" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.PHONE)
warnings[] risk codes include:
DUPLICATED_PHONE_NUMBER, DISPOSABLE_NUMBER, VOIP_NUMBER, INVALID_PHONE_NUMBER, OTP_DELIVERY_FAILED, OTP_MAX_ATTEMPTS_REACHED, OTP_EXPIRED, PHONE_NUMBER_BLOCKED.
Full catalogue: /core-technology/phone-verification/warnings-phone-verification.

\# Failure modes to handle
\- HTTP 400 — non-E.164 phone_number on /send/.
\- send response status="Blocked" with reason="spam" — anti-abuse block; no code sent, no charge.
\- check response status="Failed" — wrong code, attempts remaining; re-prompt.
\- check response status="Declined" — third failed attempt; restart with /v3/phone/send/.
\- check response status="Expired or Not Found" — outside the 5-minute window or no pending session for that number; restart.

\# See also
\- Canonical schema: /reference/data-models#phone-verification
\- Per-feature report: /core-technology/phone-verification/report-phone-verification
\- Risk catalogue: /core-technology/phone-verification/warnings-phone-verification
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Paste into

Na aula da Academy sobre como ler o resultado de uma verificação, o capítulo de 8:08 trata da verificação de telefone e da detecção de duplicidade.[Verificação de telefone e duplicidades — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=488\&rel=0\&playsinline=1)![Diagrama do fluxo de verificação de telefone](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/phone-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=6c12863ce97e5ad6a11757b598918932)## Como funcionaNossa solução de Verificação de telefone entrega uma validação completa de números por meio de um processo simples e amigável. O sistema combina a verificação por OTP com uma avaliação de risco avançada para oferecer verificação de telefone confiável em escala.**1. Coleta do telefone**O sistema coleta com segurança as seguintes informações:| Dado coletado | Detalhes |
| - | - |
| **Número de telefone** | Se não for informado na criação da sessão, o usuário digita o número em formato internacional. Se for informado, o usuário deve verificar o número preenchido. |
| **Código do país** | Sugerido automaticamente com base na localização do IP ou escolhido pelo usuário. |
| **Tipo de operadora** | Detecta se o número é móvel ou fixo. |**2. Geração e entrega do OTP**Nosso sistema de verificação:- Gera um código de uso único seguro e com prazo de validade
- Entrega o código por SMS ao número informado
- Garante uma entrega otimizada por meio de várias integrações com operadoras
- Oferece alternativas para dificuldades de entrega**3. Validação do código**O usuário conclui a verificação:- Digitando o código recebido na interface de verificação
- Enviando dentro do prazo configurado (normalmente de 5 a 10 minutos)
- Solicitando um novo código, se necessário (com limite de taxa adequado)**4. Avaliação de risco**Nosso sistema executa verificações avançadas:| Verificação | Descrição |
| - | - |
| **Formato e operadora** | Verifica o formato do número de telefone e as informações da operadora. |
| **Números descartáveis** | Confere com bases conhecidas de números descartáveis/virtuais. |
| **Detecção de SIM swap** | Identifica possíveis riscos de troca de SIM. |
| **Padrões de atividade** | Detecta padrões de atividade suspeitos. |
| **Dados históricos** | Cruza com dados históricos de verificação. |**5. Entrega do resultado**Acesse os resultados da verificação por vários canais:| Canal | Descrição |
| - | - |
| **Painel** | Atualizações do painel em tempo real. |
| **Webhooks** | Notificações instantâneas por webhook. |
| **API** | Integração por API RESTful. |
| **Relatórios** | Relatórios completos com informações detalhadas da verificação. |## Recursos de verificaçãoNosso serviço de Verificação de telefone oferece vários recursos importantes para melhorar o seu processo de verificação:#### Verificação por OTP- **Geração segura de códigos**: códigos de uso único gerados aleatoriamente
- **Entrega por SMS**: entrega rápida e confiável em dispositivos móveis
- **Tempos limite configuráveis**: defina prazos de expiração de acordo com os seus requisitos de segurança
- **Opções de nova tentativa**: permita que os usuários solicitem novos códigos com limite de taxa adequado
- **Códigos com a sua marca**: os códigos por SMS citam a sua marca em vez de enviar uma mensagem genérica, sem custo extra. Veja [Mensagens de verificação com a sua marca](#mensagens-de-verificação-com-a-sua-marca).
- **Seu próprio número de WhatsApp**: os códigos por WhatsApp podem sair do seu próprio número do WhatsApp Business. Veja [Envie códigos por WhatsApp do seu próprio número](#envie-códigos-por-whatsapp-do-seu-próprio-número).#### Mensagens de verificação com a sua marcaOs códigos de verificação por SMS podem citar a sua marca, para que os usuários reconheçam a mensagem como sua:> 123456 é o seu código de verificação para **Acme Bank**Só o nome é personalizável.
O restante do texto é um modelo padrão registrado nas operadoras móveis de cada país, o que evita que os códigos sejam filtrados como spam, e é traduzido para o idioma do destinatário.
A personalização é gratuita: um código com marca custa o mesmo que um sem marca.**Defina o nome do remetente de SMS** no Business Console, em **Verificação de telefone → Configurações** de um fluxo ou em **White Label → SMS**.
Ele pertence à sua aplicação, e não a um único fluxo: assina todos os códigos por SMS que a aplicação envia, em todos os fluxos e pela API independente, com ou sem personalização de marca própria.**Qual nome um código leva**, vale a primeira correspondência:1) `options.sms_sender_name` em [`POST /v3/phone/send/`](https://docs.didit.me/standalone-apis/phone-send), para aquele código.
2) O nome do remetente de SMS da sua aplicação.
3) Apenas em envios com marca própria (um fluxo com personalização de marca própria, ou `options.use_white_label_customization: true` na API), o nome público da sua marca própria.
4) Caso contrário, o código é enviado sem nome.Um nome de remetente usa de 1 a 30 caracteres: apenas letras, dígitos, espaços e ' & - !, não somente dígitos, com espaços simples entre as palavras.
A API rejeita com `400` um nome que fuja dessas regras, antes de enviar qualquer código.- **Canais**: o nome é adicionado às mensagens SMS, inclusive a um SMS enviado como alternativa de outro canal. Os códigos por WhatsApp são enviados com uma mensagem fixa e não levam o nome; para ter o nome da sua empresa neles, [envie-os do seu próprio número](#envie-códigos-por-whatsapp-do-seu-próprio-número).
- **Mudanças por dia**: cada aplicação pode começar a usar até dois novos nomes por dia (UTC), contando tanto novos nomes de remetente quanto novos valores de `sms_sender_name`. Depois disso, os códigos mantêm o nome atual da aplicação até o dia seguinte, e um novo nome por requisição é enviado com o nome da aplicação. Um nome que você já usou antes não conta de novo.
- **Entrega em primeiro lugar**: um problema de personalização nunca impede o envio de um código. Se um nome não puder ser aplicado, o código é enviado com o nome da aplicação ou sem nome.#### Envie códigos por WhatsApp do seu próprio númeroPor padrão, os códigos por WhatsApp saem do número do WhatsApp Business da Didit.
Você pode conectar o seu próprio número do WhatsApp Business, para que os usuários recebam os códigos com o nome e o número da sua empresa.**Conecte um número** no Business Console, em **Verificação de telefone → Configurações → Número do WhatsApp** de um fluxo, e selecione **Conectar número do WhatsApp**.
Uma janela de login é aberta: entre na conta empresarial que administra o seu número do WhatsApp Business e escolha a conta do WhatsApp Business e o número de envio.
A Didit então registra o número para envio e cria a mensagem de verificação dele.
Editá-lo exige permissão para editar a personalização, como no nome do remetente de SMS.O número pertence à sua aplicação, e não a um único fluxo: depois de conectado, ele envia todos os códigos por WhatsApp que a aplicação envia, em todos os fluxos e pela API independente.- **Aprovação**: a nova mensagem de verificação precisa ser aprovada antes de o número poder enviar códigos, geralmente em alguns minutos. Até lá, o card mostra o número como aguardando aprovação, e os códigos continuam saindo do número da Didit.
- **Texto da mensagem**: as mensagens de verificação no WhatsApp usam um texto padrão no idioma do seu usuário: o código, um aviso de segurança e um botão de copiar. O texto não pode ser editado, mas o remetente é a sua empresa.
- **Entrega**: se um código não puder ser entregue no WhatsApp, ele é enviado por SMS, assinado com o nome do remetente de SMS.
- **Cobrança**: as mensagens que o seu número envia são cobradas na sua conta do WhatsApp Business, então a Didit cobra apenas a taxa de verificação (\$0.02) por esses códigos. Os códigos enviados por SMS são cobrados normalmente.
- **Requer atenção**: se o número não puder mais enviar (por exemplo, se o acesso dele foi removido da sua conta empresarial), os códigos voltam a sair do número da Didit e o card pede que você conecte o número novamente.
- **Desconecte** a qualquer momento no mesmo card. Os códigos voltam a sair do número da Didit; o número e a mensagem de verificação dele permanecem na sua conta do WhatsApp Business.#### Análise do número de telefone- **Validação de formato**: garanta que o número siga o formato internacional correto
- **Detecção de operadora**: identifique a operadora de telecomunicações associada ao número
- **Tipo de número**: distinga entre números móveis, fixos e VoIP
- **Validação de país**: verifique se o número corresponde ao formato esperado do país#### Avaliação de risco- **Detecção de números descartáveis**: identifique números temporários usados para evitar a rastreabilidade
- **Identificação de números virtuais**: sinalize números que possam ser virtuais ou baseados em VoIP
- **Monitoramento de atividade**: acompanhe padrões suspeitos entre as tentativas de verificação
- **Verificação em lista de bloqueio**: confira com listas internas de números já usados de forma indevida## PreçosA verificação de telefone é cobrada **por mensagem enviada**, com preços transparentes e pagamento conforme o uso:| Componente | Custo |
| - | - |
| **Taxa da Didit** | \$0.02 por verificação |
| **Taxa da operadora** | Varia por país e canal |
| **Total** | \$0.02 + taxa da operadora |O desconto do seu plano se aplica apenas à taxa de \$0.02 da Didit; a taxa da operadora é repassada ao custo e nunca recebe desconto. Veja [Descontos](https://docs.didit.me/getting-started/pricing.md#discounts).Oferecemos suporte a vários canais de entrega com preços diferentes (a disponibilidade varia por país):| Canal | Descrição |
| - | - |
| **SMS** | Entrega tradicional por mensagem de texto |
| **WhatsApp** | Entrega por mensagem do WhatsApp |
| **Telegram** | Entrega por mensagem do Telegram |
| **RCS** | Mensagens por Rich Communication Services |
| **Viber** | Entrega por mensagem do Viber |
| **Zalo** | Entrega por mensagem do Zalo (Vietnã) |> [!NOTE]
>
> Você só paga quando uma mensagem é enviada. Se o usuário abandonar antes da entrega do OTP, você não é cobrado.→ [Preços da verificação de telefone](https://docs.didit.me/getting-started/phone-verification-pricing.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.