Documentación API
API REST para gestionar monitores y leer notificaciones, con una clave API creada en el dashboard. Los límites de monitores, intervalos y canales son los de tu plan.
Autenticación
Todas las solicitudes necesitan el encabezado Authorization: Bearer. Puedes usar una clave API (recomendado, ver la sección de abajo) o el token de sesión que devuelve el inicio de sesión. Si tienes activada la autenticación en dos pasos, el inicio de sesión también pide el código, así que usa una clave API para tus scripts.
Authorization: Bearer <token>
curl -X POST https://omniwatchguard.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "email@example.com", "password": "your_password"}'{"token": "eyJhbGciOiJIUzI1NiJ9...", "user": {"id": 1, "plan": "pro"}}Claves API
Las claves se crean en el dashboard, en API Keys. Una clave empieza por owg_live_ y se muestra una sola vez, al crearla. Puedes tener como máximo 5 claves por cuenta.
Authorization: Bearer owg_live_...
Las claves API funcionan en los endpoints /api/monitors (incluidos /api/monitors/ID y /api/monitors/changes) y /api/notifications. Los demás endpoints, incluido /api/export, solo aceptan el token de sesión del inicio de sesión.
Devuelve la lista de todos los monitores activos de tu cuenta.
curl https://omniwatchguard.com/api/monitors \ -H "Authorization: Bearer <token>"
const res = await fetch("https://omniwatchguard.com/api/monitors", {
headers: { Authorization: `Bearer ${token}` }
});
const monitors = await res.json();[{"id": 1, "url": "https://example.com", "name": "Test monitor",
"type": "text", "frequency": 60, "status": "active",
"notify_email": 1, "notify_slack": null, "created_at": "2026-03-01T12:00:00Z"}]Crea un nuevo monitor.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| url | string | Sí | URL de la página a monitorizar |
| name | string | No | Nombre del monitor |
| type | string | No | text | price | stock | css | api | seo | ssl; con complemento de pago: tech_stack | whois |
| frequency | integer | No | Minutos. Starter y Prueba: 60. Pro: 15, 30, 60. Agency: 5, 15, 30, 60. Por defecto 60; un valor fuera de tu plan se sustituye por 60. |
| notify_email | integer | No | 1 = activo, 0 = inactivo |
| notify_slack | string | No | URL de webhook de Slack |
| notify_discord | string | No | URL de webhook de Discord |
| notify_telegram | string | No | ID de chat de Telegram |
| notify_webhook | string | No | URL de webhook personalizada |
| selector | string | No | Selector CSS, para el tipo css |
| auth_cookie | string | No | Cookie o token de sesión para páginas con inicio de sesión (plan Agency) |
curl -X POST https://omniwatchguard.com/api/monitors \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/prices", "type": "price", "frequency": 15}'{"success": true, "id": 42}Actualiza un monitor existente. Envía solo los campos que quieras cambiar.
curl -X PATCH https://omniwatchguard.com/api/monitors/42 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"frequency": 5, "notify_slack": "https://hooks.slack.com/..."}'{"success": true}Elimina un monitor. Esta acción es irreversible.
curl -X DELETE https://omniwatchguard.com/api/monitors/42 \ -H "Authorization: Bearer <token>"
{"success": true}Devuelve los últimos cambios detectados. Parámetro opcional: ?limit=20 (por defecto 10, máx. 50).
curl "https://omniwatchguard.com/api/monitors/changes?limit=20" \ -H "Authorization: Bearer <token>"
[{"id": 1, "url": "https://example.com", "name": "Monitor test", "type": "price",
"ai_summary": "Price dropped from $99 to $79.",
"ai_severity": "major", "detected_at": "2026-03-24T09:15:00Z"}]Exporta datos en formato CSV. Parámetros: type=monitors|incidents, opcional monitor_id. Este endpoint solo acepta el token de sesión del inicio de sesión, no claves API.
curl "https://omniwatchguard.com/api/export?type=monitors" \ -H "Authorization: Bearer <token>" -o monitors.csv
curl "https://omniwatchguard.com/api/export?type=incidents&monitor_id=42" \ -H "Authorization: Bearer <token>" -o incidents.csv
Devuelve las últimas 100 notificaciones enviadas. Parámetro opcional: ?type=email|slack|discord|telegram|webhook.
curl https://omniwatchguard.com/api/notifications \ -H "Authorization: Bearer <token>"
[{"id": 1, "type": "email", "success": 1, "error": null,
"sent_at": "2026-03-24T09:15:00Z", "url": "https://example.com"}]Códigos de error
| Código HTTP | Significado |
|---|---|
| 200 | Éxito |
| 201 | Monitor creado |
| 400 | Solicitud no válida |
| 401 | No autorizado - token faltante o caducado |
| 403 | Acceso denegado - límite de monitores alcanzado, canal o intervalo no incluido en el plan |
| 404 | Recurso no encontrado |
| 429 | Demasiadas solicitudes - consulta el encabezado Retry-After |
| 500 | Error interno del servidor |
{"error": "Error description"}Límites
| Plan | Monitores | Intervalos (minutos) | Canales de alerta |
|---|---|---|---|
| Trial | 3 | 60 | email, webhook, Slack, Discord, Telegram |
| Starter | 10 | 60 | |
| Pro | 100 | 15, 30, 60 | email, webhook, Slack |
| Agency | ilimitado | 5, 15, 30, 60 | email, webhook, Slack, Discord, Telegram |
Los endpoints /api/monitors y /api/notifications no tienen un límite general de solicitudes. Están limitados por dirección IP: POST /api/auth/login a 10 solicitudes cada 15 minutos y POST /api/monitors/preview a 20 solicitudes por hora. Al superar un límite recibes 429 con el encabezado Retry-After (segundos).
⚡ Integración con Zapier & Make
OmniWatchGuard se conecta con Zapier, Make (Integromat) y otras plataformas de automatización mediante un Webhook personalizado (planes Pro y Agency). Pegas la URL del webhook al crear el monitor.
Zapier
5000+ appsConecta las alertas de OmniWatchGuard con Gmail, Slack, Google Sheets, Notion, Airtable, Trello y más de 5000 aplicaciones.
En Zapier, elige Trigger: Webhooks by Zapier → Catch Hook
Zapier genera una URL como https://hooks.zapier.com/hooks/catch/...
Al crear un monitor, en la sección Webhook personalizado, pega la URL de Zapier.
Espera la primera detección o prueba desde el panel. Zapier recibe los datos automáticamente.
Make (Integromat)
1500+ appsAutomatiza flujos de trabajo complejos con Make - envía alertas a WhatsApp, actualiza hojas de cálculo, crea tickets de Jira o notifica a tu equipo.
En Make, añade un módulo Webhooks → Custom Webhook como disparador.
Make genera una URL como https://hook.eu1.make.com/...
Al crear un monitor, en la sección Webhook personalizado, pega la URL de Make.
Envía una prueba - Make detecta automáticamente la estructura JSON y la pone disponible en tu escenario.
Ejemplos populares de automatización
Cuando baja el precio - notificación en Slack + registro en Google Sheets
Cuando vuelve al stock - correo automático a clientes o SMS vía Twilio
Cuando cambia la página de un competidor - nueva tarea en Trello o Notion
Cuando el SSL caduca en 14 días - ticket automático en Jira + correo al equipo dev
Cuando cambia el title o la meta description - notificación en Microsoft Teams
Con cada cambio - registro en Airtable para informes semanales
Webhook Payload
En cada cambio importante o crítico, OmniWatchGuard envía una solicitud POST con Content-Type: application/json a tu URL. Los cambios menores solo se registran en el dashboard.
{
"event": "change_detected",
"monitor_id": 42,
"monitor_name": "Competitor A prices",
"url": "https://competitor.com/product",
"type": "price",
"summary": "Price dropped from 149.99 to 129.99 (-13%)",
"severity": "major",
"detected_at": "2026-04-29T10:23:45.000Z"
}{
"event": "ssl_expiry_warning",
"monitor_id": 15,
"monitor_name": "SSL Monitor - site.com",
"url": "https://site.com",
"hostname": "site.com",
"ssl_days_left": 12,
"ssl_expires_at": "2026-05-11T00:00:00.000Z",
"ssl_issuer": "Lets Encrypt",
"ssl_error": null,
"detected_at": "2026-04-29T06:00:00.000Z"
}Campos disponibles
| Campo | Tipo | Descripción |
|---|---|---|
| event | string | change_detected o ssl_expiry_warning |
| monitor_id | integer | ID del monitor en OmniWatchGuard |
| monitor_name | string | Nombre dado al monitor |
| url | string | URL monitorizada |
| type | string | Tipo de monitor: text, price, stock, seo, ssl, css, api |
| summary | string | Resumen IA del cambio detectado |
| severity | string | minor, major o critical |
| detected_at | string | Fecha y hora de detección en formato ISO 8601 |
Usa el campo severity como filtro - envía un correo solo si severity = critical. En Make puedes crear lógica condicional compleja basada en type y severity.
