SMS de Verificação
Códigos OTP por SMS: a nossa API gera o código, envia para o seu cliente e confere por você.
- Início »
- SMS para Empresas »
- SMS de Verificação
Esta demonstração mostra o que o seu cliente vê e o que a nossa API responde a cada passo. Aqui nada é enviado: é só para ver o fluxo.
Enviamos um código por SMS para 84 *** 4567.
Clique em "Enviar código" para começar.
Para testar de verdade sem gastar créditos, use uma chave de Sandbox: a resposta traz o código.
O seu sistema não precisa gerar nem guardar códigos. Uma requisição envia o código, outra confere o que o cliente digitou.
Ao se cadastrar, fazer login ou pagar, o seu sistema faz POST /v1/sms/otp com o número.
A API cria um código aleatório e envia na hora por SMS, à frente da fila. Guarda só o hash.
O cliente lê o SMS e digita o código no seu site ou no seu aplicativo.
O seu sistema faz POST /v1/sms/otp/{id}/verify e recebe valid, o status e as tentativas que restam.
# 1. POST /v1/sms/otp
201 Created
{ "data": { "id": "otp_3f9a1c...", "status": "pending",
"to": "25884****567", "attempts_left": 5,
"expires_at": "2026-11-20T09:35:00+02:00" } }
# 2. POST /v1/sms/otp/otp_3f9a1c.../verify
200 OK
{ "data": { "status": "verified", "valid": true,
"attempts_left": 4 } }
Escolha o tamanho do código, quanto tempo ele vale e quantas tentativas o cliente tem. Se não escolher, usamos 6 dígitos, 5 minutos e 5 tentativas.
Tudo o que uma verificação por SMS precisa, já pronto: do código aleatório à conferência, com proteção contra quem tenta adivinhar ou abusar.
Duas requisições bastam. Todos os campos, menos o número, são opcionais.
number: o celular do cliente, de Moçambique e Angola, com ou sem o código do país.length: de 4 a 8 dígitos. Padrão: 6.expires_in: os minutos em que o código vale, de 1 a 60. Padrão: 5.max_attempts: as tentativas, de 1 a 10. Padrão: 5.text: o seu texto, com {code} uma vez e, se quiser, {minutes}.sender: um Sender ID aprovado. Sem ele, sai o NETMSG, grátis.Para desistir de um código, use POST /v1/sms/otp/{id}/cancel. Para ver o status, GET /v1/sms/otp/{id}.
curl https://api.mozout.com/v1/sms/otp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: signup-7f3a9c" \
-d '{"number": "+258841234567", "length": 6,
"expires_in": 5, "max_attempts": 5,
"text": "Your code is {code}. Valid for {minutes} min."}'curl https://api.mozout.com/v1/sms/otp/OTP_ID/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"code": "482913"}'<?php
function api_call(string $path, array $body): array {
$ch = curl_init('https://api.mozout.com' . $path);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($body),
]);
return json_decode(curl_exec($ch), true)['data'];
}
// 1. Send the code
$otp = api_call('/v1/sms/otp', ['number' => '+258841234567']);
$_SESSION['otp_id'] = $otp['id'];
// 2. Check the code the user typed
$check = api_call('/v1/sms/otp/' . $_SESSION['otp_id'] . '/verify',
['code' => $_POST['code']]);
if ($check['valid']) {
// phone number confirmed
}
Sempre que precisar ter certeza de que o número é mesmo do cliente. Todos estes exemplos cabem em um só SMS, mesmo com acentos.

Confirme pagamentos, saques e transferências antes de aprovar. Um código por operação, com validade curta.

Confirme o número de quem se cadastra e proteja o login com um segundo passo, sem aplicativos extras.

Confirme reservas, check-ins e a entrega de pedidos a quem pediu.
Com estes cuidados, o código chega rápido, cabe em um só SMS e é difícil de usar por quem não deve.
O SMS não recebe respostas: o cliente digita o código no seu site ou no seu aplicativo, e nunca responde à mensagem.
Cada código gasta os créditos do seu SMS, normalmente um, e a conferência não gasta nada. O preço cai com a quantidade de créditos que você compra de uma vez.
| Verificações por SMS | Preço por código | Total |
|---|---|---|
| 1.000 | R$ 0,0917 | R$ 91,67 |
| 5.000 | R$ 0,0825 | R$ 412,50 |
| 10.000 | R$ 0,0779 | R$ 779,17 |
| 50.000 | R$ 0,0642 | R$ 3.208,33 |
| 100.000 | R$ 0,0550 | R$ 5.500,00 |
| 250.000 | R$ 0,0504 | R$ 12.604,17 |
Com 1 SMS por código. Mínimo de 1.000 créditos por compra.
Artigos para escolher, configurar e tirar o máximo deste serviço
O SMS tem uma vantagem que nenhum outro canal tem por aqui: chega a toda a gente, sem depender de internet, de aplicação instalada ou de telemóvel moderno. E…
Ler o artigo
A resposta curta: se um pedido de Sender ID já pago for recusado, o valor que pagou volta automaticamente como saldo na sua conta do My MozOut. Não precisa…
Ler o artigo
A resposta curta: no My MozOut, abra a página SMS, vá a Remetentes e carregue em «Pedir um remetente com o meu nome». Escolha o nome (até 5 num…
Ler o artigo
As perguntas mais frequentes sobre os códigos OTP por SMS
É um código de uso único (One-Time Password) enviado por SMS para confirmar que o número é mesmo do cliente. É usado no cadastro, no login, no pagamento ou ao mudar dados importantes.
O SMS do código gasta créditos como qualquer outro SMS: um crédito por parte, a partir de R$ 0,0504. O texto padrão cabe em um só SMS. A conferência do código não gasta créditos.
Cada tentativa errada conta, e a resposta diz quantas restam. Ao chegar ao limite, que você escolhe de 1 a 10 (5 por padrão), o código falha e é preciso pedir outro.
Sim. Com uma chave de Sandbox, nenhum SMS sai e nada é cobrado, e a resposta do envio traz o próprio código, para testar a conferência no seu sistema.
Não. A nossa API gera o código, envia por SMS e confere. O seu sistema só guarda o id que recebe no envio e nos manda o código que o cliente digitou.
Por padrão, 5 minutos. Você pode escolher de 1 a 60 minutos no campo expires_in. Depois desse tempo, a conferência responde que o código expirou.
Cada conta pode pedir, no máximo, 5 códigos por número e por hora. Um código novo para o mesmo número anula o anterior. O código é guardado só como hash e a conferência é feita em tempo constante.
Sim. Informe o seu Sender ID no campo sender. Custa R$ 275,00 por nome e por país, e a análise leva até 48 horas úteis. Sem ele, o código sai com o NETMSG, grátis.