Configurez des rappels HTTP pour envoyer les événements Level à vos propres systèmes en temps réel. Lorsque quelque chose se produit dans Level — une nouvelle alerte est levée, un appareil est ajouté, un groupe est mis à jour — Level envoie une requête POST à l'URL que vous spécifiez, pour que vous puissiez réagir dans vos propres outils sans interroger l'API.
Pour la documentation complète de l'API et les schémas de charge utile par événement, consultez la documentation des développeurs Level.
⚙️ CONDITIONS PRÉALABLES
Un point de terminaison HTTPS accessible publiquement prêt à recevoir des requêtes POST avec un corps JSON.
Accès administrateur à votre organisation Level.
Paramètres des webhooks
Accédez à Paramètres → Webhooks. La page comporte deux onglets :
Webhooks — vos webhooks configurés
Requêtes — le journal de livraison pour toutes les requêtes sortantes
Création d'un webhook
1. Cliquez sur + Ajouter webhook (en haut à droite) ou + Créer webhook (état vide).
2. Entrez l'URL de destination. C'est là que Level postera les données d'événement. Utilisez HTTPS.
3. (Optionnel) Entrez un Secret. Level l'utilise pour signer chaque requête sortante afin que votre point de terminaison puisse vérifier que la charge utile provient de Level.
💡 CONSEIL : Générez votre secret avec un gestionnaire de mots de passe ou openssl rand -hex 32. Utilisez une chaîne aléatoire à haute entropie.
⚠️ AVERTISSEMENT : Le secret ne peut pas être visualisé à nouveau après l'enregistrement. Copiez-le quelque part avant de cliquer sur Ajouter webhook — vous en aurez besoin dans le code de votre point de terminaison pour vérifier les signatures.
4. Le bouton Activé est activé par défaut. Laissez-le activé pour commencer à recevoir les événements immédiatement. Désactivez-le pour suspendre la livraison sans supprimer le webhook.
5. Sous Événements à envoyer, choisissez ce qui déclenche ce webhook :
Envoyer tous les types d'événements — Level envoie tous les types d'événements, y compris les nouveaux ajoutés à l'avenir.
Sélectionner les types à envoyer — choisissez dans la liste ci-dessous.
Types d'événements disponibles
Événement | Quand il se déclenche |
Alerte active | Une nouvelle alerte est levée sur un appareil |
Alerte résolue | Une alerte existante est résolue |
Appareil créé | Un nouvel appareil est ajouté à votre compte |
Appareil supprimé | Un appareil est supprimé de votre compte |
Appareil mis à jour | Les données ou la configuration d'un appareil existant changent |
Groupe créé | Un nouveau groupe d'appareils est créé |
Groupe supprimé | Un groupe d'appareils est définitivement supprimé |
Groupe mis à jour | Le nom ou la configuration d'un groupe change |
ℹ️ REMARQUE : Si vous utilisez Sélectionner les types à envoyer, les nouveaux types d'événements ajoutés à Level à l'avenir ne seront pas inclus automatiquement. Basculez sur Envoyer tous les types d'événements si vous souhaitez une livraison compatible avec les versions futures.
6. Cliquez sur Ajouter webhook pour enregistrer.
Structure de la charge utile
Chaque livraison de webhook — quel que soit le type d'événement — utilise la même enveloppe JSON :
{
"event_type": "device_created",
"event_id": "a3f1b2c4-...",
"occurred_at": "2026-03-13T18:30:00Z",
"data": { ... }
}Champ | Type | Description |
| chaîne | L'un des 8 types d'événements listés ci-dessus |
| UUID | Unique par événement ; stable lors des tentatives — utilisez-le pour dédupliquer |
| Date/heure ISO 8601 (UTC) | Quand l'événement a été généré |
| objet | Charge utile spécifique à la ressource pour cet événement |
💡 CONSEIL : Utilisez event_id pour rendre votre point de terminaison idempotent. Level réessaie automatiquement les livraisons échouées, de sorte que le même événement peut arriver plus d'une fois.
ℹ️ REMARQUE : Pour les schémas de données complets par événement data, consultez la documentation des développeurs Level.
Vérification des signatures de requête
Si vous avez configuré un secret, Level inclut un en-tête X-Level-Signature sur chaque requête. Le format est sha256=<hex_digest>.
Pour vérifier :
Prenez le corps de la requête JSON brut comme une chaîne.
Calculez
HMAC-SHA256de cette chaîne en utilisant votre secret comme clé.Préfixez le résultat avec
sha256=et comparez-le à la valeur de l'en-têteX-Level-Signature.S'ils correspondent, la requête provient de Level.
ℹ️ REMARQUE : L'en-tête X-Level-Signature n'est présent que lorsqu'un secret est configuré sur le webhook. Si vous n'en avez pas défini un, envisagez de modifier le webhook pour l'ajouter.
Examen des journaux de livraison
L'onglet Requêtes affiche chaque requête sortante que Level a tentée sur tous les webhooks configurés.
Chaque ligne affiche :
Statut — badge de succès ou d'échec
Code de statut — le code de réponse HTTP de votre point de terminaison (ou
--si la connexion a échoué avant une réponse)URL — la destination de cette requête
Cliquez sur n'importe quelle ligne pour ouvrir le panneau de détail.
Le panneau de détail affiche :
Heure de l'événement — quand l'événement s'est produit
Code de statut — réponse HTTP de votre serveur
URL compète — l'URL exacte que Level a envoyée
Message d'erreur — l'erreur de connexion ou HTTP, le cas échéant
Corps de la réponse — ce que votre point de terminaison a renvoyé (ou le résultat d'erreur brut)
Tentatives automatiques
Quand une livraison échoue, Level réessaie automatiquement — jusqu'à 3 tentatives au total. Chaque tentative attend environ 2 minutes, plus un délai aléatoire de 1 à 60 secondes. Après 3 tentatives échouées, Level arrête de réessayer et enregistre l'échec final. Aucune alerte n'est levée et le webhook n'est pas désactivé.
ℹ️ REMARQUE : Parce que Level réessaie automatiquement, le même événement peut être livré plus d'une fois. Utilisez event_id pour dédupliquer de votre côté.
Réexécution manuelle d'une requête échouée
Si vous avez corrigé le problème sous-jacent et ne souhaitez pas attendre la prochaine tentative, cliquez sur Réexécuter la requête en bas du panneau de détail. Level renvoie immédiatement la charge utile d'origine.
⚠️ AVERTISSEMENT : Réexécuter la requête envoie à nouveau la même charge utile. Si votre point de terminaison n'est pas idempotent, cela peut créer des doublons. Vérifiez event_id avant de traiter.
Gestion des webhooks existants
Dans l'onglet Webhooks, chaque webhook configuré est listé avec son URL et son statut d'activation. De là, vous pouvez modifier la configuration, l'activer ou le désactiver, ou le supprimer.
ℹ️ REMARQUE : La désactivation d'un webhook arrête la livraison sans le supprimer ou son historique de requêtes. Utilisez-le lorsque votre point de terminaison subit une maintenance.
FAQ
Quel format Level utilise-t-il pour les charges utiles de webhook ? Level envoie une requête HTTP POST avec un corps JSON. Chaque événement utilise la même enveloppe :
event_type,event_id,occurred_atetdata. L'objetdatacontient la charge utile spécifique à la ressource pour ce type d'événement. Consultez la documentation des développeurs Level pour les schémas complets par événement.Comment puis-je vérifier qu'une requête provient de Level ? Définissez un secret sur le webhook. Level inclut un en-tête
X-Level-Signatureformaté en tant quesha256=<hex_digest>sur chaque requête. Calculez HMAC-SHA256 du corps de la requête brut en utilisant votre secret, puis comparez à la valeur de l'en-tête. Consultez Vérification des signatures de requête ci-dessus.Qui peut créer et gérer les webhooks ? La configuration des webhooks — y compris le journal des requêtes — est restreinte aux administrateurs. Seuls les techniciens disposant d'un accès administrateur à votre organisation Level peuvent créer, modifier, afficher ou supprimer des webhooks.
Mes requêtes affichent toutes Échouées. Que dois-je vérifier ? Ouvrez une requête échouée dans le panneau de détail et lisez le message d'erreur et le corps de la réponse. Causes courantes : l'URL n'est pas accessible publiquement, votre point de terminaison a renvoyé un code de statut non-2xx, ou l'URL a été mal saisie. Corrigez le problème sous-jacent, puis utilisez Réexécuter la requête pour réessayer sans attendre la fenêtre de tentative automatique.
Puis-je envoyer les mêmes événements à plusieurs points de terminaison ? Oui. Créez un webhook séparé pour chaque URL de destination. Chaque webhook s'abonne aux types d'événements indépendamment.
Que se passe-t-il après 3 tentatives de livraison échouées ? Level arrête les tentatives et enregistre l'échec final. Le webhook reste activé et continuera de tenter les événements futurs — seule cette livraison spécifique est abandonnée. Vous pouvez toujours la réexécuter manuellement à partir de l'onglet Requêtes.
J'ai perdu mon secret webhook. Puis-je le récupérer ? Non. Le secret ne peut pas être visualisé après l'enregistrement du webhook. Modifiez le webhook pour définir un nouveau secret, puis mettez à jour le code de votre point de terminaison pour utiliser la nouvelle valeur.

