208 aplicaciones154 países

API v12026-11-04

Una API JSON para pedir números de verificación y leer códigos SMS.

URL base https://snsverify.com/api/v1

Cada ruta en esta página es relativa a ella. Las cantidades están en dólares estadounidenses como cadenas con dos decimales, los tiempos son UTC (ISO 8601).

Dos formatos, una cuenta

Esta página describe la API REST con JSON. Si tu herramienta ya utiliza el formato común de activación por SMS (handler_api.php con parámetros action=), usa la API de activación por SMS. Ambas comparten tu clave API, precios, activaciones abiertas y reembolsos.

Resumen

Una API de verificación por SMS permite que tu software compre un número de teléfono para una aplicación, espere el SMS de verificación y lea el código, sin abrir el sitio web. Cada pedido es una activación: un servicio, un país, un número y una ventana de 20 minutos. Los pedidos sin código se reembolsan en su totalidad al finalizar la ventana.

Las solicitudes usan GET para lectura y POST para acciones. Los cuerpos POST pueden ser campos de formulario o JSON. Las respuestas exitosas son objetos JSON; los errores tienen la misma forma en todas partes: {"error":{"code":"...","message":"..."}}.

Autenticación

Crea una clave API en la consola bajo Clave API. Se muestra una vez; guardamos solo una copia cifrada. Envíala en el encabezado Authorization como un token bearer. También se acepta un parámetro key para herramientas que no pueden configurar encabezados.

Authorization: Bearer vfk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Crear una nueva clave reemplaza la anterior de inmediato. Los endpoints de servicios, países y precios funcionan sin clave.

Errores

HTTPSignificado
400Campo faltante o incorrecto (missing_filter, bad_json).
401Sin clave o clave incorrecta (no_key, bad_key).
402Saldo insuficiente (no_balance).
404Servicio, país, pedido o endpoint desconocido.
409El pedido no puede hacer eso ahora (has_code, not_ready, too_many_open, no_numbers).
429Más de 300 solicitudes en un minuto (rate_limited).

Inicio rápido

Ordena un número de WhatsApp del Reino Unido con curl, luego consulta el pedido cada pocos segundos hasta que llegue el código.

curl -X POST https://snsverify.com/api/v1/orders \
  -H "Authorization: Bearer $SNSVERIFY_KEY" \
  -d service=whatsapp -d country=gb

Python

import os, time, requests

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

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

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

Límites de tasa

300 solicitudes por minuto por clave, y hasta 20 pedidos abiertos por cuenta. Consultar un pedido cada 3 a 5 segundos es suficiente: la mayoría de los códigos llegan en un minuto.

Estados de pedido

  • waiting El número está abierto y aún no ha llegado ningún código.
  • received Llegó al menos un código; solicita otro con resend mientras la ventana esté abierta.
  • finished Cerrado después de un código, por ti o al finalizar la ventana.
  • refunded La ventana terminó sin código; el precio total volvió a tu saldo.
  • canceled Cancelaste antes de que llegara un código; el precio total volvió a tu saldo.

Endpoints

GET/services

Cada código de servicio con su nombre, categoría y precio más bajo. No se necesita clave.

{"services":[{"code":"whatsapp","name":"WhatsApp","category":"social","from":"0.31"}]}

GET/countries

Cada código de país (ISO, minúsculas) con nombre y código de marcación. No se necesita clave.

{"countries":[{"code":"gb","name":"United Kingdom","dial_code":"44"}]}

GET/prices?service=whatsapp&country=gb

Precios en USD. Filtra por servicio, país o ambos. No se necesita clave.

{"prices":[{"service":"whatsapp","country":"gb","price":"0.94"}]}

GET/balance

Tu saldo en USD.

{"balance":"25.00","currency":"USD"}

POST/orders

Compra un número (HTTP 201). Devuelve el pedido con el número de teléfono y la hora en que finaliza la ventana.

Cuerpo: service=whatsapp&country=gb

{"order":{"id":"AC-7K2M9QX4PB","service":"whatsapp","country":"gb","phone":"+447700900123","price":"0.94","status":"waiting","code":null,"expires_at":"2026-11-04T12:20:00.000Z"},"window_minutes":20}

GET/orders/AC-7K2M9QX4PB

Un pedido con su estado y cada código recibido. Estados: waiting, received, finished, refunded, canceled.

{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482915","sms":"Your WhatsApp code: 482-915"}}

GET/orders?status=open

Tus pedidos abiertos; status=all devuelve los últimos 100.

{"orders":[{"id":"AC-7K2M9QX4PB","status":"waiting"}]}

POST/orders/AC-7K2M9QX4PB/resend

Solicita otro código en el mismo número después del primer código, mientras la ventana esté abierta. Sin costo adicional.

{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/AC-7K2M9QX4PB/finish

Cierra un pedido que recibió su código.

{"order":{"status":"finished"}}

POST/orders/AC-7K2M9QX4PB/cancel

Cancela antes de que llegue un código. El precio total vuelve a tu saldo.

{"order":{"status":"canceled","refunded":"0.94"}}
API de Verificación por SMS: REST JSON para Números de WhatsApp, Telegram y Google | SNSVerify