OmniWatchGuard logoOmniWatchGuard

Documentation API

API REST pour gérer les moniteurs et lire les notifications, avec une clé API créée dans le dashboard. Les limites de moniteurs, d'intervalles et de canaux sont celles de votre plan.

REST APIJSONBearer Token

Authentification

Toutes les requêtes nécessitent l'en-tête Authorization: Bearer. Vous pouvez utiliser une clé API (recommandé, voir la section ci-dessous) ou le token de session renvoyé par la connexion. Si l'authentification à deux facteurs est activée, la connexion demande aussi le code : utilisez donc une clé API pour vos scripts.

En-tête
Authorization: Bearer <token>
curl - Connexion
curl -X POST https://omniwatchguard.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "email@example.com", "password": "your_password"}'
Réponse
{"token": "eyJhbGciOiJIUzI1NiJ9...", "user": {"id": 1, "plan": "pro"}}

Clés API

Les clés se créent dans le dashboard, sous API Keys. Une clé commence par owg_live_ et n'est affichée qu'une seule fois, à la création. Vous pouvez avoir au maximum 5 clés par compte.

Header
Authorization: Bearer owg_live_...

Les clés API fonctionnent sur les endpoints /api/monitors (y compris /api/monitors/ID et /api/monitors/changes) et /api/notifications. Les autres endpoints, dont /api/export, n'acceptent que le token de session obtenu à la connexion.

GET/api/monitors

