Verifique qualquer e-mail. Identifique e-mails falsos no cadastro.
Detecte e-mails falsos, descartáveis e comprometidos antes que cheguem ao seu banco de dados. Uma única chamada cobre sintaxe, entregabilidade, inteligência de provedor e um OTP (senha de uso único) de seis dígitos. $0.03 por verificação, 500 gratuitas/mês.
Confiado por mais de 2.000 organizações em todo o mundo.
Além da sintaxe
MX, descartável, função, e pontuação de risco.
Testamos a entregabilidade em tempo real, sinalizamos e-mails descartáveis e de função, e retornamos uma
pontuação de risco que seu fluxo de trabalho pode usar. $0.03 por verificação.
Como funciona
Do cadastro ao usuário verificado em quatro passos.
Passo 01
Crie o fluxo de trabalho
Escolha as verificações que você quer, ID, prova de vida, reconhecimento facial, sanções, endereço, idade, telefone, e-mail, perguntas personalizadas. Arraste-as para um fluxo no painel, ou publique o mesmo fluxo na nossa API. Crie ramificações com base em condições, faça testes A/B, sem precisar de código.
Passo 02
Integre
Incorpore nativamente com nossos SDKs para Web, iOS, Android, React Native ou Flutter. Redirecione para uma página hospedada. Ou simplesmente envie um link ao seu usuário, por e-mail, SMS, WhatsApp, onde quiser. Escolha o que melhor se adapta à sua stack.
Passo 03
O usuário passa pelo fluxo
A Didit hospeda a câmera, as dicas de iluminação, a transição para o celular e a acessibilidade. Enquanto o usuário está no fluxo, pontuamos mais de 200 sinais de fraude em tempo real e verificamos cada campo contra fontes de dados oficiais. O resultado sai em menos de dois segundos.
Passo 04
Você recebe os resultados
Webhooks assinados em tempo real mantêm seu banco de dados sincronizado no momento em que um usuário é aprovado, recusado ou enviado para revisão. Consulte a API sob demanda. Ou abra o console para inspecionar cada sessão, cada sinal e gerenciar casos do seu jeito.
Feito para desenvolvedores · Contra fraudes · Aberto por design
Seis funcionalidades. Uma feature flag. EMAIL_VERIFICATION.
Cada funcionalidade é um botão no mesmo módulo. Sem níveis de upsell, sem planos separados, sem chamadas adicionais. Ative-as por fluxo de trabalho no console ou passe-as diretamente na chamada da API.
Sintaxe, registros de e-mail e sonda em tempo real, em cada chamada.
Analisamos a sintaxe, consultamos registros MX (mail exchange) e abrimos uma conexão com o servidor de destino para confirmar se o endereço é alcançável. A resposta inclui um booleano claro que seu fluxo de trabalho pode usar para ramificar.
Stack de entregabilidadealex.sample@flytap.com
Sintaxe RFC 5322Parte local + domínio analisados
Consulta MX1 registro · 10 ms
Sonda SMTP250 OK · aceita e-mail
não_entregávelfalse
02 · Inteligência do provedor
Descartáveis. Provedores gratuitos. Pegue-os logo na entrada.
Catálogo atualizado de serviços descartáveis (10minutemail, mailinator, guerrilla), provedores gratuitos (Gmail, Outlook, Yahoo, ProtonMail) e serviços de mascaramento emergentes. Cada tag mapeia para uma ação de recusa, revisão ou aprovação que você ajusta por aplicativo.
03 · Exposição a vazamentos
Saiba se a caixa de entrada vazou. Antes de fazer o onboarding.
Cada endereço é verificado em um banco de dados agregado de vazamentos. A resposta lista cada vazamento em que o endereço aparece, nome, data do vazamento, classes de dados expostos, para que sua equipe de compliance tenha o rastro de evidências para o registro de AML (anti-lavagem de dinheiro).
04 · Confirmação de OTP
Código de seis dígitos. Validade de cinco minutos. Template localizado.
Use nossa tela de entrada hospedada ou seu próprio formulário. Duas tentativas por sessão, dois reenvios a cada 24 horas, validade de cinco minutos, todos os limites são aplicados para você. O template se auto-localiza para o idioma preferido do usuário.
05 · Anti-abuso
Detecção catch-all. Filtragem baseada em função. Duplicatas entre sessões.
Alertas configuráveis mostram todos os padrões de abuso: vazado, descartável, duplicado entre sessões ou bloqueado. Duas recusas automáticas (muitas tentativas, endereço não entregável) são aplicadas independentemente da política. Endereços catch-all e baseados em função são identificados antes mesmo do código ser enviado.
Política de risco5 avisos · 3 ações
EMAIL_CODE_ATTEMPTS_EXCEEDEDRecusa automática
EMAIL_IN_BLOCKLISTRecusa automática
DISPOSABLE_EMAIL_DETECTEDRecusar
BREACHED_EMAIL_DETECTEDRevisar
DUPLICATED_EMAILRevisar
06 · Preços
$0.03 por verificação. 500 grátis todo mês. Para sempre.
O mesmo preço de $0.03 no fluxo hospedado e na API autônoma. Sem taxa de plataforma, sem mínimo mensal, sem surpresas de excedente. Encadeie a Verificação de E-mail antes de uma verificação completa de KYC (Know Your Customer) de $0.33 para filtrar cadastros indesejados antes que consumam um crédito.
FaturamentoPúblico · por verificação
Por verificação
$0.03
Caminho A ou Caminho B
Plano gratuito
500/mo
Para sempre, sem cartão
Sem mínimoPague por sucesso
Integra com KYC+$0.33 pacote
Integre
Dois endpoints. Mesmo JSON. Mesmo preço.
Escolha o fluxo hospedado quando quiser que a gente cuide da entrada de código e o encadeie em um fluxo de trabalho mais amplo. Escolha a API autônoma quando você for o responsável pela UI. Ambos retornam o mesmo relatório.
Lance a Verificação de E-mail com um único prompt.
Cole o bloco abaixo no Claude Code, Cursor, Codex, Devin, Aider ou Replit Agent. Preencha sua stack. O agente provisiona o Didit, cria o fluxo de trabalho de Verificação de E-mail, conecta o webhook e faz o deploy.
didit-integration-prompt.md
# Didit Email Verification — integrate in 5 minutes
You are integrating Didit's Email Verification module into <my_stack>.
Follow these steps exactly. Every URL, header, and enum value below is
canonical — do not paraphrase or "improve" them. The module covers:
syntax validation, MX (Mail Exchange) lookup, SMTP (Simple Mail Transfer
Protocol) deliverability probe, disposable-provider detection,
free-provider detection, breach exposure lookup (HaveIBeenPwned-style),
catch-all + role-based anti-abuse signals, OTP (one-time password)
confirmation, and a configurable risk policy that can chain straight
into a Know Your Customer (KYC) (know your customer) workflow.
## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Or provision programmatically: POST https://apx.didit.me/auth/v2/programmatic/register/
(returns an API key bound to the workspace + application).
## 2. Two integration paths — pick one
### Path A — Workflow Builder (hosted UI)
Best when you want Didit to host the OTP entry screen, localize the
email template, handle resend cool-downs, and chain Email Verification
into a wider KYC / KYB workflow.
1. Create a workflow that contains the EMAIL_VERIFICATION feature:
POST https://verification.didit.me/v3/workflows/
Authorization header: x-api-key: <your-api-key>
Body: workflow_label, features array with the single entry
{ feature: "EMAIL_VERIFICATION" } (UPPERCASE — strict enum)
Optional config: per-warning action overrides (Decline / Review /
Approve) for BREACHED_EMAIL_DETECTED, DISPOSABLE_EMAIL_DETECTED,
DUPLICATED_EMAIL, and EMAIL_IN_BLOCKLIST.
2. Create a verification session for an end user:
POST https://verification.didit.me/v3/session/
Body: workflow_id (from step 1), vendor_data (your own user id),
optional contact_details.email (pre-fills the OTP step).
Response: session_url — redirect the user to it.
3. Listen for webhook callbacks (see "Webhooks" below).
### Path B — Standalone server-to-server API
Best when you already own the OTP UI and just want Didit to send and
validate the code plus return the risk signals.
Two endpoints, both authenticated with x-api-key:
POST https://verification.didit.me/v3/email/send/
Body (application/json):
- email (required, string — RFC 5322 address)
- language (optional, ISO 639-1 code — picks the email template)
- vendor_data (optional string, your user id)
Returns: { reference_id }
POST https://verification.didit.me/v3/email/check/
Body (application/json):
- reference_id (required, from /email/send/)
- code (required, 6-digit string the user typed)
Returns: the full email-verification report (see Section 4).
Use the same vendor_data on retries so cross-session matches work.
## 3. Webhooks (Path A only — Path B returns synchronously)
- Register a webhook destination once via
POST https://verification.didit.me/v3/webhook/destinations/
Body: url, subscribed_events: ["session.verified",
"session.review_started",
"session.declined"]
- Response includes secret_shared_key — store it.
- Every webhook delivery carries an X-Signature-V2 header you MUST verify
before trusting the payload. HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.Algorithm:
1. sortKeys(payload) recursively
2. shortenFloats (truncate trailing zeros after the decimal point)
3. JSON.stringify the result
4. HMAC-SHA256 with the secret_shared_key
5. Hex-encode, compare to the X-Signature-V2 header.
Two module-level event types fire alongside the session events above:
- EMAIL_VERIFICATION_MESSAGE_SENT — OTP was dispatched
- EMAIL_VERIFICATION_DECLINED — verification finished with a
Declined status (caller should
surface the warning to the user)
## 4. Reading the report (both paths return the same shape)
The email object includes:
- status: "Approved" | "Declined" | "In Review" | "Not Finished"
- email: the address that was verified
- is_breached: boolean — true when the address appears in known breaches
- breaches: array of { name, domain, logo_path, breach_date,
description, is_verified, data_classes,
breach_emails_count }
- is_disposable: boolean — true for throwaway providers
- is_undeliverable: boolean — true when MX + SMTP probe failed
- verification_attempts: number — OTP attempts used (max 2)
- verified_at: ISO 8601 timestamp
- matches: array of cross-session hits, each carrying session_id,
session_number, vendor_data, verification_date, email,
status, is_blocklisted
- warnings: Array<{ risk, additional_data, log_type,
short_description, long_description }>
Auto-decline risks (always enforced by Didit, not configurable):
- EMAIL_CODE_ATTEMPTS_EXCEEDED
- EMAIL_IN_BLOCKLIST
- UNDELIVERABLE_EMAIL_DETECTED
Configurable risks (action per workflow — Decline, Review, or Approve):
- BREACHED_EMAIL_DETECTED (exposure / breach intelligence)
- DISPOSABLE_EMAIL_DETECTED (temporary / throwaway provider)
- DUPLICATED_EMAIL (cross-session match on another user)
Anti-abuse limits (enforced server-side):
- Code Entry Attempts: max 2 tries to type the right OTP
- Code Resend Requests: max 2 resends per 24 hours
- Code Validity: 5 minutes from delivery
## 5. Chaining Email Verification into a KYC flow
EMAIL_VERIFICATION is a regular feature inside the Workflow Builder, so
it composes with any of the 25+ other modules. The canonical patterns:
- Cheap pre-filter: gate KYC behind Email Verification so disposable +
breached + undeliverable signups never burn a $0.33 KYC bundle. Use a
conditional branch — if status is Declined on email, skip
ID_VERIFICATION + LIVENESS + FACE_MATCH.
- Compliance log: keep Email Verification in the flow even when KYC is
the primary check, so the verified email is timestamped and signed
alongside the ID Verification report for Anti-Money Laundering (AML) (anti-money laundering)
recordkeeping.
- Step-up auth: rerun Email Verification at a sensitive action (large
withdrawal, password reset) using the same workflow + vendor_data
for closed-loop continuity.
## 6. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: EMAIL_VERIFICATION, ID_VERIFICATION,
LIVENESS, FACE_MATCH, AML, IP_ANALYSIS, PHONE_VERIFICATION.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Always verify webhook signatures before trusting payload data.
- Status casing matches exactly: "Approved", "Declined", "In Review",
"Not Finished" (title-cased, space-separated).
## 7. Pricing reference (public)
- Email Verification: $0.03 per check (Path A or Path B).
- Bundled inside a full KYC workflow: same $0.03 add-on — the $0.33
full-KYC bundle does not include EMAIL_VERIFICATION by default.
- 500 free checks every month, forever, on every account.
## 8. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Test emails: deterministic synthetic addresses returned in sandbox
(Approved by default; trigger Declined by sending the canonical
disposable / breached test addresses listed in the docs).
- Switch to live: flip the application's environment toggle in console.
When in doubt: https://docs.didit.me/core-technology/email-verification/overview
Conformidade por design
Abra um novo país com um clique. Nós fazemos o trabalho pesado.
Nós abrimos as subsidiárias locais, garantimos as licenças, realizamos os testes de penetração, obtemos as certificações e nos alinhamos a cada nova regulamentação. Para lançar verificações em um novo país, basta ativar uma chave. Mais de 220 países ativos, auditados e testados trimestralmente, o único provedor de identidade que um governo de um estado membro da UE formalmente considerou mais seguro do que a verificação presencial.
Por verificação, mesmo preço para fluxo hospedado ou API standalone.
0
Verificações de e-mail gratuitas todo mês, para sempre, em todas as contas.
0 min
Validade do código único, todos os limites aplicados para você.
0
Códigos de aviso configuráveis mais 3 recusas automáticas obrigatórias.
Três planos, uma tabela de preços
Comece grátis. Pague pelo uso. Escale para Enterprise.
500 verificações gratuitas todo mês, para sempre. Pague conforme usar para produção. Contratos personalizados, residência de dados e SLAs (Service Level Agreements) no plano Enterprise.
Grátis
Grátis
$0 / mês. Não precisa de cartão de crédito.
Pacote KYC grátis (Verificação de ID + Prova de Vida Passiva + Comparação Facial + Análise de Dispositivo e IP), 500 / mês, todo mês
Comece grátis → pague apenas quando uma verificação for executada → desbloqueie o Enterprise para um contrato personalizado, SLA ou residência de dados.