OmniWatchGuard logoOmniWatchGuard

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.

REST APIJSONBearer Token

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.

Encabezado
Authorization: Bearer <token>
curl - Inicio de sesión
curl -X POST https://omniwatchguard.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "email@example.com", "password": "your_password"}'
Respuesta
{"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.

Header
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.

GET/api/monitors

Devuelve la lista de todos los monitores activos de tu cuenta.

curl
curl https://omniwatchguard.com/api/monitors \
  -H "Authorization: Bearer <token>"
JavaScript
const res = await fetch("https://omniwatchguard.com/api/monitors", {
  headers: { Authorization: `Bearer ${token}` }
});
const monitors = await res.json();
Respuesta
[{"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"}]
POST/api/monitors

Crea un nuevo monitor.

ParámetroTipoRequeridoDescripción
urlstringSíURL de la página a monitorizar
namestringNoNombre del monitor
typestringNotext | price | stock | css | api | seo | ssl; con complemento de pago: tech_stack | whois
frequencyintegerNoMinutos. 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_emailintegerNo1 = activo, 0 = inactivo
notify_slackstringNoURL de webhook de Slack
notify_discordstringNoURL de webhook de Discord
notify_telegramstringNoID de chat de Telegram
notify_webhookstringNoURL de webhook personalizada
selectorstringNoSelector CSS, para el tipo css
auth_cookiestringNoCookie o token de sesión para páginas con inicio de sesión (plan Agency)
curl
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}'
Respuesta
{"success": true, "id": 42}
PATCH/api/monitors/{id}

Actualiza un monitor existente. Envía solo los campos que quieras cambiar.

curl
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/..."}'
Respuesta
{"success": true}
DELETE/api/monitors/{id}

Elimina un monitor. Esta acción es irreversible.

curl
curl -X DELETE https://omniwatchguard.com/api/monitors/42 \
  -H "Authorization: Bearer <token>"
Respuesta
{"success": true}
GET/api/monitors/changes

Devuelve los últimos cambios detectados. Parámetro opcional: ?limit=20 (por defecto 10, máx. 50).

curl
curl "https://omniwatchguard.com/api/monitors/changes?limit=20" \
  -H "Authorization: Bearer <token>"
Respuesta
[{"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"}]
GET/api/export

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 - Exportar monitores
curl "https://omniwatchguard.com/api/export?type=monitors" \
  -H "Authorization: Bearer <token>" -o monitors.csv
curl - Exportar incidencias
curl "https://omniwatchguard.com/api/export?type=incidents&monitor_id=42" \
  -H "Authorization: Bearer <token>" -o incidents.csv
GET/api/notifications

Devuelve las últimas 100 notificaciones enviadas. Parámetro opcional: ?type=email|slack|discord|telegram|webhook.

curl
curl https://omniwatchguard.com/api/notifications \
  -H "Authorization: Bearer <token>"
Respuesta
[{"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 HTTPSignificado
200Éxito
201Monitor creado
400Solicitud no válida
401No autorizado - token faltante o caducado
403Acceso denegado - límite de monitores alcanzado, canal o intervalo no incluido en el plan
404Recurso no encontrado
429Demasiadas solicitudes - consulta el encabezado Retry-After
500Error interno del servidor
Formato de error
{"error": "Error description"}

Límites

PlanMonitoresIntervalos (minutos)Canales de alerta
Trial360email, webhook, Slack, Discord, Telegram
Starter1060email
Pro10015, 30, 60email, webhook, Slack
Agencyilimitado5, 15, 30, 60email, 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+ apps

Conecta las alertas de OmniWatchGuard con Gmail, Slack, Google Sheets, Notion, Airtable, Trello y más de 5000 aplicaciones.

1
Crea un nuevo Zap

En Zapier, elige Trigger: Webhooks by Zapier → Catch Hook

2
Copia la URL del webhook

Zapier genera una URL como https://hooks.zapier.com/hooks/catch/...

3
Añádela a OmniWatchGuard

Al crear un monitor, en la sección Webhook personalizado, pega la URL de Zapier.

4
Prueba y activa

Espera la primera detección o prueba desde el panel. Zapier recibe los datos automáticamente.

🔄

Make (Integromat)

1500+ apps

Automatiza 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.

1
Crea un nuevo escenario

En Make, añade un módulo Webhooks → Custom Webhook como disparador.

2
Copia la URL

Make genera una URL como https://hook.eu1.make.com/...

3
Añádela a OmniWatchGuard

Al crear un monitor, en la sección Webhook personalizado, pega la URL de Make.

4
Determina la estructura

Envía una prueba - Make detecta automáticamente la estructura JSON y la pone disponible en tu escenario.

Ejemplos populares de automatización

📈Monitorización de precios de la competencia

Cuando baja el precio - notificación en Slack + registro en Google Sheets

🛒Alerta de stock

Cuando vuelve al stock - correo automático a clientes o SMS vía Twilio

📝Monitorización de contenido

Cuando cambia la página de un competidor - nueva tarea en Trello o Notion

🔒Alerta SSL

Cuando el SSL caduca en 14 días - ticket automático en Jira + correo al equipo dev

🔍SEO Monitor

Cuando cambia el title o la meta description - notificación en Microsoft Teams

📊Informes automáticos

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.

Payload JSON - Cambio detectado
{
  "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"
}
Payload JSON - Aviso de expiración SSL
{
  "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

CampoTipoDescripción
eventstringchange_detected o ssl_expiry_warning
monitor_idintegerID del monitor en OmniWatchGuard
monitor_namestringNombre dado al monitor
urlstringURL monitorizada
typestringTipo de monitor: text, price, stock, seo, ssl, css, api
summarystringResumen IA del cambio detectado
severitystringminor, major o critical
detected_atstringFecha y hora de detección en formato ISO 8601
💡
Consejo para Zapier/Make

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.

⚡Prueba gratis 24h
OWG
OmniWatchGuard
En linea · Responde al instante