Comece aqui
Documentação da aut2fa
Envie um código de uso único, acompanhe a entrega e valide o código informado pela pessoa. A integração acontece no seu servidor, pela API HTTP v1.
Nesta página
Um envio, três operações
- Enviar o código
POST /v1/sendReceba o ID do envio e o prazo de validade. A resposta 202 confirma que o pedido foi aceito.
- Acompanhar a entrega
GET /v1/send/{id}/statusConsulte o estado da mensagem e os timestamps disponíveis.
- Verificar o código
POST /v1/send/{id}/verifyConclua a autenticação somente quando a resposta tiver
valid: true.
Faça um envio de teste
Crie uma aplicação no painel da aut2fa em modo test e guarde a chave em uma variável de ambiente no servidor. O modo de teste usa 000000 quando você omite o código.
curl https://api.aut2fa.com/v1/send \
-H "Authorization: Bearer $AUT2FA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+5531999999999","locale":"pt-BR"}'// Execute no servidor (Node.js 22+).
const idempotencyKey = crypto.randomUUID();
const body = JSON.stringify({ to: "+5531999999999", locale: "pt-BR" });
// Guarde idempotencyKey e body antes de chamar; reutilize-os ao retentar.
const response = await fetch("https://api.aut2fa.com/v1/send", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AUT2FA_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body,
signal: AbortSignal.timeout(15000),
});
const result = await response.json();
if (!response.ok) throw new Error(result.code);
// Guarde result.id na sessão de autenticação do seu servidor.import json
import os
import urllib.request
import uuid
idempotency_key = str(uuid.uuid4())
body = json.dumps({"to": "+5531999999999", "locale": "pt-BR"}).encode("utf-8")
# Guarde idempotency_key e body antes de chamar; reutilize-os ao retentar.
request = urllib.request.Request(
"https://api.aut2fa.com/v1/send",
data=body,
headers={
"Authorization": "Bearer " + os.environ["AUT2FA_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": idempotency_key,
},
method="POST",
)
with urllib.request.urlopen(request, timeout=15) as response:
result = json.load(response)
# Guarde result["id"] na sessão de autenticação do servidor.<?php
$idempotencyKey = bin2hex(random_bytes(16));
$requestBody = json_encode([
'to' => '+5531999999999', 'locale' => 'pt-BR',
], JSON_THROW_ON_ERROR);
// Guarde a chave e $requestBody antes de chamar; reutilize-os ao retentar.
$request = curl_init('https://api.aut2fa.com/v1/send');
curl_setopt_array($request, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('AUT2FA_API_KEY'),
'Content-Type: application/json',
'Idempotency-Key: ' . $idempotencyKey,
],
CURLOPT_POSTFIELDS => $requestBody,
]);
$body = curl_exec($request);
if ($body === false) throw new RuntimeException(curl_error($request));
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
curl_close($request);
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if ($status !== 202) throw new RuntimeException($result['code'] ?? 'http_error');
// Guarde $result['id'] na sessão de autenticação do servidor.Os exemplos nativos geram uma chave única por pedido. Guarde a chave e o corpo antes da chamada para reutilizá-los nas retentativas. O cURL mínimo não usa idempotência; veja como habilitá-la antes de retentar.
O início rápido mostra como guardar o ID e verificar esse envio.
Disponibilidade atual
| Recurso | Comportamento atual |
|---|---|
| Entrega real para telefones válidos no modo live. | |
| Modo test | Simula os estados de entrega sem enviar mensagem nem consumir créditos. |
O envio público retorna channel_unavailable. | |
| SMS e Telegram | Ainda não estão disponíveis no fluxo público de OTP. |
O cliente informa o destinatário; a plataforma escolhe o canal e o remetente. Veja como acompanhar a entrega.