Ir al contenido principal
100+
Países
Más de 1000 servicios. Paga con cripto, sin KYC.
Comprar Número

API de Verificación SMS — SMSBurner

Automatiza la verificación OTP a escala. Adquiere números de teléfono virtuales en 190+ países, recibe códigos SMS en segundos, alquila números dedicados a largo plazo y gestiona cada orden a través de un único endpoint REST — sin clave API, sin KYC, facturado en criptomoneda.

Tiempo de lectura: 5 min REST · JSON · OpenAPI 3.0 Especificación OpenAPI →

Autenticación requerida. Todas las solicitudes de API utilizan autenticación de sesión basada en cookies. Debe iniciar sesión en su cuenta de SMSBurner para usar la API. Inicie sesión a través de la interfaz web o use el endpoint de autenticación para establecer una sesión.

Por qué los desarrolladores eligen la API de SMSBurner

SMSBurner es la API de verificación SMS más flexible para desarrolladores que necesitan anonimato, cobertura global y precios predecibles. A diferencia de los proveedores SMS-OTP tradicionales que restringen el acceso mediante contratos empresariales, mínimos mensuales y cuestionarios KYC, SMSBurner funciona con cualquier cliente HTTPS, cobra estrictamente por número y acepta 8 criptomonedas, incluyendo Bitcoin, Monero, Ethereum, USDT, Solana, Litecoin y TRON.

Los casos de uso típicos incluyen la automatización de registros de cuentas para QA a escala, la obtención de contraseñas de un solo uso para agentes headless y bots de CI, la validación de flujos que requieren teléfono en integración continua, el alquiler de números dedicados a largo plazo para cuentas de Telegram o WhatsApp que necesitan recepción SMS ininterrumpida, y la verificación geodistribuida en 190+ países con control explícito por nivel de operador — virtual, físico o premium.

Autenticacion

La API utiliza autenticación de sesión basada en cookies. Para autenticarse programáticamente:

  1. Envía una solicitud POST a /auth-api.php con tu frase seed
  2. Almacena la cookie de sesión de la respuesta
  3. Incluye la cookie en todas las solicitudes API posteriores
POST /auth-api.php

Autentícate con tu frase seed y establece una sesión.

ParametroTipoRequeridoDescripción
actionstringrequeridoDebe ser "login"
seedstringrequeridoTu seed de acceso de 16 caracteres (ej. 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: {...}}
Respuesta exitosa
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Respuesta de error
{ "success": false, "error": "Invalid seed." }

URL Base

Todos los endpoints de la API son relativos a:

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

Todas las respuestas son JSON. Los endpoints POST aceptan cuerpos de solicitud application/json y application/x-www-form-urlencoded.

Límites de solicitudes

La API aplica los siguientes límites de velocidad:

EndpointLímiteVentana
Autenticacion5 intentos15 minutos
Todos los demás endpointsSin límite estricto

Límite de tasa: La autenticación está limitada a 5 intentos por 15 minutos. Los demás endpoints no están actualmente limitados, pero el uso excesivo puede ser restringido. Usa intervalos de solicitud razonables.

Manejo de errores

Todos los errores devuelven un objeto JSON con un campo <code>error</code>:

{ "error": "Description of what went wrong" }
Código HTTPSignificado
200Éxito (verifica el cuerpo de la respuesta para errores a nivel de aplicación)
403Token CSRF inválido
405Método HTTP incorrecto (ej. GET en un endpoint solo POST)
429Límite de tasa excedido

Errores comunes a nivel de aplicación:

ErrorCausa
"Login required"Sesión expirada o no autenticado
"Insufficient balance"Fondos insuficientes — incluye los campos need y have
"Service not available for this country"Sin stock o servicio inactivo para el país seleccionado
"Missing country or service"No se proporcionaron los parámetros requeridos

Listar Países

GET /api.php?action=countries

Devuelve todos los países activos con números virtuales disponibles. No se requiere autenticación.

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();
Respuesta
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Listar Servicios

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

Devuelve los servicios disponibles para un país específico, incluyendo precios y stock. Sin código de país, devuelve todos los servicios sin precios.

ParametroTipoRequeridoDescripción
countrystringopcionalCódigo de país ISO 3166-1 alpha-2 (ej. us, gb, de)
Respuesta (con país)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Listar Operadores

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

Devuelve los operadores (proveedores) disponibles para un país específico. Cada operador tiene un tipo y un multiplicador de precio aplicado al precio base del servicio.

ParametroTipoRequeridoDescripción
countrystringrequeridoCódigo de país ISO 3166-1 alpha-2
Respuesta
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Tipos de operadores: virtual — números VoIP, los más baratos, pueden ser bloqueados por algunos servicios. physical — tarjetas SIM reales, mayor tasa de éxito. premium — entrega más rápida (~10s), mayor tasa de éxito.

Comprar número (Activación SMS)

POST /api.php?action=buy

Compra un número virtual para verificación SMS de un solo uso. El número está activo durante 20 minutos. Si no se recibe ningún SMS, tu saldo se reembolsa automáticamente.

