curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Webhooks.Retrieve(ctx, "22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().webhooks().retrieve("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->webhooks->retrieve('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.Webhooks.RetrieveAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
"request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-15T09:21:18.412345Z"
}Récupérer la livraison webhook d'une session : API Didit
Récupérez une livraison webhook de session Didit : URL, réponse HTTP de votre endpoint, en-têtes de signature et corps JSON exact envoyé.
curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Webhooks.Retrieve(ctx, "22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().webhooks().retrieve("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->webhooks->retrieve('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.Webhooks.RetrieveAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
"request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-15T09:21:18.412345Z"
}request_body est celui décrit dans Webhooks, et les en-têtes sont ceux présentés dans vérification de signature. Pour renvoyer la livraison, utilisez Renvoyer la livraison du webhook de session.Autorisations
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.
Paramètres de chemin
UUID de la session de vérification, utilisateur (KYC) ou entreprise (KYB) : le session_id renvoyé par POST /v3/session/. Le serveur le résout pour les deux types de session.
Doit être un UUID valide. La route ne correspond qu'aux UUID bien formés ; une valeur malformée est donc rejetée par le routeur d'URL avant l'exécution de tout code d'application et la réponse est une page HTML 404 plutôt que l'enveloppe JSON {"detail": ...} illustrée ci-dessous.
UUID de la livraison : le uuid d'une entrée renvoyée par GET /v3/session/{sessionId}/webhooks/. Il doit appartenir à la session présente dans le chemin.
Réponse
La livraison, avec ses en-têtes et son corps de requête.
Une tentative de livraison de webhook enregistrée pour une session de vérification, avec les en-têtes et le corps exacts de la requête envoyée par Didit.
ID de livraison. Utilisez-le comme {webhook_uuid} pour obtenir ou renvoyer cette livraison.
La session à laquelle appartient la livraison (la session indiquée dans le chemin).
URL à laquelle la livraison a été envoyée.
Code d'état HTTP renvoyé par votre endpoint. null tant que la livraison est en file d'attente et n'a pas encore été tentée. Lorsqu'aucune réponse HTTP n'a été reçue, Didit enregistre son propre statut : 504 lorsque votre endpoint n'a pas répondu dans un délai de 5 secondes, 503 en cas d'échec de connexion, 400 lorsque l'URL a été rejetée car non sécurisée (par exemple une adresse privée ou interne), et 404 pour toute autre erreur de requête. Un code supérieur ou égal à 400 est considéré comme une livraison échouée.
Statut de la session lors de la génération de l'événement, par exemple In Progress, Approved ou Declined.
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.
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 Texte JSON (une chaîne de caractères) des en-têtes de requête envoyés par Didit : Content-Type, X-Signature, X-Signature-V2, X-Signature-Simple, X-Timestamp et User-Agent. Analysez-le avec un parseur JSON. Il contient les signatures, jamais le secret de signature.
Texte JSON (une chaîne de caractères) du payload exact envoyé par Didit, clés triées, comprenant event_id et timestamp. Analysez-le avec un parseur JSON ; voir Format du payload. Pour une clé restreinte sans media: read, les URL de médias qu'il contient sont null ; sans sessions: write, les tokens de session et les liens de vérification hébergés sont null. Un corps modifié de cette manière ne correspond plus à ses signatures. Didit n'enregistre pas le corps de réponse renvoyé par votre endpoint.
Date et heure de création de la livraison.