Passer au contenu principal
POST
curl
Les destinations de webhook vous permettent d’envoyer différents événements Didit vers différentes URL. Chaque destination possède son propre secret_shared_key, sa propre webhook_version et sa propre liste subscribed_events.

Comment fonctionne subscribed_events

subscribed_events est un tableau obligatoire de noms d’événements exacts. Didit n’envoie un webhook à cette destination que si le webhook_type du payload correspond à l’une des valeurs du tableau.
  • Incluez au moins un événement.
  • Utilisez uniquement les noms d’événements pris en charge ci-dessous.
  • Ajoutez chaque événement que vous souhaitez recevoir ; il n’existe pas de valeur joker comme * ou all.
  • Pour router différents domaines de produits vers différents systèmes, créez plusieurs destinations avec des listes subscribed_events différentes.

Catalogue des événements

Les familles d’événements Investigator (investigator.*) et Authentication (auth.*) sont également acceptées. Tous les événements et leurs payloads sont décrits dans Webhooks. Ensembles d’abonnement courants :
Pour des exemples de payloads et du code de signature, consultez le guide des webhooks.

Autorisations

x-api-key
string
header
requis

La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.

Corps

application/json
label
string
requis

Nom lisible par l'humain affiché dans Console → Webhooks. Permet de distinguer les destinations lorsque vous en avez plusieurs (par ex. "Prod", "Staging mirror").

Maximum string length: 255
url
string<uri>
requis

URL HTTPS qui recevra les requêtes POST. Doit être unique parmi les destinations de l'application. Utilisez un endpoint stable et renforcé : Didit réessaie les livraisons ayant échoué selon un calendrier d'intervalles progressifs.

Maximum string length: 2000
enabled
boolean
défaut:true

Lorsque la valeur est false, la destination est enregistrée mais Didit n'y enverra aucun webhook. Pratique pour les configurations de staging que vous souhaitez laisser en attente.

webhook_version
enum<string>

Version du schéma de payload que Didit enverra. v3 est le format actuel/recommandé ; les versions antérieures sont conservées pour des raisons de rétrocompatibilité avec les intégrations historiques.

Options disponibles:
v1,
v2,
v3
subscribed_events
enum<string>[]

Événements à livrer. Concrètement obligatoire : un [] explicite est rejeté avec une erreur 400, et omettre ce champ crée une destination sans aucun abonnement qui ne reçoit rien.

Minimum array length: 1

Nom d'événement webhook pris en charge. Utilisez ces chaînes exactes dans subscribed_events ; les valeurs non prises en charge sont rejetées.

Options disponibles:
status.updated,
data.updated,
user.status.updated,
user.data.updated,
business.status.updated,
business.data.updated,
activity.created,
transaction.created,
transaction.status.updated,
travel_rule.status.updated,
workflow.compliance_changed,
transaction_rule_suggestions.created,
auth.signup,
auth.login,
auth.login_failed,
auth.password_reset_requested,
auth.password_reset_completed,
auth.mfa_changed,
auth.new_device,
auth.account_locked,
investigator.report.ready,
investigator.decision.automated,
investigator.decision.overridden,
investigator.decision.contested,
investigator.question.raised,
investigator.automation.paused,
investigator.rfi.answered,
investigator.rfi.overdue,
investigator.drift.detected,
investigator.sla.breached,
investigator.qa.failed,
investigator.external.report.ready
Exemple:

Réponse

Destination créée. secret_shared_key est le secret de signature HMAC — stockez-le maintenant.

uuid
string<uuid>

Identifiant stable de la destination. À utiliser comme {destination_uuid} dans les appels ultérieurs.

label
string
url
string<uri>
enabled
boolean
webhook_version
enum<string>
Options disponibles:
v1,
v2,
v3
secret_shared_key
string

Secret de signature HMAC généré automatiquement et lié à cette destination (token de 43 caractères compatible URL). Utilisez-le pour vérifier les en-têtes de signature sur les webhooks entrants. Toujours renvoyé en intégralité aux appelants utilisant une clé API ; les utilisateurs de la Console doivent disposer de l'autorisation read:webhooks, faute de quoi ils verront une chaîne vide.

secret_last4
string