Retourne la liste de tous les moniteurs actifs de votre compte.

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();
Réponse
[{"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

Crée un nouveau moniteur.

ParamètreTypeRequisDescription
urlstringOuiURL de la page à surveiller
namestringNonNom du moniteur
typestringNontext | price | stock | css | api | seo | ssl ; avec option payante : tech_stack | whois
frequencyintegerNonMinutes. Starter et Essai : 60. Pro : 15, 30, 60. Agency : 5, 15, 30, 60. Par défaut 60 ; une valeur hors plan est remplacée par 60.
notify_emailintegerNon1 = actif, 0 = inactif
notify_slackstringNonURL webhook Slack
notify_discordstringNonURL webhook Discord
notify_telegramstringNonID de chat Telegram
notify_webhookstringNonURL webhook personnalisée
selectorstringNonSélecteur CSS, pour le type css
auth_cookiestringNonCookie ou token de session pour les pages avec connexion (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}'
Réponse
{"success": true, "id": 42}
PATCH/api/monitors/{id}

Met à jour un moniteur existant. Envoyez uniquement les champs que vous souhaitez modifier.

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

Supprime un moniteur. Cette action est irréversible.

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

Retourne les derniers changements détectés. Paramètre optionnel : ?limit=20 (par défaut 10, max 50).

curl
curl "https://omniwatchguard.com/api/monitors/changes?limit=20" \
  -H "Authorization: Bearer <token>"
Réponse
[{"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

Exporte les données au format CSV. Paramètres : type=monitors|incidents, optionnel monitor_id. Cet endpoint n'accepte que le token de session obtenu à la connexion, pas les clés API.

curl - Export des moniteurs
curl "https://omniwatchguard.com/api/export?type=monitors" \
  -H "Authorization: Bearer <token>" -o monitors.csv
curl - Export des incidents
curl "https://omniwatchguard.com/api/export?type=incidents&monitor_id=42" \
  -H "Authorization: Bearer <token>" -o incidents.csv
GET/api/notifications

Retourne les 100 dernières notifications envoyées. Paramètre optionnel : ?type=email|slack|discord|telegram|webhook.

curl
curl https://omniwatchguard.com/api/notifications \
  -H "Authorization: Bearer <token>"
Réponse
[{"id": 1, "type": "email", "success": 1, "error": null,
  "sent_at": "2026-03-24T09:15:00Z", "url": "https://example.com"}]

Codes d'erreur

Code HTTPSignification
200Succès
201Moniteur créé
400Requête invalide
401Non autorisé - token manquant ou expiré
403Accès refusé - limite de moniteurs atteinte, canal ou intervalle non inclus dans le plan
404Ressource introuvable
429Trop de requêtes - voir l'en-tête Retry-After
500Erreur interne du serveur
Format d'erreur
{"error": "Error description"}

Limites

PlanMoniteursIntervalles (minutes)Canaux d'alerte
Trial360email, webhook, Slack, Discord, Telegram
Starter1060email
Pro10015, 30, 60email, webhook, Slack
Agencyillimité5, 15, 30, 60email, webhook, Slack, Discord, Telegram

Les endpoints /api/monitors et /api/notifications n'ont pas de limite générale de requêtes. Sont limités par adresse IP : POST /api/auth/login à 10 requêtes par 15 minutes et POST /api/monitors/preview à 20 requêtes par heure. En cas de dépassement, vous recevez 429 avec l'en-tête Retry-After (secondes).

⚡ Intégration Zapier & Make

OmniWatchGuard se connecte à Zapier, Make (Integromat) et à d'autres plateformes d'automatisation via un Webhook personnalisé (plans Pro et Agency). Vous collez l'URL du webhook lors de la création du moniteur.

⚡

Zapier

5000+ apps

Connectez les alertes OmniWatchGuard avec Gmail, Slack, Google Sheets, Notion, Airtable, Trello et plus de 5000 autres applications.

1
Créez un nouveau Zap

Dans Zapier, choisissez Trigger : Webhooks by Zapier → Catch Hook

2
Copiez l'URL du webhook

Zapier génère une URL comme https://hooks.zapier.com/hooks/catch/...

3
Ajoutez à OmniWatchGuard

Lors de la création d'un moniteur, dans la section Webhook personnalisé, collez l'URL Zapier.

4
Testez et activez

Attendez la première détection ou testez depuis le tableau de bord. Zapier reçoit les données automatiquement.

🔄

Make (Integromat)

1500+ apps

Automatisez des workflows complexes avec Make - envoyez des alertes vers WhatsApp, mettez à jour des tableurs, créez des tickets Jira ou notifiez votre équipe.

1
Créez un nouveau scénario

Dans Make, ajoutez un module Webhooks → Custom Webhook comme déclencheur.

2
Copiez l'URL

Make génère une URL comme https://hook.eu1.make.com/...

3
Ajoutez à OmniWatchGuard

Lors de la création d'un moniteur, dans la section Webhook personnalisé, collez l'URL Make.

4
Déterminez la structure

Envoyez un test - Make détecte automatiquement la structure JSON et la rend disponible dans votre scénario.

Exemples d'automatisation populaires

📈Surveillance des prix concurrents

Quand le prix baisse - notification Slack + enregistrement dans Google Sheets

🛒Alerte de stock

Quand de retour en stock - email automatique aux clients ou SMS via Twilio

📝Surveillance de contenu

Quand la page d'un concurrent change - nouvelle tâche dans Trello ou Notion

🔒Alerte SSL

Quand le SSL expire dans 14 jours - ticket automatique dans Jira + email à l'équipe dev

🔍SEO Monitor

Quand le title ou la meta description change - notification dans Microsoft Teams

📊Rapports automatiques

À chaque changement - enregistrement dans Airtable pour rapports hebdomadaires

Webhook Payload

À chaque changement majeur ou critique, OmniWatchGuard envoie une requête POST avec Content-Type: application/json vers votre URL. Les changements mineurs sont seulement enregistrés dans le dashboard.

Payload JSON - Changement détecté
{
  "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 - Alerte d'expiration 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"
}

Champs disponibles

ChampTypeDescription
eventstringchange_detected ou ssl_expiry_warning
monitor_idintegerID du moniteur dans OmniWatchGuard
monitor_namestringNom donné au moniteur
urlstringURL surveillée
typestringType de moniteur : text, price, stock, seo, ssl, css, api
summarystringRésumé IA du changement détecté
severitystringminor, major ou critical
detected_atstringDate et heure de détection au format ISO 8601
💡
Astuce pour Zapier/Make

Utilisez le champ severity comme filtre - envoyez un email uniquement si severity = critical. Dans Make, vous pouvez construire une logique conditionnelle complexe basée sur type et severity.

⚡Essai gratuit 24h
OWG
OmniWatchGuard
En ligne · Reponse instantanee