aut2fa

API de código de verificação por WhatsApp

A aut2fa é uma API que envia códigos de verificação (OTP, 2FA) por WhatsApp. Seu backend manda o telefone para POST /v1/send; a aut2fa gera um código de 6 dígitos, entrega por um dos números de WhatsApp dela e mostra quando foi enviado, entregue e lido. Você paga o preço do WhatsApp por código só quando o código é entregue.

Atualizado em

Ficha técnica

Endpoint
POST https://api.aut2fa.com/v1/send com o cabeçalho Authorization: Bearer ak_live_….
Código
6 dígitos, gerado pela aut2fa. Para usar o seu, mande no campo code.
Validade
O código expira 10 minutos depois que o envio é criado.
Verificação
POST /v1/send/{id}/verify com o código que o usuário digitou. Depois de 5 tentativas erradas o envio é bloqueado.
Status de entrega
queued, sending, sent, delivered, read ou failed, cada um com horário, em GET /v1/send/{id}/status.
Idioma da mensagem
Inglês ou português do Brasil, escolhido em locale: en ou pt-BR.
Preço
O preço do WhatsApp por código, cobrado só quando o código é entregue. O preço atual está na página de preços.
Modo de teste
Chaves que começam com ak_test_ são grátis, e o código que a aut2fa gera num envio de teste é sempre 000000.
Retentativas
Repita a requisição com o mesmo cabeçalho Idempotency-Key e você recebe o envio original, não um segundo código.
Limites contra abuso
Toda conta tem um teto de envios por minuto, e cada aplicação pode somar limites por minuto e por telefone por hora. Requisição acima do limite recebe HTTP 429 com Retry-After, antes de qualquer envio.
Guarda do código
O código fica criptografado até a mensagem sair; depois disso só resta um hash.

Como o código chega pelo WhatsApp

  1. Seu backend chama POST /v1/send com o telefone do usuário no formato internacional, como +5531999999999. A aut2fa responde 202 com o id do envio.

  2. A aut2fa escolhe um dos números de WhatsApp dela e manda a mensagem com o código. Se o número falha, ela tenta outro, até 3 tentativas.

  3. Cada mudança de status fica gravada com o horário. Consulte em GET /v1/send/{id}/status ou no extrato do painel.

  4. Quando o usuário digita o código, seu backend chama POST /v1/send/{id}/verify. A resposta diz se o código é valid e quantas tentativas restam em attempts_left.

Enviar e verificar com cURL

Duas requisições: uma envia o código, a outra confere o que o usuário digitou.

curl https://api.aut2fa.com/v1/send \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"to": "+5531999999999"}'

# O usuário digitou 482913
curl https://api.aut2fa.com/v1/send/snd_8Kq2wR7tXz/verify \
  -H "Authorization: Bearer ak_live_…" \
  -H "Content-Type: application/json" \
  -d '{"code": "482913"}'

Resposta do envio

POST /v1/send responde 202 Accepted. channel e from ficam null até a aut2fa rotear o envio.

{
  "id": "snd_8Kq2wR7tXz",
  "status": "queued",
  "verification": "pending",
  "mode": "live",
  "channel": null,
  "from": null,
  "expires_at": "2026-10-11T18:10:00Z",
  "created_at": "2026-10-11T18:00:00Z",
  "sent_at": null,
  "delivered_at": null,
  "read_at": null,
  "verified_at": null,
  "failed_at": null,
  "failure_reason": null
}

O que a aut2fa não faz

  • Deixar você escolher o canal ou o número remetente. A aut2fa escolhe os dois, e o status do envio mostra qual usou.
  • Cobrar depois. O saldo é pré-pago; não há assinatura nem fatura pós-paga.
  • Cobrar em outra moeda. Saldo e preços são em reais (BRL).

Perguntas sobre OTP por WhatsApp

E se o telefone não tiver WhatsApp?

A aut2fa não consegue entregar o código, então o envio termina como failed e não custa nada.

Por quanto tempo o código vale?

10 minutos a partir da criação do envio. Depois disso, /verify responde com verification igual a expired.

O que acontece depois de 5 códigos errados?

O envio é bloqueado: verification vira locked e nenhum código é mais aceito. Crie um envio novo para tentar de novo.

Posso enviar meu próprio código?

Sim. Coloque no campo code de POST /v1/send; sem ele, a aut2fa gera um código de 6 dígitos.

Dá para testar de graça?

Sim. Chaves que começam com ak_test_ são grátis e o código que a aut2fa gera num envio de teste é sempre 000000, então os testes automatizados rodam o fluxo inteiro sem mexer no saldo.