Ir al contenido principal
116
Países
133 servicios, 400 rutas de operador, más de 15.400 precios en vivo. Solo cripto, cero verificación de identidad.
Alquilar un Número

SmsNoKYC para desarrolladores: verificación por SMS que puedes automatizar

Automatiza todo el ciclo de verificación mediante una única interfaz JSON. 116 países, 133 servicios, 400 rutas de operador y más de 15.400 precios activos están detrás de unos pocos endpoints: asignar un número, captar su código entrante, mantener un alquiler hasta 90 días, pagar en cripto. Aquí no existe clave de API — una seed phrase es la única credencial que presentarás jamás.

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

Autenticación requerida. Las sesiones funcionan mediante cookies. Inicia sesión con tu seed phrase — a través del sitio o directamente contra el endpoint de autenticación documentado abajo — y cada solicitud posterior hereda esa sesión automáticamente.

Hecho para scripts, pipelines y agentes autónomos

Los proveedores tradicionales de OTP quieren contratos firmados, cumplimiento aprobado y mínimos mensuales comprometidos antes de que salga tu primera solicitud. SmsNoKYC invierte el orden: mantén una frase semilla, recarga un saldo desde $25 en cualquiera de 8 criptomonedas — entre ellas Bitcoin, Monero, Ethereum, Litecoin, TRON, USDT, SOL — y empieza a llamar desde el cliente HTTPS que ya uses. La facturación se mide por número desde $0.01, en más de 15.400 puntos de precio en vivo.

Día a día, los endpoints verifican flujos de registro dentro de CI, entregan códigos OTP a navegadores headless y flotas de scrapers, mantienen vivas cuentas de Telegram o WhatsApp con alquileres dedicados de 7 a 90 días, y distribuyen la verificación en 116 países con control explícito de 400 rutas de operadoras en tres niveles — virtual, físico, premium. Los agentes de IA acceden al mismo catálogo mediante un servidor MCP nativo, cubierto en la página de agentes, para que un modelo con herramientas pueda comprar números y leer códigos sin integraciones personalizadas.

Autenticacion

Las sesiones se basan en cookies — no hay clave bearer que generar ni rotar. El inicio de sesión programático requiere tres pasos:

  1. Envía tu seed phrase mediante POST a /auth-api.php
  2. Captura la cookie establecida en la respuesta
  3. Adjunta esa cookie a cada llamada posterior
POST /auth-api.php

Intercambia tu seed phrase por una sesión activa.

ParametroTipoRequeridoDescripción
actionstringrequeridoDebe ser "login"
seedstringrequeridoLa seed de 16 caracteres vinculada a tu cuenta (formato AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.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://smsnokyc.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

Cada endpoint depende de un solo patrón de URL:

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

Las respuestas llegan siempre en JSON. Los cuerpos POST pueden enviarse como application/json o application/x-www-form-urlencoded.

Límites de solicitudes

Dos reglas rigen el volumen de solicitudes:

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

Límite de peticiones: el inicio de sesión acepta 5 intentos cada 15 minutos; el resto de endpoints no tiene actualmente un tope fijo, aunque el abuso sostenido puede ralentizarse aguas arriba. Espacia tus llamadas con sensatez.

Manejo de errores

Todo fallo se devuelve como un objeto JSON con un campo error:

{ "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 a nivel de aplicación que encontrarás con más frecuencia:

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

Enumera cada país que actualmente tiene stock — 116 en el último conteo. Endpoint abierto, no requiere sesión.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.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}

Obtiene la ficha de servicios para un país, con precio en vivo y stock incluidos. Omite el parámetro de país para recibir el catálogo completo de 133 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}

Enumera las rutas de operadoras detrás de un país. Cada operador tiene un nivel más un multiplicador aplicado sobre el 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 operador: virtual — basado en VoIP, el más económico, ocasionalmente rechazado por plataformas estrictas. physical — hardware SIM real, mayor aceptación. premium — la mayor aceptación y la entrega más rápida, alrededor de 10 segundos.

Comprar número (Activación SMS)

POST /api.php?action=buy

Reserva un número para una sola verificación. Es tuyo durante 20 minutos; si no llega ningún mensaje en ese plazo, el cargo vuelve a tu saldo 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://smsnokyc.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://smsnokyc.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://smsnokyc.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

Muestra tus últimos 50 pedidos con sus números y los códigos capturados. Consulta aquí mientras una activación espera su SMS.

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 del pedido: active — aún a la espera de un mensaje. completed — código capturado. cancelled — cerrado por ti. refunded — reembolsado automáticamente tras un tiempo de espera sin respuesta. expired — plazo agotado.

