OTP via WhatsApp oficial: código de confirmação por API
Precisa confirmar o número do usuário no seu sistema? Envie um código de confirmação (OTP) pelo WhatsApp oficial com duas chamadas HTTP: uma para enviar o código e outra para verificar. Autenticação por Bearer API Secret, sem SDK, funciona com qualquer linguagem.
Resumo
- O que é: API para enviar e verificar código OTP (senha de uso único) pelo WhatsApp oficial.
- Como integrar: 2 chamadas HTTP —
POST /api/otp/sendePOST /api/otp/verify, autenticadas porBearer API Secret. - Preço: R$ 0,03 por OTP enviado; a verificação é gratuita.
- Validade: o código expira em 10 minutos e é de uso único.
- Requisitos: qualquer linguagem, sem SDK. WhatsApp Business Platform oficial.
Por que OTP no WhatsApp oficial
O OTP (One-Time Password) é o código de uso único que confirma que o usuário realmente controla aquele número — usado em cadastro, login, recuperação de conta e confirmação de operações sensíveis.
Enviando pelo WhatsApp oficial (WhatsApp Business Platform, a partir de um número verificado) você tem melhor entregabilidade que SMS, menor custo e mais confiança para o usuário — sem automação não oficial que corre risco de bloqueio.
WhatsApp vs SMS vs E-mail para OTP
O canal de envio muda o custo, a entrega e a taxa de conversão do seu fluxo de verificação. Comparativo dos três canais mais usados:
| Critério | WhatsApp oficial | SMS | |
|---|---|---|---|
| Entregabilidade | Alta | Média | Baixa (spam/promoções) |
| Taxa de leitura | ~98% | ~90% | ~20% |
| Custo por envio | R$ 0,03 | R$ 0,08–0,15 | Baixo, mas cai em spam |
| Confiança do usuário | Alta (número verificado) | Média | Baixa |
| Copiar código | Botão “Copiar código” | Manual | Manual |
Valores de custo de SMS são estimativas de mercado; o preço do WhatsApp oficial aqui é o praticado pela entrar.api.br (R$ 0,03 por OTP enviado).
Como funciona
A integração são dois endpoints, autenticados com o header Authorization: Bearer SEU_API_SECRET:
- Enviar —
POST /api/otp/sendgera o código e o envia pelo WhatsApp, devolvendo umotpId. - Verificar —
POST /api/otp/verifyconfere ootpIdcom o código digitado pelo usuário.
1. Enviar o OTP
Envie o telefone do usuário no formato internacional (E.164). A resposta traz o otpId que você guarda para verificar depois.
A resposta confirma na hora se o envio foi aceito. Você não precisa de webhook nem de polling: a confirmação de que a mensagem chegou é o próprio verify — se o usuário digita o código certo, é porque recebeu.
curl -X POST https://cpf.entrar.api.br/api/otp/send \
-H "Authorization: Bearer SEU_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"telefone":"+5511999999999"}'
# → { "ok": true, "otpId": "...", "status": "pending" }Como o usuário recebe no WhatsApp

