Ir al contenido principal
100+
Paises
Mas de 1000 servicios. Paga con cripto, sin KYC.
Comprar Numero

Documentacion de la API

Automatice los flujos de verificación SMS con la API de SimNoKYC. Compre números de teléfono virtuales, reciba códigos SMS, alquile números dedicados y gestione pedidos — todo de forma programática.

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 SimNoKYC 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.

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.

ParametroTipoRequeridoDescripcion
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://simnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://simnokyc.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://simnokyc.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://simnokyc.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 Paises

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

ParametroTipoRequeridoDescripcion
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.

ParametroTipoRequeridoDescripcion
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.

ParametroTipoRequeridoDescripcion
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://simnokyc.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://simnokyc.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://simnokyc.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.

ParametroTipoRequeridoDescripcion
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 Numero

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.

ParametroTipoRequeridoDescripcion
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://simnokyc.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")