API
Una API JSON sobre HTTPS. Envía tu clave API en la cabecera Authorization. Los precios, los reembolsos y la cuenta atrás de 20 minutos son los mismos que en la web.
Dirección base
https://today-sms.com/api/v1
Autenticación
Cabecera Authorization: Bearer YOUR_API_KEY. Crea la clave en la página Clave API después de tu primera recarga. Hasta 300 solicitudes por minuto.
curl https://today-sms.com/api/v1/balance \ -H "Authorization: Bearer YOUR_API_KEY"
GET /balance
Tu saldo en USD.
Respuesta de ejemplo
{
"balance": "42.5000",
"currency": "USD"
}GET /apps
Apps con números ahora: código, nombre, precio más bajo, países.
Respuesta de ejemplo
[
{ "app": "telegram", "name": "Telegram", "from": "0.4515", "countries": 61 }
]GET /prices?app=telegram
Países para una app, el más barato primero: código de país, código ISO, precio, números disponibles.
Respuesta de ejemplo
[
{ "country": "indonesia", "iso": "id", "price": "0.4515", "stock": 702866 }
]POST /numbers {"app":"telegram","country":"indonesia"}
Compra un número. El precio se descuenta de tu saldo.
Respuesta de ejemplo
{
"id": 1042,
"phone": "+6281234567890",
"price": "0.4515",
"status": "waiting",
"expires_at": "2026-10-14T09:20:00Z"
}GET /numbers/{id}
Estado y todos los SMS recibidos hasta ahora.
Respuesta de ejemplo
{
"id": 1042,
"status": "received",
"sms": [ { "code": "482913", "text": "Your code is 482913", "at": "2026-10-14T09:02:11Z" } ]
}POST /numbers/{id}/cancel
Cancela un número sin SMS, 120 segundos después de comprarlo. Reembolso completo.
Respuesta de ejemplo
{
"id": 1042,
"status": "canceled",
"refunded": "0.4515"
}POST /numbers/{id}/finish
Cierra un número después de recibir el código.
Respuesta de ejemplo
{
"id": 1042,
"status": "finished"
}Estados
| waiting | Número listo, aún sin SMS |
| received | Ha llegado al menos un SMS |
| finished | Cerrado después de un código |
| canceled | Cancelado, reembolsado |
| expired | Sin SMS a tiempo, reembolsado |
| checking | Respuesta del proveedor poco clara; se reembolsa al final de la cuenta atrás si no aparece ningún número |
Errores
Los errores devuelven un estado distinto de 2xx y un cuerpo JSON con un código de error.
{
"error": "not_enough_balance"
}| unauthorized | Falta la clave API o es incorrecta |
| not_allowed | La API se activa después de tu primera recarga |
| bad_request | Falta un campo obligatorio o es incorrecto |
| no_numbers | Ahora no hay números para esta app y este país |
| not_enough_balance | Recarga primero |
| too_many_open | Demasiados números abiertos; termina o cancela algunos |
| too_early | Se puede cancelar 120 segundos después de comprar |
| has_sms | Ha llegado un SMS; el número no se puede cancelar |
| not_found | No existe ese número en tu cuenta |
| try_again | El proveedor no confirmó la cancelación; inténtalo de nuevo en un minuto |
| rate_limited | Demasiadas solicitudes en un minuto |