API para desarrolladores

Automatiza verificaciones a gran escala

La API de SNSPhone permite que tus propias herramientas soliciten números no VoIP de EE. UU., lean códigos SMS y gestionen alquileres. Dos formatos: una API REST con JSON y el formato común de activación SMS para scripts existentes.

Inicio rápido

URL base https://snsphone.com/api/v1. Crea una clave en la página API de la consola y envíala como Authorization: Bearer spk_... (o un campo clave). Todos los números son no VoIP de EE. UU. El dinero es una cadena USD con 2 decimales, los tiempos son ISO 8601 UTC, 300 solicitudes por minuto por clave. Precios al 2026-11-03.

Python

import os, time, requests

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

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

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

Catálogo

GET/services

Cada código de servicio con su nombre, categoría, precio de verificación y períodos de alquiler. No se necesita clave.

Público, no se necesita clave.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Precios en USD, opcionalmente para un servicio. No se necesita clave.

Público, no se necesita clave.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

Tu saldo en USD.

Necesita tu clave API.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Verificaciones

POST/orders

Compra una verificación (201). Devuelve el número de EE. UU. y la hora en que finaliza la ventana de 20 minutos.

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Una verificación con su estado y cada código recibido. Estados: waiting, received, finished, refunded, canceled.

Necesita tu clave API.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Tus verificaciones abiertas (status=all para los últimos 100).

Necesita tu clave API.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

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

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Cierra una verificación que recibió su código.

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

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

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Alquileres

POST/rentals

Alquila un número de EE. UU. para un servicio y período (201). days es opcional cuando el servicio tiene un período.

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Tus alquileres activos con sus últimos mensajes (status=all para los últimos 100).

Necesita tu clave API.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Un alquiler con cada SMS recibido en él.

Necesita tu clave API.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Añade un período más al mismo precio.

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Cancela en los primeros 20 minutos mientras no ha llegado ningún SMS. Todo lo pagado vuelve a tu saldo.

Necesita tu clave API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Formato de activación por SMS

Para herramientas que ya entienden el formato común de activación. Una URL, un campo de acción, respuestas en texto plano. Solo verificaciones.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
AcciónCampos adicionalesRespuestaSignificado
getBalanceningunoACCESS_BALANCE:12.50Tu saldo en USD.
getServicesListninguno{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Códigos de servicio con un precio de verificación (JSON).
getCountriesninguno{"us":{"name":"United States","dial":"1"}}Solo Estados Unidos. country puede ser us, 187 o dejarse vacío.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Precios en USD. El filtro de servicio es opcional.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Compra una verificación. Devuelve el id y el número con el 1 al frente.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (se solicitó otro código), STATUS_CANCEL (cancelado o reembolsado).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 listo (ACCESS_READY), 3 otro código (ACCESS_RETRY_GET), 6 finalizar (ACCESS_ACTIVATION), 8 cancelar con un reembolso total mientras no llegó ningún código (ACCESS_CANCEL).

Errores

Los errores REST vienen como {"error":{"code","message"}} con estos códigos de estado. El formato de activación responde con una palabra en texto plano.

400Campo faltante o incorrecto (bad_json, bad_period).
401No hay clave o es incorrecta (no_key, bad_key).
402Saldo insuficiente (no_balance).
404Servicio, pedido, alquiler o endpoint desconocido, o un producto que el servicio no tiene (not_sold).
409No es posible ahora (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Más de 300 solicitudes en un minuto (rate_limited).
BAD_KEYFalta la clave API o es incorrecta.
BAD_ACTIONAcción desconocida.
BAD_SERVICECódigo de servicio desconocido.
BAD_COUNTRYNo es Estados Unidos, o el servicio solo se vende como alquiler.
NO_BALANCESaldo insuficiente.
NO_NUMBERSNo hay números disponibles en este momento. Inténtalo de nuevo en un momento.
NO_ACTIVATIONID desconocido o no es tuyo.
EARLY_CANCEL_DENIEDYa ha llegado un código, por lo que no se puede cancelar.
NO_ACTIVATIONSYa hay 20 verificaciones abiertas.
TOO_MANY_REQUESTSMás de 300 solicitudes en un minuto.

Preguntas sobre la API

Claves, límites y sondeos, respondidos.

¿Tiene SNSPhone una API de verificación por SMS?

Sí. Una API REST con JSON en /api/v1 para servicios, precios, verificaciones y alquileres, y el formato común de activación por SMS en /stubs/handler_api.php.

¿Cómo autentico las solicitudes de la API?

Crea una clave en la página de API de la consola y envíala como Authorization: Bearer spk_..., o como un campo key. Las claves se almacenan solo como un hash y se muestran una vez.

¿Cuáles son los límites de tasa de la API?

300 solicitudes por minuto por clave, hasta 20 verificaciones abiertas y 20 alquileres activos por cuenta.

¿Las órdenes de la API cuestan más que las del sitio web?

No. La API usa los mismos precios y las mismas reglas de reembolso que la consola.

¿Cómo sé cuándo ha llegado el código?

Sondea GET /orders/{id} cada pocos segundos. El estado cambia de waiting a received y el campo code contiene los dígitos.

API de verificación por SMS no VoIP: Números de EE. UU. por REST | SNSPhone