API de Alartman
Cada canal tiene un token. Con él puedes emitir alertas desde cualquier sistema: un script, un cron, Zapier, n8n, tu propio backend.
Emitir una alerta
POST https://alartman.com/api/emit
Authorization: Bearer TOKEN_DEL_CANAL
Content-Type: application/json
{
"title": "XRP cruzó $3.20", // requerido, máx 160
"body": "+4.1% en la última hora", // opcional, máx 2000
"url": "https://evanbank.com/...", // opcional, se abre al tocar
"priority": "high" // low | normal | high | critical
}
Respuesta: {"ok":true,"alert_id":123,"subscribers":418}. También acepta token como campo del JSON o cabecera X-Token. Límite: 60 alertas por canal cada 10 minutos.
Webhook entrante
Crea una fuente tipo Webhook en tu canal y obtendrás una URL única. Cualquier POST JSON con title (y opcionalmente body, url, priority) se convierte en alerta. Si el JSON no trae title, se usa message, text o subject.
curl -X POST https://alartman.com/api/webhook/TOKEN_WEBHOOK -H "Content-Type: application/json" -d '{"title":"Deploy OK","body":"v2.3.1 en producción"}'
Fuentes RSS / JSON
Sin código. Pega la URL del feed; Alartman la revisa cada N minutos y sólo envía elementos nuevos (la primera lectura indexa sin disparar). Para JSON indica la ruta a la lista ($, data.items) y las claves de título, cuerpo y URL.
Sismos en tiempo real
Fuente nativa, sin código: en tu canal agrega una fuente tipo Sismos en tiempo real, elige proveedor (USGS mundial/México o SSN-UNAM), magnitud mínima y cada cuántos minutos revisar. Cada sismo sobre el umbral se convierte en alerta con magnitud, lugar, hora, profundidad y enlace al reporte oficial; la prioridad sube con la magnitud.
Leer alertas desde tu sitio (API pública v1)
Sin llave, sin registro, CORS abierto (Access-Control-Allow-Origin: *), respuesta cacheable 60 s, límite de 300 peticiones por hora por IP. Sólo expone canales públicos; nunca alertas personales ni de grupos privados.
GET https://alartman.com/api/v1/alerts GET https://alartman.com/api/v1/channels GET https://alartman.com/api/v1/categories GET https://alartman.com/api/v1/feed.xml → RSS 2.0 listo para lectores y widgets
Parámetros de /api/v1/alerts
kind=official | community | all (por defecto: official) channel=sismos-mexico-ssn-unam slug de un canal category=sismos slug de categoría priority=high mínimo: low | normal | high | critical since_id=1234 sólo alertas con id mayor (para sondeo incremental) since=2026-08-21T00:00:00Z ISO 8601 o cualquier formato que entienda strtotime q=guadalajara busca en título y cuerpo limit=20 1 a 100 order=desc | asc
Respuesta
{
"ok": true, "count": 2, "latest_id": 1876, "generated_at": "2026-08-21T13:40:02-06:00",
"alerts": [{
"id": 1876,
"title": "Sismo M5.3 · 22 km SSW de Pinotepa Nacional",
"body": "Hora: 2026-08-21 13:22 · Profundidad: 18 km · Fuente: SSN",
"priority": "high", // low | normal | high | critical
"source": "module", // manual | api | rss | json | webhook | quake | module
"created_at": "2026-08-21T13:24:10-06:00",
"link": "https://www.ssn.unam.mx/...", // enlace de la fuente, puede ser null
"image": "https://...", // puede ser null
"permalink": "https://alartman.com/a/1876",
"channel": { "slug": "sismos-mexico-ssn-unam", "name": "Sismos México (SSN-UNAM)", "icon": "〰️", "official": true, "url": "https://alartman.com/c/sismos-mexico-ssn-unam" },
"category": { "slug": "sismos", "name": "Sismos" }
}]
}
Ejemplos
// JavaScript en tu sitio
const r = await fetch('https://alartman.com/api/v1/alerts?kind=official&priority=high&limit=5');
const { alerts } = await r.json();
alerts.forEach(a => console.log(a.channel.icon, a.title, a.created_at));
# PHP
$j = json_decode(file_get_contents('https://alartman.com/api/v1/alerts?category=sismos&limit=10'), true);
# Sondeo incremental cada minuto (sin repetidos)
GET https://alartman.com/api/v1/alerts?since_id=1876 → usa "latest_id" de la respuesta anterior
Buenas prácticas: consulta como mucho una vez por minuto, guarda latest_id y usa since_id, y al mostrar las alertas cita la fuente (el campo channel.name) y enlaza al permalink. Las alertas oficiales reproducen datos de SSN, USGS, NOAA, CENAPRED y otros organismos: consérvalos íntegros y no los presentes como propios.
¿Vas a integrarlo con ayuda de una IA? Descarga instrucciones en Markdown listas para pegar en tu asistente.
Ejemplo PHP
$ch = curl_init('https://alartman.com/api/emit');
curl_setopt_array($ch, [CURLOPT_POST=>1, CURLOPT_RETURNTRANSFER=>1,
CURLOPT_HTTPHEADER=>['Authorization: Bearer '.$token,'Content-Type: application/json'],
CURLOPT_POSTFIELDS=>json_encode(['title'=>'Hola','priority'=>'normal'])]);
echo curl_exec($ch);