Pular para o conteúdo principal
100+
Países
Mais de 1000 serviços. Pague com cripto, sem KYC.
Comprar Número

API de Verificação SMS — SMSBurner

Automatize a verificação OTP em escala. Adquira números de telefone virtuais em 190+ países, receba códigos SMS em segundos, alugue números dedicados de longo prazo e gerencie todos os pedidos por um único endpoint REST — sem chave de API, sem KYC, cobrado em criptomoeda.

Tempo de leitura: 5 min REST · JSON · OpenAPI 3.0 Especificação OpenAPI →

Autenticação necessária. Todas as solicitações de API usam autenticação de sessão baseada em cookies. Você deve estar conectado à sua conta SMSBurner para usar a API. Faça login pela interface web ou use o endpoint de autenticação para estabelecer uma sessão.

Por que desenvolvedores escolhem a API SMSBurner

O SMSBurner é a API de verificação SMS mais flexível para desenvolvedores que precisam de anonimato, cobertura global e preços previsíveis. Ao contrário de provedores legados de SMS-OTP que condicionam o acesso a contratos corporativos, mínimos mensais e questionários KYC, o SMSBurner funciona com qualquer cliente HTTPS, cobra estritamente por número e aceita 8 criptomoedas, incluindo Bitcoin, Monero, Ethereum, USDT, Solana, Litecoin e TRON.

Casos de uso típicos incluem automatizar cadastros de contas para QA em escala, recuperar senhas de uso único para agentes headless e bots de CI, validar fluxos que exigem telefone em integração contínua, alugar números dedicados de longo prazo para contas do Telegram ou WhatsApp que precisam de recepção SMS ininterrupta, e alimentar verificação geodistribuída em 190+ países com controle explícito de nível de operadora — virtual, físico ou premium.

Autenticação

A API usa autenticação de sessão baseada em cookies. Para autenticar programaticamente:

  1. Envie uma requisição POST para /auth-api.php com sua frase seed
  2. Armazene o cookie de sessão da resposta
  3. Inclua o cookie em todas as requisições API subsequentes
POST /auth-api.php

Autentique-se com sua frase seed e estabeleça uma sessão.