ParametroTipoRequeridoDescripción
countrystringrequeridoCódigo de país (ej. us)
service_idintegerrequeridoID del servicio de Lista de servicios
operator_idintegeropcionalID del operador de Lista de operadores. Omitir para el operador predeterminado.
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();
Respuesta exitosa
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Error: Saldo insuficiente
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Listar pedidos

GET /api.php?action=orders

Devuelve tus 50 pedidos más recientes, incluyendo números de teléfono y códigos SMS. Consulta este endpoint para verificar los códigos SMS entrantes en pedidos activos.

Respuesta
[ { "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" } ]

Estados de pedido: active — esperando SMS. completed — SMS recibido. cancelled — cancelado por el usuario. refunded — reembolsado automáticamente (sin SMS recibido antes del tiempo límite). expired — expirado.

Obtener precio de alquiler

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

Obtén el precio de alquiler de un número dedicado de un operador específico por una duración determinada.

ParametroTipoRequeridoDescripción
countrystringrequeridoCódigo de país
operator_idintegerrequeridoID del operador
durationintegerrequeridoDuración del alquiler en días: 7, 14, 30, o 90
Respuesta
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Alquilar Número

POST /api.php?action=rental_buy

Alquila uno o más números de teléfono dedicados. El número es exclusivamente tuyo durante todo el período de alquiler y recibe SMS entrantes ilimitados.

ParametroTipoRequeridoDescripción
countrystringrequeridoCódigo de país
operator_idintegerrequeridoID del operador
durationintegerrequerido7, 14, 30, o 90 días
qtyintegeropcionalCantidad de números a alquilar (1–10, por defecto: 1)
Respuesta exitosa
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Obtener información del usuario

GET /api.php?action=user

Devuelve la información de cuenta y el saldo del usuario actual. Úsalo para verificar el estado de autenticación y los fondos disponibles.

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

Ejemplo de flujo de trabajo completo

Aquí hay un ejemplo completo en Python que se autentica, encuentra un servicio, compra un número y consulta el 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")

Preguntas frecuentes

¿Qué puedo hacer con la API de verificación SMS de SMSBurner?

La API de SMSBurner ofrece a los desarrolladores acceso programático a números de teléfono virtuales en 190+ países para verificación SMS de un solo uso (códigos OTP) y alquiler de números a largo plazo (7, 14, 30 o 90 días). Puedes listar servicios, consultar precios en tiempo real, asignar números, recuperar códigos SMS entrantes y solicitar reembolsos por activaciones fallidas — todo a través de una interfaz REST en JSON, sin KYC y con facturación exclusivamente en cripto.

¿Necesito una clave API o un token OAuth para usar la API?

No. La API de SMSBurner usa autenticación de sesión basada en cookie: envía una única solicitud POST a /auth-api.php con tu seed de acceso de 16 caracteres y reutiliza la cookie de sesión devuelta en cada llamada posterior. No hay clave API que aprovisionar, rotar ni revocar — te autenticas una vez por sesión y permaneces autenticado durante toda la vida útil de la cookie.

¿Cuánto cuesta usar la API de SMSBurner?

La API en sí es gratuita — no hay tarifa mensual, ni suscripción, ni volumen mínimo de solicitudes. Solo pagas por número: las activaciones SMS de un solo uso comienzan desde $0.05 y los alquileres dedicados a largo plazo desde $4.79 por 7 días. Cada acción se factura contra tu saldo prepago, y cualquier activación que no reciba un SMS se reembolsa automáticamente.

¿Qué lenguajes de programación y frameworks son compatibles?

Cualquier lenguaje o plataforma capaz de realizar solicitudes HTTPS puede usar la API — Python (requests, httpx), Node.js (fetch, axios), Go, PHP, Ruby, Java, C#, Bash con cURL y más. La documentación incluye ejemplos listos para ejecutar en cURL, Python y JavaScript, y una especificación OpenAPI 3.0 completa publicada en /openapi.json para que puedas generar automáticamente un cliente tipado en el lenguaje de tu elección.

¿Qué ocurre si mi código de verificación SMS nunca llega?

Cada activación tiene una ventana de entrega de 20 minutos. Si no llega ningún SMS antes de que expire ese período, la orden se cancela automáticamente y el importe íntegro se acredita de vuelta en el saldo de tu cuenta — sin ticket de soporte, sin reintento manual. Puedes usar inmediatamente el saldo reembolsado para asignar otro número, opcionalmente en un nivel de operador diferente (virtual, físico o premium) para mayor tasa de entrega.

¿Existen límites de velocidad en la API de SMSBurner?

La autenticación está limitada a 5 intentos por cada 15 minutos por IP, lo que protege contra la enumeración de seeds por fuerza bruta. Todos los demás endpoints — catálogo, compra, orders, rentals — no tienen actualmente un límite de velocidad estricto, pero pedimos que mantengas intervalos de solicitud razonables: hacer polling a /api.php?action=orders cada 3–5 segundos es más que suficiente para recuperar SMS, y ráfagas sostenidas por encima de ~10 req/s pueden ser limitadas en la capa WAF.