Documentation API

Intégrez StatusHive dans votre workflow. Gérez vos moniteurs, incidents et pages de statut par API.

Authentification

Toutes les requêtes API nécessitent un token d'accès Supabase. Connectez-vous pour obtenir votre token, puis passez-le dans le header Authorization.

# 1. Obtenez votre token d'accès curl https://statushive.app/auth/v1/token?grant_type=password \ -H "apikey: YOUR_ANON_KEY" \ -d '{"email":"you@example.com","password":"..."}' # 2. Utilisez-le dans vos requêtes curl https://statushive.app/api/monitors \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Moniteurs

get/api/monitors

Lister tous vos moniteurs. Supporte le filtrage par statut actif et la pagination.

# Response { "monitors": [...], "total": 12 }
post/api/monitors

Créer un nouveau moniteur. L'URL doit etre publique HTTP/HTTPS.

# Request body { "name": "My Site", "url": "https://example.com", "interval_seconds": 60 }
# Response { "monitor": { "id": "...", "name": "My Site", ... } }
get/api/monitors/:id

Obtenir un moniteur avec ses stats d'uptime sur 30 jours et temps de réponse moyen.

# Response { "monitor": {...}, "stats": { "uptime_30d": "99.95", "avg_response_ms": 245 } }
put/api/monitors/:id

Mettre a jour la configuration d'un moniteur (nom, URL, méthode, intervalle, etc.).

# Request body { "name": "My Site", "url": "https://example.com", "method": "GET", "active": true }
delete/api/monitors/:id

Supprimer définitivement un moniteur et toutes ses données.

# Response { "deleted": true }
get/api/monitors/:id/heartbeats

Obtenir les derniers résultats de vérification d'un moniteur.

# Response { "heartbeats": [{ "status": 1, "response_time": 234, "status_code": 200, ... }] }

Incidents

get/api/incidents

Lister tous vos incidents. Filtrage par statut avec pagination.

# Response { "incidents": [...], "total": 5 }
post/api/incidents

Créer un nouvel incident. Optionnellement inclure un message de mise à jour initial.

# Request body { "title": "API Outage", "severity": "major", "status": "investigating", "message": "Looking into it" }
get/api/incidents/:id

Obtenir un incident avec toutes ses mises à jour.

# Response { "incident": { ..., "incident_updates": [...] } }
put/api/incidents/:id

Mettre a jour le statut ou la sévérité d'un incident. Passer le statut a 'resolved' definit automatiquement resolved_at.

# Request body { "status": "resolved" }
delete/api/incidents/:id

Supprimer définitivement un incident et toutes ses mises à jour.

# Response { "deleted": true }
post/api/incidents/:id/updates

Ajouter une mise à jour a un incident. Met aussi a jour le statut de l'incident parent.

# Request body { "status": "monitoring", "message": "Fix deployed, monitoring." }

Pages de statut

get/api/status-pages

Lister toutes vos pages de statut.

# Response { "status_pages": [...] }
post/api/status-pages

Créer une nouvelle page de statut. Optionnellement lier des moniteurs par ID.

# Request body { "name": "My Status", "slug": "my-status", "monitor_ids": ["id1", "id2"] }
get/api/status-pages/:id

Obtenir une page de statut avec ses moniteurs lies.

# Response { "status_page": {...}, "monitors": [...] }
put/api/status-pages/:id

Mettre a jour les paramètres d'une page de statut ou ses moniteurs lies.

# Request body { "name": "Updated Name", "is_public": true }
delete/api/status-pages/:id

Supprimer définitivement une page de statut.

# Response { "deleted": true }

Codes d'erreur

Toutes les erreurs retournent un objet JSON avec un champ "error".

CodeSignification
400Requete invalide — paramètres manquants ou incorrects
401Non autorise — token manquant ou invalide
403Interdit — limite du plan atteinte ou ressource non possedee
404Non trouve
409Conflit — slug déjà utilise
500Erreur interne du serveur

Limites par plan

FonctionnalitéFreeProPro
Moniteurs1050200
Intervalle de vérification3 min1 min30 sec
Pages de statut15Illimité
Retention historique7 jours90 jours365 jours

Les agents IA peuvent accéder à notre référence API lisible par machine a /llms.txt