curl -X POST 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001/resend' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.resend(
"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.resend(
"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.Resend(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().resend("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->resend('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.resend(
"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.ResendAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000004",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 200,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"b8eb1e376517ee0cad8ba98ff7f8fd35fc72eca231000963a96a335f82328835\", \"X-Signature-V2\": \"9efd2ce9ed1303e1d05273ef9608a59363ed9789a05253db4748b3e8e50cb109\", \"X-Signature-Simple\": \"bf3a9dc04b2c20ab539203b0cd5cca2a10f630bf62d8feb6d68d82af80f64774\", \"X-Timestamp\": \"1792159542\", \"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\":1792159542,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-16T14:05:42.330981Z"
}Kirim Ulang Webhook Sesi API
Kirim ulang webhook sesi yang tercatat ke URL yang sama dengan tanda tangan baru, lalu dapatkan pengiriman baru dan respons endpoint Anda dari Didit.
curl -X POST 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001/resend' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.resend(
"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.resend(
"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.Resend(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().resend("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->resend('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.resend(
"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.ResendAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000004",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 200,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"b8eb1e376517ee0cad8ba98ff7f8fd35fc72eca231000963a96a335f82328835\", \"X-Signature-V2\": \"9efd2ce9ed1303e1d05273ef9608a59363ed9789a05253db4748b3e8e50cb109\", \"X-Signature-Simple\": \"bf3a9dc04b2c20ab539203b0cd5cca2a10f630bf62d8feb6d68d82af80f64774\", \"X-Timestamp\": \"1792159542\", \"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\":1792159542,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-16T14:05:42.330981Z"
}event_id-nya, penerima yang melakukan deduplikasi berdasarkan event_id akan memperlakukan pengiriman ulang sebagai event yang sudah dikenalnya.Otorisasi
Kunci API aplikasi Anda, dari Developers -> API keys di Business Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat https://docs.didit.me/console/api-keys.
Parameter Path
UUID sesi verifikasi, pengguna (KYC) atau bisnis (KYB): session_id yang dikembalikan oleh POST /v3/session/. Server mencari ID tersebut di kedua jenis sesi.
Harus berupa UUID yang valid. Rute ini hanya cocok dengan UUID yang terbentuk dengan benar, sehingga nilai yang salah format akan ditolak oleh router URL sebelum kode aplikasi apa pun berjalan dan responsnya berupa halaman HTML 404, bukan envelope JSON {"detail": ...} yang ditunjukkan di bawah.
UUID pengiriman yang akan dikirim ulang: uuid dari entri yang dikembalikan oleh GET /v3/session/{sessionId}/webhooks/. Pengiriman ini harus dimiliki oleh sesi di path tersebut.
Respons
Pengiriman baru, yang sudah dicoba. response_status adalah respons yang diberikan endpoint Anda kali ini. Pengiriman asli tidak berubah.
Satu upaya pengiriman webhook yang dicatat untuk suatu sesi verifikasi, dengan header dan body permintaan yang persis dikirimkan oleh Didit.
ID pengiriman. Gunakan sebagai {webhook_uuid} untuk mengambil atau mengirim ulang pengiriman ini.
Sesi tempat pengiriman tersebut berada (sesi dalam jalur).
URL tujuan pengiriman.
Status HTTP yang dikembalikan endpoint Anda. null saat pengiriman berada dalam antrean dan belum dicoba. Ketika tidak ada jawaban HTTP yang diterima, Didit mencatat statusnya sendiri: 504 ketika endpoint Anda tidak menjawab dalam 5 detik, 503 untuk kegagalan koneksi, 400 ketika URL ditolak karena tidak aman (misalnya alamat privat atau internal), dan 404 untuk kesalahan permintaan lainnya. 400 ke atas dihitung sebagai pengiriman gagal.
Status sesi saat event dibuat, misalnya In Progress, Approved, atau Declined.
Nama event webhook yang didukung. Gunakan string persis ini di subscribed_events; nilai yang tidak didukung akan ditolak.
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 Teks JSON (string) dari header permintaan yang dikirim Didit: Content-Type, X-Signature, X-Signature-V2, X-Signature-Simple, X-Timestamp, dan User-Agent. Parse teks ini dengan parser JSON. Teks ini memuat tanda tangan, tidak pernah rahasia penandatanganan.
Teks JSON (string) dari payload persis yang dikirim Didit, kunci diurutkan, termasuk event_id dan timestamp. Parse teks ini dengan parser JSON; lihat Bentuk payload. Untuk kunci dengan cakupan tanpa media: read, URL media di dalamnya bernilai null; tanpa sessions: write, token sesi dan tautan verifikasi yang di-hosting bernilai null. Body yang diubah dengan cara tersebut tidak lagi cocok dengan tanda tangannya. Didit tidak merekam body respons yang dikembalikan endpoint Anda.
Waktu ketika pengiriman dibuat.