API Incidents
Lisez et automatisez vos incidents via l'API Servor — créez des incidents, publiez des mises à jour et résolvez-les avec un jeton incidents:read ou incidents:write.
Lisez vos incidents et pilotez leur automatisation par programme. L'API Incidents est le seul endroit où l'API Servor fait plus que lire : vous pouvez créer des incidents, publier des mises à jour au fil de l'eau et les résoudre une fois le problème corrigé. C'est l'outil idéal pour brancher votre propre système d'alerte ou vos runbooks sur Servor.
La lecture des incidents requiert le scope incidents:read. La
création d'incidents et la publication de mises à jour requièrent
incidents:write.
/v1/incidentsScope: incidents:readList incidents
Exemple de requête
curl https://api.servor.app/v1/incidents \
-H "Authorization: Bearer sv_live_..."Exemple de réponse
[
{
"id": "uuid",
"title": "API degraded",
"status": "investigating",
"impact": "major",
"statusPageId": "uuid",
"isMaintenance": false,
"startedAt": "2026-08-20T10:00:00.000Z",
"resolvedAt": null,
"createdAt": "2026-08-20T10:00:00.000Z"
}
]/v1/incidentsScope: incidents:writeCreate an incident
Corps de la requête
titlestringrequisShort incident title.
statusinvestigating | identified | monitoring | resolvedrequisimpactnone | minor | major | criticalrequismessagestringrequisFirst update posted with the incident.
statusPageIduuidoptionnelAttach the incident to a status page.
componentIdsuuid[]optionnelAffected components.
Exemple de requête
curl -X POST https://api.servor.app/v1/incidents \
-H "Authorization: Bearer sv_live_..." \
-H "Content-Type: application/json" \
-d '{"title":"<string>","status":"<investigating | identified | monitoring | resolved>","impact":"<none | minor | major | critical>","message":"<string>"}'Exemple de réponse
{
"id": "uuid",
"title": "API degraded",
"status": "investigating"
}/v1/incidents/{id}Scope: incidents:readGet an incident with its timeline
Paramètres
iduuidpath · requisThe incident id.
Exemple de requête
curl https://api.servor.app/v1/incidents/:id \
-H "Authorization: Bearer sv_live_..."Exemple de réponse
{
"id": "uuid",
"title": "API degraded",
"status": "identified",
"impact": "major",
"statusPageId": "uuid",
"isMaintenance": false,
"startedAt": "2026-08-20T10:00:00.000Z",
"resolvedAt": null,
"createdAt": "2026-08-20T10:00:00.000Z",
"updates": [
{
"id": "uuid",
"status": "investigating",
"message": "Looking into it.",
"createdAt": "2026-08-20T10:05:00.000Z"
}
]
}/v1/incidents/{id}/updatesScope: incidents:writePost an update (resolve with status=resolved)
Paramètres
iduuidpath · requisThe incident id.
Corps de la requête
statusinvestigating | identified | monitoring | resolvedrequisUse "resolved" to close the incident.
messagestringrequisnotifySubscribersbooleanoptionnelEmail/webhook subscribers (default true).
Exemple de requête
curl -X POST https://api.servor.app/v1/incidents/:id/updates \
-H "Authorization: Bearer sv_live_..." \
-H "Content-Type: application/json" \
-d '{"status":"<investigating | identified | monitoring | resolved>","message":"<string>"}'Exemple de réponse
{
"id": "uuid",
"status": "resolved"
}Lecture ou écriture
incidents:read— lister les incidents, lire un incident et sa chronologie de mises à jour. Suffisant pour des tableaux de bord, des exports ou une copie dans vos propres outils.incidents:write— créer des incidents et publier des mises à jour (y compris celle qui les résout). Ne l'accordez qu'aux jetons qui écrivent réellement.
Moindre privilège
Si un jeton ne fait qu'afficher des incidents, donnez-lui uniquement
incidents:read. Gardez l'accès en écriture sur des jetons séparés, révocables
indépendamment. Voir les scopes.
Créer un incident
Un incident comporte un titre, un statut, un niveau d'impact et un message d'ouverture. Vous pouvez éventuellement le rattacher à une page de statut et à ses composants pour qu'il s'affiche publiquement et notifie les abonnés.
curl -X POST https://api.servor.app/v1/incidents \
-H "Authorization: Bearer sv_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Taux d'\''erreur API élevé",
"status": "investigating",
"impact": "major",
"message": "Nous enquêtons sur un pic de réponses 5xx."
}'La réponse contient l'id du nouvel incident, que vous utiliserez pour publier
des mises à jour.
Publier des mises à jour et résoudre
À mesure que la situation évolue, publiez des mises à jour sur le même incident.
Chaque mise à jour porte un status et un message ; les deux sont ajoutés à la
chronologie publique et notifient les abonnés de la page de statut rattachée.
curl -X POST https://api.servor.app/v1/incidents/inc_123/updates \
-H "Authorization: Bearer sv_live_..." \
-H "Content-Type: application/json" \
-d '{
"status": "monitoring",
"message": "Un correctif a été déployé. Nous surveillons le taux d'\''erreur."
}'Pour résoudre un incident, publiez une mise à jour dont le status vaut
resolved :
curl -X POST https://api.servor.app/v1/incidents/inc_123/updates \
-H "Authorization: Bearer sv_live_..." \
-H "Content-Type: application/json" \
-d '{
"status": "resolved",
"message": "Le taux d'\''erreur est revenu à la normale. Incident résolu."
}'Résoudre, c'est mettre à jour
Il n'existe pas d'appel « clôturer » distinct. Un incident se résout en publiant
une mise à jour dont le statut est resolved — la chronologie conserve tout
l'historique.
Incidents automatiques
Les incidents n'ont pas à être créés à la main. Servor peut en ouvrir un
automatiquement lorsqu'un moniteur bascule en down. Voir les
incidents automatiques pour le fonctionnement de
la détection et signaler un incident pour le flux
manuel dans le tableau de bord —
signaler un incident dans Servor. Quelle que soit la façon dont un incident est
ouvert, vous pouvez y publier des mises à jour et le résoudre via l'API.
Une automatisation type
Détecter le problème
Votre propre système d'alerte (ou un moniteur) détecte une anomalie.
Ouvrir un incident
POST /v1/incidents avec un titre, status: "investigating" et un niveau
d'impact, rattaché à votre page de statut.
Tenir informé
POST /v1/incidents/{id}/updates à chaque étape — identifié, en surveillance,
etc.
Résoudre
Publiez une dernière mise à jour avec status: "resolved" une fois le problème
corrigé.
Remarques
- Les mises à jour d'incident sont publiques sur la page de statut rattachée et notifient les abonnés — rédigez des messages que vos utilisateurs liront.
- Un
403signifie que votre jeton n'a pas le scope requis pour l'action :incidents:readpour lire,incidents:writepour créer ou mettre à jour. Voir les erreurs. - Un
422signifie que le payload a échoué à la validation (par exemple untitlemanquant ou unstatusinconnu) ; le champdetailsde la réponse indique lequel.