Autentify
Abrir menu
Blog

Verify · Para desenvolvedores

Como validar e-mail no formulário de cadastro com uma API

Checar se o campo tem um @ não impede o cadastro de um endereço que não existe. Veja como consultar uma API de validação no momento do cadastro, o que decidir em cada resultado e os cuidados para não travar o cliente.

Equipe Autentify7 min de leitura

Resposta rápida: Para validar o e-mail no formulário de cadastro, confira o formato no navegador e, no envio, chame do seu servidor uma API de validação de e-mail. Aceite os endereços entregáveis, peça correção nos não entregáveis, recuse os temporários e aceite quando a resposta for inconclusiva ou a API falhar, para nunca travar um cliente de verdade.

Por que conferir só o formato não basta

A checagem de formato (o type="email" do HTML ou uma expressão regular) responde uma pergunta só: o texto parece um e-mail? Ela deixa passar:

O resultado aparece depois: confirmação de cadastro que nunca chega, cliente que não consegue recuperar a senha, base inflada e devolução nas campanhas.

O que a API responde

No Verify, a consulta de um endereço é uma chamada só:

curl https://gateway.autentify.com.br/v1/verify \
  -H "Authorization: Bearer $AUTENTIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

A resposta traz o estado do endereço, o motivo e as características conhecidas:

{
  "id": "vr_5f2c9a81d04e7b36a1c8e2f4",
  "email": "[email protected]",
  "domain": "empresa.com.br",
  "verified_at": "2026-10-03T14:02:11.482913Z",
  "state": "deliverable",
  "reason": "accepted_email",
  "attributes": { "free": false, "role": false }
}

O que fazer com cada resultado

state O que significa No cadastro
deliverable A caixa existe Aceite
undeliverable A caixa ou o domínio não existem Peça para conferir o endereço
risky com disposable E-mail temporário Peça outro endereço
risky com accept_all O domínio aceita qualquer endereço Aceite
unknown Não deu para concluir agora Aceite

Dois detalhes importam:

  • Domínio que aceita tudo não é motivo para recusar. É comum em empresas, e o endereço provavelmente é bom. Veja o que é um e-mail catch-all.
  • Decida pelo state. Motivos novos podem aparecer com o tempo; o seu código não deve quebrar com um reason que ele não conhece.

Exemplo no servidor

Em Python, com um tempo limite e sem travar o cadastro em caso de falha:

import os
import requests

def conferir_email(email: str) -> str:
    """Devolve 'aceitar', 'corrigir' ou 'temporario'."""
    try:
        resposta = requests.post(
            "https://gateway.autentify.com.br/v1/verify",
            headers={"Authorization": f"Bearer {os.environ['AUTENTIFY_API_KEY']}"},
            json={"email": email},
            timeout=10,
        )
    except requests.RequestException:
        return "aceitar"  # falha de rede: não trave o cadastro

    if resposta.status_code == 422:
        return "corrigir"  # não tem formato de e-mail
    if resposta.status_code != 200:
        return "aceitar"  # falha temporária: confira depois

    resultado = resposta.json()
    if resultado["state"] == "undeliverable":
        return "corrigir"
    if resultado.get("attributes", {}).get("disposable"):
        return "temporario"
    return "aceitar"

Cuidados na implementação

A chave fica no servidor

Nunca coloque a chave da API no JavaScript da página. O navegador envia o formulário ao seu servidor, e é ele que consulta a API.

Valide no envio, não a cada tecla

Uma consulta por cadastro, quando a pessoa envia o formulário ou sai do campo. Consultar a cada letra digitada gasta créditos e não melhora nada.

Mensagens que ajudam

"E-mail inválido" faz a pessoa desistir. Prefira:

  • "Não encontramos este endereço. Confira se digitou certo."
  • "Não aceitamos e-mail temporário. Use o seu e-mail pessoal ou da empresa."

Guarde o resultado

Grave o estado e a data da verificação junto com o cadastro. Serve para auditoria, para reprocessar os que ficaram sem resposta e para medir quantos cadastros ruins o formulário passou a barrar.

Não substitui a confirmação por e-mail

A validação diz que a caixa existe. A mensagem de confirmação prova que ela é de quem se cadastrou. As duas se completam: a validação evita que a confirmação seja enviada a um endereço que não existe.

E a base que já existe?

O formulário cuida de quem chega. Para os contatos que já estão na base, a verificação é feita em lote, por arquivo ou pela API. Veja como validar uma lista de e-mails em massa.

Para testar agora

A documentação da API tem todas as rotas, os campos e exemplos em curl, Python e JavaScript. Crie uma conta no Verify para gerar a sua chave: ela já vem com créditos grátis, sem cartão, e você paga só o que usar. Os valores estão na página de preços.

Perguntas frequentes

Como validar e-mail no formulário de cadastro?

Além de conferir o formato no navegador, envie o endereço do seu servidor para uma API de validação de e-mail. Ela responde se a caixa existe, se o domínio recebe e-mail e se o endereço é temporário. Com a resposta, você aceita o cadastro, pede correção ou recusa.

Validar com expressão regular não basta?

Não. A expressão regular só confere o formato. Um endereço como [email protected] ou [email protected] tem formato correto e não funciona. Só a consulta ao servidor de e-mail mostra se a caixa existe.

Posso chamar a API direto do navegador?

Não deve. A chave da API ficaria exposta no código da página. Faça a chamada do seu servidor e devolva ao navegador só o resultado.

O que fazer se a API demorar ou falhar?

Aceite o cadastro. A validação é uma melhoria, e uma falha temporária não pode impedir um cliente de se cadastrar. Defina um tempo limite, grave que aquele endereço não foi verificado e confira depois.