208 aplicativos154 países

API v12026-11-04

Uma API JSON para solicitar números de verificação e ler códigos SMS.

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

HTTPSignificado
400Campo ausente ou inválido (missing_filter, bad_json).
401Sem chave ou chave incorreta (no_key, bad_key).
402Saldo insuficiente (no_balance).
404Serviço, país, pedido ou endpoint desconhecido.
409O pedido não pode fazer isso agora (has_code, not_ready, too_many_open, no_numbers).
429Mais 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

  • waiting O número está aberto e nenhum código chegou ainda.
  • received Pelo menos um código chegou; peça outro com resend enquanto a janela estiver aberta.
  • finished Fechado após um código, por você ou ao final da janela.
  • refunded A janela terminou sem um código; o valor total foi devolvido ao seu saldo.
  • canceled Você 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"}}
API de Verificação por SMS: REST JSON para Números do WhatsApp, Telegram e Google | SNSVerify