Obtener precio de alquiler

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

Cotiza el costo de mantener un número dedicado en un operador concreto durante el plazo elegido.

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

Reserva uno o más números dedicados. Cada uno permanece exclusivamente tuyo durante todo el plazo — de 7 a 90 días — y acepta SMS entrantes ilimitados de cualquier servicio.

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

Informa sobre la cuenta detrás de la sesión actual, saldo incluido. Una sola llamada sirve tanto como verificación de inicio de sesión como de fondos.

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

Guion de Extremo a Extremo

El siguiente script ejecuta todo el ciclo en Python — sesión, consulta de catálogo, compra y luego sondeo hasta que llega el código:

Python
import requests, time BASE = "https://smsnokyc.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 de Desarrolladores, Respondidas

¿Qué operaciones expone la API para desarrolladores de SmsNoKYC?

Todo lo que hace el panel, un script puede hacerlo: obtener el catálogo de 116 países y 133 servicios, inspeccionar más de 15.400 puntos de precio en vivo repartidos en 400 rutas de operadoras, asignar un número para un OTP único, leer el código entrante en el momento en que llega, mantener un alquiler dedicado por 7, 14, 30 o 90 días y auditar cada pedido. Todo esto es JSON simple sobre HTTPS, facturado en cripto, sin ningún paso de identidad en todo el flujo.

¿Hay que generar una clave de API antes de mi primera solicitud?

Nada que generar, nada que rotar. Tu frase semilla es la credencial en sí: envíala una vez con POST a /auth-api.php, guarda la cookie de sesión que devuelve el servidor, y envía esa cookie en cada llamada posterior. Sin panel de claves, sin protocolo OAuth, sin calendario de vencimiento — una semilla abre una sesión, y ese es todo el modelo.

¿Cuánto cuesta el acceso a la propia API?

El acceso no cuesta nada — sin cuota mensual, sin niveles, sin volumen mínimo de llamadas. Pagas solo por número: los códigos de verificación puntuales empiezan en $0.01 y suelen situarse entre $0.20 y $1, mientras que los alquileres dedicados abren en $4.20 para un término de 7 días. Los saldos se recargan con 8 criptomonedas (recarga mínima $25), y una activación que nunca recibe su SMS se reembolsa sola sin ninguna acción de tu parte.

¿Puedo integrar desde cualquier lenguaje, o desde un agente de IA?

Cualquier cosa que hable HTTPS es válida: Python, Node.js, Go, Rust, PHP, Ruby, Java, C#, o cURL puro dentro de un script de shell. La referencia incluye fragmentos ejecutables en cURL, Python y JavaScript, y /openapi.json expone un documento OpenAPI 3.0 completo para generar clientes tipados. Los agentes autónomos también están cubiertos de forma nativa — un servidor MCP dedicado permite que modelos que usan herramientas compren números y recojan códigos por sí solos; la página /agents explica la configuración.

¿Qué pasa cuando un número comprado se queda en silencio?

No pierdes nada. Cada activación tiene una ventana de recepción de 20 minutos; cuando se cierra sin ningún mensaje, la plataforma cancela el pedido por sí misma y devuelve el cargo completo a tu saldo. Sin tickets, sin formularios, sin esperar al soporte. Compra de nuevo enseguida — subir a un nivel de operador físico o premium suele aumentar la tasa de entrega.

¿Con qué frecuencia puedo consultar antes de que se active la limitación?

Solo el inicio de sesión tiene un límite estricto: 5 intentos cada 15 minutos por IP, para frenar la adivinación de la seed. Los endpoints de catálogo, compra, pedido y alquiler no tienen cuota fija por ahora. Mantén un ritmo razonable — consultar el endpoint de pedidos cada 3 a 5 segundos capta todos los códigos — y mantén el tráfico sostenido por debajo de unas 10 solicitudes por segundo, ya que ráfagas más intensas pueden ralentizarse en la capa perimetral.

Publícalo

Consigue una semilla en la página de inicio, recarga $25 o más en cripto, y tu primer código de verificación está a cinco solicitudes de distancia. ¿Construyendo con un LLM en vez de un script? Apunta tu modelo al servidor MCP de SmsNoKYC o sigue la guía de integración de agentes de IA — el catálogo completo de 116 países y 133 servicios se convierte en una llamada a herramienta.

Cualquier cosa que la referencia deje sin cubrir está en el centro de ayuda, el glosario SMS descifra la jerga, y actividad en vivo muestra la red en movimiento. El soporte funciona mediante tickets dentro de la app una vez que has iniciado sesión.