URL base https://snsverify.com/api/v1
Cada caminho nesta página é relativo a ela. Os valores estão em dólares americanos como strings com duas casas decimais, os horários são UTC (ISO 8601).
Dois formatos, uma conta
Esta página descreve a API REST com JSON. Se sua ferramenta já utiliza o formato comum de ativação por SMS (handler_api.php com parâmetros action=), use a API de ativação por SMS. Ambas compartilham sua chave API, preços, ativações abertas e reembolsos.
Visão geral
Uma API de verificação por SMS permite que seu software compre um número de telefone para um aplicativo, aguarde o SMS de verificação e leia o código, sem abrir o site. Cada pedido é uma ativação: um serviço, um país, um número e uma janela de 20 minutos. Pedidos sem código são reembolsados integralmente ao final da janela.
As requisições usam GET para leitura e POST para ações. Os corpos de POST podem ser campos de formulário ou JSON. Respostas bem-sucedidas são objetos JSON; os erros têm o mesmo formato em todos os lugares: {"error":{"code":"...","message":"..."}}.
Autenticação
Crie uma chave API no console em Chave API. Ela é exibida uma vez; mantemos apenas uma cópia embaralhada. Envie-a no cabeçalho Authorization como um token bearer. Um parâmetro key também é aceito para ferramentas que não podem definir cabeçalhos.
Authorization: Bearer vfk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Criar uma nova chave substitui a antiga imediatamente. Os endpoints de serviços, países e preços funcionam sem uma chave.
Erros
| HTTP | Significado |
|---|---|
| 400 | Campo ausente ou inválido (missing_filter, bad_json). |
| 401 | Sem chave ou chave incorreta (no_key, bad_key). |
| 402 | Saldo insuficiente (no_balance). |
| 404 | Serviço, país, pedido ou endpoint desconhecido. |
| 409 | O pedido não pode fazer isso agora (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Mais de 300 requisições em um minuto (rate_limited). |
Início rápido
Peça um número do WhatsApp do Reino Unido com curl, então consulte o pedido a cada poucos segundos até que o código chegue.
curl -X POST https://snsverify.com/api/v1/orders \ -H "Authorization: Bearer $SNSVERIFY_KEY" \ -d service=whatsapp -d country=gb
Python
import os, time, requests
API = "https://snsverify.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSVERIFY_KEY']}"}
order = requests.post(f"{API}/orders", headers=H,
data={"service": "whatsapp", "country": "gb"}).json()["order"]
print("Use this number:", order["phone"])
while True:
o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
if o["code"] or o["status"] in ("refunded", "canceled"):
break
time.sleep(4)
print("Code:", o["code"])Node.js
const API = "https://snsverify.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSVERIFY_KEY}` };
const { order } = await fetch(`${API}/orders`, {
method: "POST", headers: H,
body: new URLSearchParams({ service: "telegram", country: "nl" }),
}).then((r) => r.json());
console.log("Use this number:", order.phone);
let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
await new Promise((r) => setTimeout(r, 4000));
({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);Limites de taxa
300 requisições por minuto por chave e até 20 pedidos abertos por conta. Consultar um pedido a cada 3 a 5 segundos é suficiente: a maioria dos códigos chega em um minuto.
Status do pedido
waitingO número está aberto e nenhum código chegou ainda.receivedPelo menos um código chegou; peça outro com resend enquanto a janela estiver aberta.finishedFechado após um código, por você ou ao final da janela.refundedA janela terminou sem um código; o valor total foi devolvido ao seu saldo.canceledVocê cancelou antes de um código; o valor total foi devolvido ao seu saldo.
Endpoints
GET/services
Cada código de serviço com seu nome, categoria e menor preço. Nenhuma chave necessária.
{"services":[{"code":"whatsapp","name":"WhatsApp","category":"social","from":"0.31"}]}GET/countries
Cada código de país (ISO, minúsculo) com nome e código de discagem. Nenhuma chave necessária.
{"countries":[{"code":"gb","name":"United Kingdom","dial_code":"44"}]}GET/prices?service=whatsapp&country=gb
Preços em USD. Filtre por serviço, país ou ambos. Nenhuma chave necessária.
{"prices":[{"service":"whatsapp","country":"gb","price":"0.94"}]}GET/balance
Seu saldo em USD.
{"balance":"25.00","currency":"USD"}POST/orders
Compra um número (HTTP 201). Retorna o pedido com o número de telefone e o horário em que a janela termina.
Corpo: service=whatsapp&country=gb
{"order":{"id":"AC-7K2M9QX4PB","service":"whatsapp","country":"gb","phone":"+447700900123","price":"0.94","status":"waiting","code":null,"expires_at":"2026-11-04T12:20:00.000Z"},"window_minutes":20}GET/orders/AC-7K2M9QX4PB
Um pedido com seu status e cada código recebido. Status: waiting, received, finished, refunded, canceled.
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482915","sms":"Your WhatsApp code: 482-915"}}GET/orders?status=open
Seus pedidos abertos; status=all retorna os últimos 100.
{"orders":[{"id":"AC-7K2M9QX4PB","status":"waiting"}]}POST/orders/AC-7K2M9QX4PB/resend
Solicita outro código no mesmo número após o primeiro código, enquanto a janela estiver aberta. Sem custo adicional.
{"order":{"status":"received","waiting_for_resend":true}}POST/orders/AC-7K2M9QX4PB/finish
Fecha um pedido que recebeu seu código.
{"order":{"status":"finished"}}POST/orders/AC-7K2M9QX4PB/cancel
Cancela antes que um código chegue. O valor total é devolvido ao seu saldo.
{"order":{"status":"canceled","refunded":"0.94"}}