ZAP-API
PreçosCasos de UsoBlogDocsLogin
Começar grátis
  1. Blog
  2. Autenticação 2FA e OTP por WhatsApp via API: mais barato e confiável que SMS
Tutorial

Autenticação 2FA e OTP por WhatsApp via API: mais barato e confiável que SMS

Como enviar códigos de verificação (OTP/2FA) por WhatsApp via API REST: fluxo completo, código de geração e validação, cuidados de segurança e por que verificar o número antes.

14 de junho de 2026·11 min de leitura·Equipe Editorial ZAP API

SMS para enviar código de verificação é caro, tem entrega instável e cai cada vez mais em filtros de operadora. O WhatsApp resolve os três: o usuário já tem o app, a entrega é quase instantânea e o custo por mensagem é uma fração do SMS. Este artigo mostra como implementar autenticação em dois fatores (2FA) e códigos OTP por WhatsApp usando uma API REST, com o fluxo completo e cuidados de segurança.

O fluxo OTP em 4 passos

  1. Usuário pede o código (login, cadastro ou confirmação de transação).
  2. Seu backend gera um código numérico, guarda um hash dele com expiração curta e envia pelo WhatsApp via API.
  3. Usuário digita o código.
  4. Seu backend compara o hash e libera (ou bloqueia após N tentativas).

Gerando e enviando o código

// 1. gere o código no backend (NUNCA no frontend)
const code = String(Math.floor(100000 + Math.random() * 900000)); // 6 dígitos
// guarde apenas o hash + expiração (ex.: Redis, TTL 300s)
await redis.set(`otp:${phone}`, sha256(code), "EX", 300);

// 2. envie pelo WhatsApp
await fetch(`https://api.zap-api.tech/v1/instances/${id}/send`, {
  method: "POST",
  headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    phone,
    type: "text",
    body: `Seu código de verificação é ${code}. Ele expira em 5 minutos. Não compartilhe com ninguém.`
  })
});

Validando

const stored = await redis.get(`otp:${phone}`);
if (!stored) return res.status(410).json({ error: "Código expirou" });
if (stored !== sha256(req.body.code)) {
  await redis.incr(`otp:fail:${phone}`); // trave após 5 falhas
  return res.status(401).json({ error: "Código inválido" });
}
await redis.del(`otp:${phone}`); // uso único
// libera o acesso
Segurança não negociável: código de 6 dígitos, expiração de 3-5 min, uso único, limite de tentativas (5) e de reenvios por janela. Guarde só o hash. E confirme o número antes de enviar com POST /v1/instances/{id}/contacts/check — assim você não dispara OTP para número que nem existe no WhatsApp.

Por que verificar o número antes

POST /v1/instances/{id}/contacts/check
{ "phone": "5511999998888" }
// retorna se o número existe no WhatsApp

Disparar OTP para números inexistentes desperdiça envio e suja sua reputação. O contacts/check filtra isso de graça.

Confiabilidade: confirme a entrega

Não confie só no HTTP 200 (que significa "aceito na fila"). Escute o webhook message.status para saber se o código foi entregue. Se não entregar em alguns segundos, ofereça um canal alternativo (SMS de fallback ou ligar).

Comece em minutos, sem aprovação da Meta

Crie uma instância, conecte o WhatsApp lendo um QR Code e faça o primeiro envio via API REST. Trial de 7 dias, sem cartão.

Criar conta grátis

Perguntas frequentes

Preciso de template aprovado pela Meta para OTP? Não nesta abordagem. A conta conecta por QR Code, sem aprovação de template — você envia o texto que quiser.

É seguro mandar OTP por WhatsApp? É tão seguro quanto SMS (ambos dependem do controle do aparelho), com a vantagem da criptografia ponta a ponta do WhatsApp. Mantenha expiração curta e uso único.

Qual o custo comparado ao SMS? Não há custo por mensagem aqui — você paga a assinatura da instância e envia o volume que precisar (respeitando o limite por minuto).

E se o usuário não tiver WhatsApp? Use o contacts/check para detectar e caia para um fallback (SMS/e-mail).

Experimente a ZAP API gratuitamente

7 dias de trial sem precisar de cartão. A partir de R$29/mês*.

Criar instância grátis
EE
Equipe Editorial ZAP APIRevisão técnica

Desenvolvedores e especialistas em integrações WhatsApp. Todo conteúdo passa por revisão técnica para garantir precisão e aplicabilidade.

Ver perfil completoDocumentaçãoTrial grátis

Leia também

Tutorial · 06 de jun. de 2026 · 8 min

Enviar mensagem WhatsApp via API em Node.js: exemplo funcional (2026)

Um fetch + JSON e sua mensagem chega no WhatsApp em menos de 10 minutos. Tutorial com exemplos de texto, imagem, áudio e webhook para receber respostas — sem instalar SDK.

Tutorial · 23 de fev. de 2026 · 7 min

Como enviar mensagem WhatsApp via API em Python

Guia prático para integrar WhatsApp ao seu projeto Python usando requests. Envie texto, imagens e documentos, receba mensagens com Flask e automatize alertas e notificações.

Tutorial · 22 de fev. de 2026 · 7 min

Como enviar mensagem WhatsApp via API em PHP

Integre WhatsApp ao seu projeto PHP, WordPress ou WooCommerce usando cURL puro — sem instalar bibliotecas. Tutorial com exemplos prontos para copiar e usar.

Tutorial · 06 de jun. de 2026 · 12 min

WhatsApp API para Atendimento Automático: guia completo 2026

Respostas fora do horário, triagem de leads por palavra-chave, fluxos condicionais e transferência para humano: como montar atendimento automático no WhatsApp em menos de 30 minutos.

Tópicos:Chatbots com IAE-commerceAPI WhatsApp

Explore também

Casos de usoWhatsApp API por segmentoComparativoZAP API vs alternativasPreçosPlanos e o que está inclusoGlossárioTermos técnicos de WhatsApp API
ZAP-API

API REST para WhatsApp com webhooks assinados, Meta Pixel/CAPI e compliance LGPD. Sem aprovação da Meta.

Status operacional🇧🇷 Feito no Brasil

Produto

  • Preços
  • Casos de uso
  • Comparativo
  • Trial grátis
  • Dashboard

Recursos

  • Documentação
  • Blog
  • Glossário
  • RSS Feed

Empresa

  • Sobre
  • Imprensa
  • Termos de uso
  • Privacidade
  • Criar conta
  • Login

Contato

  • [email protected]
  • [email protected]
  • Resposta em até 24h úteis
© 2026 ZAP-API — Todos os direitos reservados·CNPJ 42.130.949/0001-56·Termos·Privacidade

Desenvolvido por PreviusIA