2. Verificar o OTP
Envie o otpId e o codigo que o usuário digitou. Se conferir, a resposta traz verified: true.
curl -X POST https://cpf.entrar.api.br/api/otp/verify \
-H "Authorization: Bearer SEU_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"otpId":"...","codigo":"123456"}'
# → { "ok": true, "verified": true }Exemplos em Node.js, PHP e Python
O mesmo fluxo de envio (/api/otp/send) nas linguagens mais usadas. A verificação segue o mesmo padrão, trocando a URL e o corpo.
Node.js (fetch)
const res = await fetch("https://cpf.entrar.api.br/api/otp/send", {
method: "POST",
headers: {
"Authorization": "Bearer SEU_API_SECRET",
"Content-Type": "application/json",
},
body: JSON.stringify({ telefone: "+5511999999999" }),
});
const data = await res.json(); // { ok: true, otpId: "...", status: "pending" }PHP (cURL)
$ch = curl_init("https://cpf.entrar.api.br/api/otp/send");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer SEU_API_SECRET",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(["telefone" => "+5511999999999"]),
]);
$data = json_decode(curl_exec($ch), true); // ["ok" => true, "otpId" => "..."]Python (requests)
import requests
res = requests.post(
"https://cpf.entrar.api.br/api/otp/send",
headers={"Authorization": "Bearer SEU_API_SECRET"},
json={"telefone": "+5511999999999"},
)
data = res.json() # { "ok": True, "otpId": "...", "status": "pending" }Autenticação
Toda requisição precisa do header Authorization: Bearer SEU_API_SECRET. Você gera, revela e rotaciona o API Secret no painel, dentro do seu app. Mantenha o segredo apenas no back-end — nunca exponha em código de front-end.
Preço
R$ 0,03 por OTP enviado (chamada ao /api/otp/send). A verificação (/api/otp/verify) é gratuita — você paga apenas pelo envio. Créditos por PIX, sem mensalidade.
Segurança e boas práticas
- Códigos de uso único, que expiram em 10 minutos.
- Limite tentativas de verificação por
otpIdpara evitar força bruta. - Aplique rate-limit no seu lado para não reenviar OTP em excesso ao mesmo número.
- Guarde o API Secret só no servidor.
Confiabilidade e suporte
99,9%
Disponibilidade-alvo da API. Ver status ao vivo
24/7
Suporte por WhatsApp e e-mail, todos os dias.
- Infraestrutura na AWS e no Google Cloud, com servidores no Brasil.
- Suporte direto: WhatsApp (66) 99685-2025 ou contato@entrar.api.br.
Quem já usa a entrar.api.br
Empresas e instituições que usam a entrar.api.br em produção — de cadastro de vestibular a plataformas com alto volume de envios diários:
Perguntas frequentes
Quanto custa enviar um OTP pelo WhatsApp?
R$ 0,03 por OTP enviado (chamada ao endpoint /api/otp/send). A verificação (/api/otp/verify) é gratuita — você só paga pelo envio do código.
É o WhatsApp oficial?
Sim. Os códigos são enviados pela API oficial do WhatsApp (WhatsApp Business Platform), a partir de um número verificado. Não é automação de WhatsApp Web nem envio não oficial, o que garante melhor entregabilidade e evita bloqueios.
Como funciona a autenticação da API?
Toda requisição usa o header Authorization: Bearer SEU_API_SECRET. Você gera e gerencia o API Secret no painel, na seção de apps, onde também pode revelar e rotacionar o segredo.
Em quanto tempo o código expira?
O código OTP expira em 10 minutos e é de uso único. Após expirar ou ser verificado com sucesso, ele deixa de ser válido — basta chamar /api/otp/send novamente para gerar um novo.
Funciona com qualquer linguagem?
Sim. A integração é uma API HTTP REST com JSON, então funciona com qualquer stack (PHP, Node, Python, Java, .NET, Go, etc.) sem SDK específico. Basta fazer dois POST: um para enviar e outro para verificar.
WhatsApp ou SMS para OTP: qual é melhor?
Para a maioria dos casos no Brasil, o WhatsApp oficial supera o SMS: entregabilidade mais alta, taxa de leitura em torno de 98%, botão de copiar código e custo menor (R$ 0,03 por envio contra R$ 0,08 a R$ 0,15 do SMS). O SMS ainda é útil como fallback para quem não usa WhatsApp.
O envio de OTP por WhatsApp é seguro e compatível com a LGPD?
Sim. O código é de uso único, expira em 10 minutos e trafega por conexão criptografada do WhatsApp Business Platform. Você envia apenas o telefone do usuário para gerar o código, sem expor outros dados pessoais. Recomenda-se limitar tentativas de verificação e aplicar rate-limit no reenvio.
Aparece o nome do meu app na mensagem?
Sim. O remetente e o texto da mensagem exibem o nome do seu app, cadastrado no painel. No exemplo onde aparece 'SEU APP', o usuário final verá o nome real do seu aplicativo.
Posso reenviar o código se o usuário não receber?
Sim. Basta chamar /api/otp/send novamente para gerar e enviar um novo código. Cada envio custa R$ 0,03. Recomenda-se aplicar um intervalo mínimo entre reenvios para evitar abuso.
Preciso de webhook para saber se o OTP chegou?
Não. Para OTP, a própria verificação já é a confirmação de entrega: se o usuário digita o código correto em /api/otp/verify, é porque a mensagem chegou. A resposta de /api/otp/send confirma na hora se o envio foi aceito; a entrega no aparelho é assíncrona (como em qualquer canal). Ou seja, você não precisa de webhook nem de polling — o fluxo enviar → verificar → reenviar se necessário cobre o caso de uso.
Comece a enviar OTP por WhatsApp oficial no seu sistema.
Criar conta e obter API Secret