Quatre derniers caractères du secret de signature actuel de la destination, vous permettant de distinguer les secrets. Insuffisant pour vérifier une signature.

previous_secret_expires_at
string<date-time> | null

Défini pendant 24 heures après la rotation du secret de signature de la destination dans la Business Console. Jusqu'à cette échéance, chaque livraison vers la destination comporte également X-Signature-Previous, X-Signature-V2-Previous et X-Signature-Simple-Previous, générés avec le secret remplacé (voir Vérification de signature). null si aucune rotation n'a eu lieu au cours des dernières 24 heures.

subscribed_events
enum<string>[]

Filtre d'événements pour cette destination de webhook. Didit ne livre que les webhooks dont le type d'événement correspond exactement à l'une de ces valeurs — il n'y a pas d'abonnement avec caractère générique. Lorsqu'elle est envoyée, la liste doit contenir au moins un événement valide (un [] explicite est rejeté avec une erreur 400) ; une destination dont la liste est vide (champ omis lors de la création) ne reçoit rien. Lors d'une mise à jour, la liste est entièrement remplacée, jamais fusionnée.

Minimum array length: 1

Nom d'événement webhook pris en charge. Utilisez ces chaînes exactes dans subscribed_events ; les valeurs non prises en charge sont rejetées.

Options disponibles:
status.updated,
data.updated,
user.status.updated,
user.data.updated,
business.status.updated,
business.data.updated,
activity.created,
transaction.created,
transaction.status.updated,
travel_rule.status.updated,
workflow.compliance_changed,
transaction_rule_suggestions.created,
auth.signup,
auth.login,
auth.login_failed,
auth.password_reset_requested,
auth.password_reset_completed,
auth.mfa_changed,
auth.new_device,
auth.account_locked,
investigator.report.ready,
investigator.decision.automated,
investigator.decision.overridden,
investigator.decision.contested,
investigator.question.raised,
investigator.automation.paused,
investigator.rfi.answered,
investigator.rfi.overdue,
investigator.drift.detected,
investigator.sla.breached,
investigator.qa.failed,
investigator.external.report.ready
Exemple:
created_by_email
string | null

E-mail du membre de la Business Console qui a créé la destination. null pour une destination créée avec une clé API.

created_by_name
string | null

Nom du membre de la Business Console ayant créé la destination. null pour une destination créée avec une clé API.

created_at
string<date-time>
updated_at
string<date-time>
health_status
enum<string>

État de la livraison. failing : 3 événements consécutifs ou plus ont échoué lors de leur première tentative de livraison depuis la dernière réponse réussie de la destination (voir failing_streak). degraded : pas en échec, mais une tentative de livraison a échoué au cours des dernières 24 heures et aucune tentative ultérieure n'a livré cet événement ; une nouvelle tentative ou un renvoi qui le livre efface cet état. healthy : aucun des deux. Indépendant de enabled. Une tentative échouée correspond à une réponse HTTP 400 ou supérieure, ou à une absence totale de réponse.

Options disponibles:
healthy,
degraded,
failing
failing_streak
integer

Nombre d'événements consécutifs dont la première tentative de livraison a échoué depuis la dernière réponse réussie de la destination, au cours des 30 derniers jours. Les nouvelles tentatives ne sont pas comptabilisées, et toute tentative réussie, y compris une nouvelle tentative ou un renvoi, met fin à la série. 0 lorsqu'aucun événement n'a échoué depuis le dernier succès.

failing_since
string<date-time> | null

Date et heure de la première tentative infructueuse de la série d'échecs en cours (failing_streak). null lorsque failing_streak vaut 0.

last_success_at
string<date-time> | null

Date et heure auxquelles la destination a répondu pour la dernière fois à une livraison avec un statut HTTP inférieur à 400, au cours des 30 derniers jours. null si ce n'est pas le cas dans cet intervalle.

environment
enum<string>

Environnement de l'application propriétaire de la destination.

Options disponibles:
live,
sandbox
summary
object

Métriques de livraison pour les derniers metrics_window_days (30) jours. last_delivery_at correspond à la tentative la plus récente, quelle que soit la date à laquelle elle a été effectuée.

Dernière modification le 7 novembre 2026