API para desenvolvedores

Automatize verificações em escala

A API da SNSPhone permite que suas próprias ferramentas solicitem números não-VoIP dos EUA, leiam códigos SMS e gerenciem aluguéis. Dois formatos: uma API REST com JSON e o formato comum de ativação por SMS para scripts existentes.

Início rápido

URL base https://snsphone.com/api/v1. Crie uma chave na página de API do console e envie como Authorization: Bearer spk_... (ou um campo key). Todos os números são não-VoIP dos EUA. Valores em USD com 2 decimais, horários no formato ISO 8601 UTC, 300 requisições por minuto por chave. Preços válidos em 2026-11-03.

Python

import os, time, requests

API = "https://snsphone.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSPHONE_KEY']}"}

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US 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://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US 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);

Catálogo

GET/services

Código de cada serviço com nome, categoria, preço de verificação e períodos de aluguel. Não requer chave.

Público, sem chave necessária.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Preços em USD, opcionalmente para um serviço. Não requer chave.

Público, sem chave necessária.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

Seu saldo em USD.

Requer sua chave de API.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Verificações

POST/orders

Compra uma verificação (201). Retorna o número dos EUA e o horário em que a janela de 20 minutos termina.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Uma verificação com seu status e todos os códigos recebidos. Status: waiting, received, finished, refunded, canceled.

Requer sua chave de API.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Suas verificações em aberto (status=all para as últimas 100).

Requer sua chave de API.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

Solicita outro código no mesmo número, após o primeiro código e enquanto a janela estiver aberta. Sem custo adicional.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Fecha uma verificação que recebeu seu código.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

Cancela antes de um código chegar. O valor total volta para seu saldo.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Aluguéis

POST/rentals

Aluga um número dos EUA para um serviço e período (201). days é opcional quando o serviço tem um período definido.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Seus aluguéis ativos com as últimas mensagens (status=all para os últimos 100).

Requer sua chave de API.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Um aluguel com todas as mensagens SMS recebidas nele.

Requer sua chave de API.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Adiciona mais um período pelo mesmo preço.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Cancela nos primeiros 20 minutos enquanto nenhum SMS chegou. Tudo pago volta para seu saldo.

Requer sua chave de API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Formato de ativação por SMS

Para ferramentas que já usam o formato comum de ativação. Uma URL, um campo action, respostas em texto simples. Apenas verificações.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
AçãoCampos extrasRespostaSignificado
getBalancenenhumACCESS_BALANCE:12.50Seu saldo em USD.
getServicesListnenhum{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Códigos de serviços com preço de verificação (JSON).
getCountriesnenhum{"us":{"name":"United States","dial":"1"}}Apenas Estados Unidos. country pode ser us, 187 ou omitido.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Preços em USD. O filtro de serviço é opcional.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Compra uma verificação. Retorna o id e o número com o 1 na frente.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<último código> (outro código solicitado), STATUS_CANCEL (cancelado ou reembolsado).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 pronto (ACCESS_READY), 3 outro código (ACCESS_RETRY_GET), 6 finalizar (ACCESS_ACTIVATION), 8 cancelar com reembolso total enquanto nenhum código chegou (ACCESS_CANCEL).

Erros

Erros REST vêm como {"error":{"code","message"}} com esses códigos de status. O formato de ativação responde com uma palavra simples.

400Campo ausente ou inválido (bad_json, bad_period).
401Chave ausente ou incorreta (no_key, bad_key).
402Saldo insuficiente (no_balance).
404Serviço, pedido, aluguel ou endpoint desconhecido, ou produto não disponível (not_sold).
409Não é possível agora (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Mais de 300 solicitações por minuto (rate_limited).
BAD_KEYChave API ausente ou incorreta.
BAD_ACTIONAção desconhecida.
BAD_SERVICECódigo de serviço desconhecido.
BAD_COUNTRYNão é dos Estados Unidos ou o serviço é vendido apenas como aluguel.
NO_BALANCESaldo insuficiente.
NO_NUMBERSNenhum número disponível no momento. Tente novamente em breve.
NO_ACTIVATIONID desconhecido ou não pertence a você.
EARLY_CANCEL_DENIEDUm código já chegou, portanto não pode ser cancelado.
NO_ACTIVATIONSJá existem 20 verificações abertas.
TOO_MANY_REQUESTSMais de 300 solicitações por minuto.

Dúvidas sobre a API

Chaves, limites e polling, respondidos.

O SNSPhone tem uma API de verificação por SMS?

Sim. Uma API REST com JSON em /api/v1 para serviços, preços, verificações e aluguéis, e o formato comum de ativação por SMS em /stubs/handler_api.php.

Como faço para autenticar solicitações na API?

Crie uma chave na página de API do console e envie como Authorization: Bearer spk_..., ou como um campo key. As chaves são armazenadas apenas como hash e mostradas uma vez.

Quais são os limites de taxa da API?

300 solicitações por minuto por chave, até 20 verificações abertas e 20 aluguéis ativos por conta.

Os pedidos pela API custam mais do que pelo site?

Não. A API usa os mesmos preços e as mesmas regras de reembolso que o console.

Como sei quando o código chegou?

Consulte GET /orders/{id} a cada alguns segundos. O status muda de waiting para received e o campo code contém os dígitos.

API de Verificação por SMS não-VoIP: Números dos EUA via REST | SNSPhone