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.
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.
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"}}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.
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.
Retourne la liste de tous les moniteurs actifs de votre compte.
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"}]Crée un nouveau moniteur.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| url | string | Oui | URL de la page à surveiller |
| name | string | Non | Nom du moniteur |
| type | string | Non | text | price | stock | css | api | seo | ssl ; avec option payante : tech_stack | whois |
| frequency | integer | Non | Minutes. 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_email | integer | Non | 1 = actif, 0 = inactif |
| notify_slack | string | Non | URL webhook Slack |
| notify_discord | string | Non | URL webhook Discord |
| notify_telegram | string | Non | ID de chat Telegram |
| notify_webhook | string | Non | URL webhook personnalisée |
| selector | string | Non | Sélecteur CSS, pour le type css |
| auth_cookie | string | Non | Cookie ou token de session pour les pages avec connexion (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}Met à jour un moniteur existant. Envoyez uniquement les champs que vous souhaitez modifier.
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}Supprime un moniteur. Cette action est irréversible.
curl -X DELETE https://omniwatchguard.com/api/monitors/42 \ -H "Authorization: Bearer <token>"
{"success": true}Retourne les derniers changements détectés. Paramètre optionnel : ?limit=20 (par défaut 10, max 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"}]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 "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
Retourne les 100 dernières notifications envoyées. Paramètre optionnel : ?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"}]Codes d'erreur
| Code HTTP | Signification |
|---|---|
| 200 | Succès |
| 201 | Moniteur créé |
| 400 | Requête invalide |
| 401 | Non autorisé - token manquant ou expiré |
| 403 | Accès refusé - limite de moniteurs atteinte, canal ou intervalle non inclus dans le plan |
| 404 | Ressource introuvable |
| 429 | Trop de requêtes - voir l'en-tête Retry-After |
| 500 | Erreur interne du serveur |
{"error": "Error description"}Limites
| Plan | Moniteurs | Intervalles (minutes) | Canaux d'alerte |
|---|---|---|---|
| Trial | 3 | 60 | email, webhook, Slack, Discord, Telegram |
| Starter | 10 | 60 | |
| Pro | 100 | 15, 30, 60 | email, webhook, Slack |
| Agency | illimité | 5, 15, 30, 60 | email, 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+ appsConnectez les alertes OmniWatchGuard avec Gmail, Slack, Google Sheets, Notion, Airtable, Trello et plus de 5000 autres applications.
Dans Zapier, choisissez Trigger : Webhooks by Zapier → Catch Hook
Zapier génère une URL comme https://hooks.zapier.com/hooks/catch/...
Lors de la création d'un moniteur, dans la section Webhook personnalisé, collez l'URL Zapier.
Attendez la première détection ou testez depuis le tableau de bord. Zapier reçoit les données automatiquement.
Make (Integromat)
1500+ appsAutomatisez des workflows complexes avec Make - envoyez des alertes vers WhatsApp, mettez à jour des tableurs, créez des tickets Jira ou notifiez votre équipe.
Dans Make, ajoutez un module Webhooks → Custom Webhook comme déclencheur.
Make génère une URL comme https://hook.eu1.make.com/...
Lors de la création d'un moniteur, dans la section Webhook personnalisé, collez l'URL Make.
Envoyez un test - Make détecte automatiquement la structure JSON et la rend disponible dans votre scénario.
Exemples d'automatisation populaires
Quand le prix baisse - notification Slack + enregistrement dans Google Sheets
Quand de retour en stock - email automatique aux clients ou SMS via Twilio
Quand la page d'un concurrent change - nouvelle tâche dans Trello ou Notion
Quand le SSL expire dans 14 jours - ticket automatique dans Jira + email à l'équipe dev
Quand le title ou la meta description change - notification dans Microsoft Teams
À 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.
{
"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"
}Champs disponibles
| Champ | Type | Description |
|---|---|---|
| event | string | change_detected ou ssl_expiry_warning |
| monitor_id | integer | ID du moniteur dans OmniWatchGuard |
| monitor_name | string | Nom donné au moniteur |
| url | string | URL surveillée |
| type | string | Type de moniteur : text, price, stock, seo, ssl, css, api |
| summary | string | Résumé IA du changement détecté |
| severity | string | minor, major ou critical |
| detected_at | string | Date et heure de détection au format ISO 8601 |
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.
