SMS de Verificação
Códigos OTP por SMS: a nossa API gera o código, envia-o ao seu cliente e confere-o por si.
- 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.
Enviámos um código por SMS para 923 *** 789.
Carregue em «Enviar código» para começar.
Para testar a sério sem gastar créditos, use uma chave de Sandbox: a resposta traz o código.
O seu sistema não precisa de gerar nem de guardar códigos. Um pedido envia o código, outro confere o que o cliente escreveu.
Ao criar conta, ao entrar ou ao pagar, o seu sistema faz POST /v1/sms/otp com o número.
A API cria um código aleatório e envia-o de imediato por SMS, à frente da fila. Guarda só o hash.
O cliente lê o SMS e escreve o código no seu site ou na sua aplicação.
O seu sistema faz POST /v1/sms/otp/{id}/verify e recebe valid, o estado e as tentativas que restam.
# 1. POST /v1/sms/otp
201 Created
{ "data": { "id": "otp_3f9a1c...", "status": "pending",
"to": "24492****789", "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 vale e quantas tentativas o cliente tem. Se não escolher, usamos 6 algarismos, 5 minutos e 5 tentativas.
Tudo o que uma verificação por SMS precisa, já pronto: do código aleatório à conferência, com protecção contra quem tenta adivinhar ou abusar.
Dois pedidos bastam. Todos os campos, menos o número, são opcionais.
number: o telemóvel do cliente, de Angola e Moçambique, com ou sem indicativo.length: de 4 a 8 algarismos. Por omissão, 6.expires_in: os minutos em que o código vale, de 1 a 60. Por omissão, 5.max_attempts: as tentativas, de 1 a 10. Por omissã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 estado, GET /v1/sms/otp/{id}.
curl https://api.interweb.ao/v1/sms/otp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: signup-7f3a9c" \
-d '{"number": "+244923456789", "length": 6,
"expires_in": 5, "max_attempts": 5,
"text": "Your code is {code}. Valid for {minutes} min."}'curl https://api.interweb.ao/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.interweb.ao' . $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' => '+244923456789']);
$_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 de ter a certeza de que o número é mesmo do cliente. Todos estes exemplos cabem num só SMS, mesmo com acentos.

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

Confirme o número de quem cria conta e proteja a entrada com um segundo passo, sem aplicações extra.

Confirme reservas, check-ins e a entrega de encomendas a quem as pediu.
Com estes cuidados, o código chega depressa, cabe num só SMS e é difícil de usar por quem não deve.
O SMS não recebe respostas: o cliente escreve o código no seu site ou na sua aplicação, 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 desce com a quantidade de créditos que compra de uma vez.
| Verificações por SMS | Preço por código | Total |
|---|---|---|
| 1.000 | 15,00 Kz | 15.000,00 Kz |
| 5.000 | 13,50 Kz | 67.500,00 Kz |
| 10.000 | 12,75 Kz | 127.500,00 Kz |
| 50.000 | 10,50 Kz | 525.000,00 Kz |
| 100.000 | 9,00 Kz | 900.000,00 Kz |
| 250.000 | 8,25 Kz | 2.062.500,00 Kz |
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: o Sender ID é um remetente com o nome da sua marca. Quem recebe o SMS vê esse nome, por exemplo PADARIA SOL, em vez de…
Ler o artigo
A resposta curta: no Meu Interweb, 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. Usa-se ao criar conta, ao entrar, ao pagar ou ao mudar dados importantes.
O SMS do código gasta créditos como qualquer outro SMS: um crédito por parte, desde 8,25 Kz. O texto por omissão cabe num 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 escolhe de 1 a 10 (5 por omissão), o código falha e é preciso pedir outro.
Sim. Com uma chave de Sandbox, nenhum SMS sai e nada se paga, 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-o por SMS e confere-o. O seu sistema só guarda o id que recebe no envio e manda-nos o código que o cliente escreveu.
Por omissão, 5 minutos. 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. Indique o seu Sender ID no campo sender. Custa 45.000,00 Kz 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.
Obtenha a Hospedagem Rápida e Segura da Interweb com um Domínio GRÁTIS!