ParâmetroTipoObrigatórioDescrição
actionstringobrigatórioDeve ser "login"
seedstringobrigatórioSua seed de acesso de 16 caracteres (ex. AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsburner.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsburner.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsburner.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Resposta de sucesso
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Resposta de erro
{ "success": false, "error": "Invalid seed." }

URL Base

Todos os endpoints da API são relativos a:

https://smsburner.com/api.php?action={action}

Todas as respostas são em JSON. Os endpoints POST aceitam corpos de requisição application/json e application/x-www-form-urlencoded.

Limites de requisições

A API aplica os seguintes limites de taxa:

EndpointLimiteJanela
Autenticação5 tentativas15 minutos
Todos os outros endpointsSem limite rígido

Limite de taxa: A autenticação é limitada a 5 tentativas por 15 minutos. Outros endpoints não são atualmente limitados, mas o uso excessivo pode ser restringido. Use intervalos de requisição razoáveis.

Tratamento de erros

Todos os erros retornam um objeto JSON com um campo <code>error</code>:

{ "error": "Description of what went wrong" }
Código HTTPSignificado
200Sucesso (verifique o corpo da resposta para erros de nível de aplicação)
403Token CSRF inválido
405Método HTTP incorreto (ex. GET em um endpoint somente POST)
429Limite de taxa excedido

Erros comuns a nível de aplicação:

ErroCausa
"Login required"Sessão expirada ou não autenticado
"Insufficient balance"Fundos insuficientes — inclui os campos need e have
"Service not available for this country"Sem estoque ou serviço inativo para o país selecionado
"Missing country or service"Os parâmetros obrigatórios não foram fornecidos

Listar Países

GET /api.php?action=countries

Retorna todos os países ativos com números virtuais disponíveis. Nenhuma autenticação necessária.

cURL
Python
JavaScript
curl https://smsburner.com/api.php?action=countries
resp = session.get("https://smsburner.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsburner.com/api.php?action=countries"); const countries = await resp.json();
Resposta
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Listar Serviços

GET /api.php?action=services&country={code}

Retorna os serviços disponíveis para um país específico, incluindo preços e estoque. Sem código de país, retorna todos os serviços sem preços.

ParâmetroTipoObrigatórioDescrição
countrystringopcionalCódigo de país ISO 3166-1 alpha-2 (ex. us, gb, de)
Resposta (com país)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Listar Operadoras

GET /api.php?action=operators&country={code}

Retorna as operadoras disponíveis para um país específico. Cada operadora tem um tipo e um multiplicador de preço aplicado ao preço base do serviço.

ParâmetroTipoObrigatórioDescrição
countrystringobrigatórioCódigo de país ISO 3166-1 alpha-2
Resposta
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Tipos de operadoras: virtual — números VoIP, mais baratos, podem ser bloqueados por alguns serviços. physical — cartões SIM reais, maior taxa de sucesso. premium — entrega mais rápida (~10s), maior taxa de sucesso.

Comprar número (Ativação SMS)

POST /api.php?action=buy

Compre um número virtual para verificação SMS única. O número fica ativo por 20 minutos. Se nenhum SMS for recebido, seu saldo é reembolsado automaticamente.

ParâmetroTipoObrigatórioDescrição
countrystringobrigatórioCódigo do país (ex. us)
service_idintegerobrigatórioID do serviço de Lista de Serviços
operator_idintegeropcionalID da operadora de Lista de Operadoras. Omita para a operadora padrão.
cURL
Python
JavaScript
curl -X POST https://smsburner.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsburner.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsburner.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Resposta de sucesso
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Erro: Saldo insuficiente
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Listar pedidos

GET /api.php?action=orders

Retorna seus 50 pedidos mais recentes, incluindo números de telefone e códigos SMS. Consulte este endpoint para verificar códigos SMS recebidos em pedidos ativos.

Resposta
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Status dos pedidos: active — aguardando SMS. completed — SMS recebido. cancelled — cancelado pelo usuário. refunded — reembolsado automaticamente (nenhum SMS recebido antes do tempo limite). expired — expirado.

Obter preço de aluguel

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Obtenha o preço de aluguel de um número dedicado de uma operadora específica por uma duração determinada.

ParâmetroTipoObrigatórioDescrição
countrystringobrigatórioCódigo do país
operator_idintegerobrigatórioID da operadora
durationintegerobrigatórioDuração do aluguel em dias: 7, 14, 30 ou 90
Resposta
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Alugar Número

POST /api.php?action=rental_buy

Alugue um ou mais números de telefone dedicados. O número é exclusivamente seu durante todo o período de aluguel e recebe SMS ilimitados.

ParâmetroTipoObrigatórioDescrição
countrystringobrigatórioCódigo do país
operator_idintegerobrigatórioID da operadora
durationintegerobrigatório7, 14, 30 ou 90 dias
qtyintegeropcionalQuantidade de números para alugar (1–10, padrão: 1)
Resposta de sucesso
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Obter informações do usuário

GET /api.php?action=user

Retorna as informações da conta e o saldo do usuário atual. Use para verificar o status de autenticação e os fundos disponíveis.

Autenticado
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Não autenticado
{ "logged_in": false }

Exemplo de fluxo de trabalho completo

Aqui está um exemplo completo em Python que autentica, encontra um serviço, compra um número e consulta o código SMS:

Python
import requests, time BASE = "https://smsburner.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Perguntas frequentes

O que posso fazer com a API de verificação SMS do SMSBurner?

A API SMSBurner oferece aos desenvolvedores acesso programático a números de telefone virtuais em 190+ países para verificação SMS pontual (códigos OTP) e aluguel de números de longo prazo (7, 14, 30 ou 90 dias). É possível listar serviços, consultar preços em tempo real, alocar números, recuperar códigos SMS recebidos e reembolsar ativações com falha — tudo via interface REST em JSON, sem KYC e com cobrança exclusiva em cripto.

Preciso de uma chave de API ou token OAuth para usar a API?

Não. A API SMSBurner utiliza autenticação por sessão baseada em cookie: envie uma única requisição POST para /auth-api.php com sua seed de acesso de 16 caracteres e reutilize o cookie de sessão retornado em todas as chamadas subsequentes. Não há chave de API para provisionar, rotacionar ou revogar — você se autentica uma vez por sessão e permanece autenticado durante todo o tempo de vida do cookie.

Quanto custa usar a API SMSBurner?

A API em si é gratuita — sem mensalidade, sem assinatura e sem volume mínimo de requisições. Você paga apenas por número: ativações SMS avulsas a partir de $0.05 e aluguéis dedicados de longo prazo a partir de $4.79 por 7 dias. Toda ação é debitada do seu saldo pré-pago, e qualquer ativação que não receba um SMS é reembolsada automaticamente.

Quais linguagens de programação e frameworks são suportados?

Qualquer linguagem ou plataforma capaz de fazer requisições HTTPS pode chamar a API — Python (requests, httpx), Node.js (fetch, axios), Go, PHP, Ruby, Java, C#, Bash com cURL e muito mais. A documentação inclui exemplos prontos para execução em cURL, Python e JavaScript, e uma especificação OpenAPI 3.0 completa está publicada em /openapi.json para que você possa gerar automaticamente um cliente tipado na linguagem de sua escolha.

O que acontece se meu código de verificação SMS nunca chegar?

Cada ativação tem uma janela de entrega de 20 minutos. Se nenhum SMS chegar antes do vencimento desse prazo, o pedido é cancelado automaticamente e o valor integral é creditado de volta ao saldo da sua conta — sem abrir ticket de suporte, sem reenvio manual. Você pode imediatamente usar o saldo reembolsado para alocar outro número, optando por um nível de operadora diferente (virtual, físico ou premium) para maior taxa de entrega.

Existem limites de requisições na API SMSBurner?

A autenticação tem limite de 5 tentativas a cada 15 minutos por IP, protegendo contra enumeração de seeds por força bruta. Todos os demais endpoints — catálogo, compra, orders, rentals — atualmente não possuem limite rígido de requisições, mas pedimos que os intervalos entre chamadas sejam razoáveis: consultar /api.php?action=orders a cada 3–5 segundos é suficiente para recuperação de SMS, e rajadas sustentadas acima de ~10 req/s podem ser limitadas na camada WAF.