curl -X GET 'https://verification.didit.me/v3/webhook/destinations/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.list()
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.list();
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.List(ctx)
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.webhooks().destinations().list();
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->list();
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.webhooks.destinations.list.each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.ListAsync();
Console.WriteLine(JsonSerializer.Serialize(result));[
{
"uuid": "11111111-2222-3333-4444-555555555555",
"label": "Production session webhooks",
"url": "https://yourapp.com/webhooks/didit",
"enabled": true,
"webhook_version": "v3",
"subscribed_events": [
"status.updated",
"data.updated"
],
"subscribed_events_count": 2,
"deliveries_count": 12453,
"failed_deliveries_count": 14,
"average_response_time_ms": 187,
"error_rate_percentage": 0,
"last_delivery_at": "2026-05-17T09:21:18Z",
"metrics_window_days": 30,
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": "2026-05-17T09:21:18Z",
"environment": "live",
"daily_points": [
{
"date": "2026-04-18",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-19",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-20",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-21",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-22",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-23",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-24",
"total_deliveries": 415,
"failed_deliveries": 9
},
{
"date": "2026-04-25",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-26",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-27",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-28",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-29",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-30",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-01",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-02",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-03",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-04",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-05",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-06",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-07",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-08",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-09",
"total_deliveries": 415,
"failed_deliveries": 5
},
{
"date": "2026-05-10",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-11",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-12",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-13",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-14",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-15",
"total_deliveries": 416,
"failed_deliveries": 0
},
{
"date": "2026-05-16",
"total_deliveries": 416,
"failed_deliveries": 0
},
{
"date": "2026-05-17",
"total_deliveries": 416,
"failed_deliveries": 0
}
],
"secret_last4": "0xnQ",
"created_by_email": null,
"created_by_name": null,
"created_at": "2026-01-04T08:00:00Z",
"updated_at": "2026-04-22T14:09:11Z"
},
{
"uuid": "22222222-3333-4444-5555-666666666666",
"label": "Staging mirror",
"url": "https://staging.yourapp.com/webhooks/didit",
"enabled": false,
"webhook_version": "v3",
"subscribed_events": [
"status.updated"
],
"subscribed_events_count": 1,
"deliveries_count": 0,
"failed_deliveries_count": 0,
"average_response_time_ms": null,
"error_rate_percentage": 0,
"last_delivery_at": null,
"metrics_window_days": 30,
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": null,
"environment": "live",
"daily_points": [
{
"date": "2026-04-18",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-19",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-20",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-21",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-22",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-23",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-24",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-25",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-26",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-27",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-28",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-29",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-30",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-01",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-02",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-03",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-04",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-05",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-06",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-07",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-08",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-09",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-10",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-11",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-12",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-13",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-14",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-15",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-16",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-17",
"total_deliveries": 0,
"failed_deliveries": 0
}
],
"secret_last4": "k9Qe",
"created_by_email": "reviewer@example.com",
"created_by_name": "Example Reviewer",
"created_at": "2026-03-12T10:15:02Z",
"updated_at": "2026-03-12T10:15:02Z"
}
]{
"detail": "You do not have permission to perform this action."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}列出 Webhook 目标 API
通过 Didit 获取全部 Webhook 目标及其 Webhook 版本、订阅事件、30 天投递指标和健康状态。按次计费。
curl -X GET 'https://verification.didit.me/v3/webhook/destinations/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.list()
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.list();
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.List(ctx)
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.webhooks().destinations().list();
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->list();
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.webhooks.destinations.list.each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.ListAsync();
Console.WriteLine(JsonSerializer.Serialize(result));[
{
"uuid": "11111111-2222-3333-4444-555555555555",
"label": "Production session webhooks",
"url": "https://yourapp.com/webhooks/didit",
"enabled": true,
"webhook_version": "v3",
"subscribed_events": [
"status.updated",
"data.updated"
],
"subscribed_events_count": 2,
"deliveries_count": 12453,
"failed_deliveries_count": 14,
"average_response_time_ms": 187,
"error_rate_percentage": 0,
"last_delivery_at": "2026-05-17T09:21:18Z",
"metrics_window_days": 30,
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": "2026-05-17T09:21:18Z",
"environment": "live",
"daily_points": [
{
"date": "2026-04-18",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-19",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-20",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-21",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-22",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-23",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-24",
"total_deliveries": 415,
"failed_deliveries": 9
},
{
"date": "2026-04-25",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-26",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-27",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-28",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-29",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-04-30",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-01",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-02",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-03",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-04",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-05",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-06",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-07",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-08",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-09",
"total_deliveries": 415,
"failed_deliveries": 5
},
{
"date": "2026-05-10",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-11",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-12",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-13",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-14",
"total_deliveries": 415,
"failed_deliveries": 0
},
{
"date": "2026-05-15",
"total_deliveries": 416,
"failed_deliveries": 0
},
{
"date": "2026-05-16",
"total_deliveries": 416,
"failed_deliveries": 0
},
{
"date": "2026-05-17",
"total_deliveries": 416,
"failed_deliveries": 0
}
],
"secret_last4": "0xnQ",
"created_by_email": null,
"created_by_name": null,
"created_at": "2026-01-04T08:00:00Z",
"updated_at": "2026-04-22T14:09:11Z"
},
{
"uuid": "22222222-3333-4444-5555-666666666666",
"label": "Staging mirror",
"url": "https://staging.yourapp.com/webhooks/didit",
"enabled": false,
"webhook_version": "v3",
"subscribed_events": [
"status.updated"
],
"subscribed_events_count": 1,
"deliveries_count": 0,
"failed_deliveries_count": 0,
"average_response_time_ms": null,
"error_rate_percentage": 0,
"last_delivery_at": null,
"metrics_window_days": 30,
"health_status": "healthy",
"failing_streak": 0,
"failing_since": null,
"last_success_at": null,
"environment": "live",
"daily_points": [
{
"date": "2026-04-18",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-19",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-20",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-21",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-22",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-23",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-24",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-25",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-26",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-27",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-28",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-29",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-04-30",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-01",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-02",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-03",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-04",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-05",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-06",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-07",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-08",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-09",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-10",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-11",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-12",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-13",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-14",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-15",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-16",
"total_deliveries": 0,
"failed_deliveries": 0
},
{
"date": "2026-05-17",
"total_deliveries": 0,
"failed_deliveries": 0
}
],
"secret_last4": "k9Qe",
"created_by_email": "reviewer@example.com",
"created_by_name": "Example Reviewer",
"created_at": "2026-03-12T10:15:02Z",
"updated_at": "2026-03-12T10:15:02Z"
}
]{
"detail": "You do not have permission to perform this action."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}目标健康状态
health_status 用于汇总目标端对投递请求的响应情况。
| 取值 | 含义 |
|---|---|
failing | 自目标端上次成功响应以来,连续有 3 个或更多事件的首次投递尝试失败。failing_streak 记录这些事件的数量,failing_since 为第一次失败的时间。 |
degraded | 未处于 failing 状态,但过去 24 小时内有一次投递尝试失败,且之后没有任何尝试成功投递该事件。重试或重新发送并成功投递该事件后,此状态会被清除。 |
healthy | 既不是 failing,也不是 degraded。 |
failing_streak。任何一次成功的尝试(包括重试或重新发送)都会结束连续失败。
health_status 与 enabled 相互独立。
投递指标和 daily_points 涵盖最近 30 天(metrics_window_days)。
daily_points 始终包含 30 条记录,每个 UTC 日一条,按从最早到最近的顺序排列。
相关内容
- 获取 Webhook 目标:读取单个目标及其签名密钥和投递摘要。
- Webhook 指南:签名验证、重试和 payload。
授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
响应
Webhook 目标列表(未分页,最早的优先)。
目标的稳定标识符;在更新/删除时用作 {destination_uuid}。
在 Console 中显示的便于人类阅读的名称。
接收包含 Webhook payload 的 POST 请求的目标 URL。
为 false 时,Didit 会静默跳过向此目标的投递。
发送至该目标的 payload 架构版本。v3 为当前/推荐格式。
v1, v2, v3 此 Webhook 目标的事件过滤器。Didit 仅投递事件类型与这些值之一完全匹配的 Webhook,不支持通配符订阅。发送时,列表必须包含至少一个有效事件(显式传入 [] 将被拒绝并返回 400);列表为空的目标(创建时省略该字段)不会接收任何内容。更新时,列表会被整体替换,绝不会进行合并。
1支持的 Webhook 事件名称。请在 subscribed_events 中使用这些完全匹配的字符串;不支持的值将被拒绝。
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 ["status.updated", "data.updated"]
已缓存的 subscribed_events 长度,便于 UI 渲染。
过去 30 天内向此目标发起的投递尝试次数(包括重试)。
过去 30 天内该目标以 HTTP 400 或更高状态码响应、或未作响应(超时、连接被拒或地址被屏蔽)的投递尝试次数。
过去 30 天内的平均响应时间(毫秒),四舍五入为整数。在该时间窗口内没有投递时为 null。
过去 30 天内的 round(failed_deliveries_count / deliveries_count * 100);无投递记录时为 0。
最近一次投递尝试的时间戳(成功或失败)。如果从未投递则为 null。
deliveries_count、failed_deliveries_count、average_response_time_ms、error_rate_percentage 和 daily_points 所覆盖的时间窗口长度(天)。始终为 30。
投递健康状态。failing:自该目标上次成功响应以来,已有 3 个或更多连续事件在首次投递尝试时失败(参见 failing_streak)。degraded:非 failing 状态,但在过去 24 小时内有一次投递尝试失败,且后续没有尝试成功投递该事件;成功投递该事件的重试或重新发送会清除此状态。healthy:均非上述情况。独立于 enabled。失败的尝试是指响应 HTTP 400 或以上,或者完全没有响应的尝试。
healthy, degraded, failing 在最近 30 天内,自该目标上次成功响应以来,首次投递尝试失败的连续事件数量。重试不计入,任何成功的尝试(包括重试或重新发送)都会结束该连续记录。自上次成功以来没有事件失败时为 0。
当前 failing_streak 中第一次失败尝试的时间。当 failing_streak 为 0 时为 null。
在过去 30 天内,目标上次以低于 400 的 HTTP 状态响应投递的时间。如果在此时间窗口内没有以低于 400 的 HTTP 状态响应,则为 null。
拥有该目标的应用的环境。
live, sandbox 过去 30 天内每个 UTC 天对应一个条目,按时间从早到晚排列,包含没有投递的日期。统计每一次尝试,包括重试在内。
Show child attributes
Show child attributes
目标当前签名密钥的最后四位字符,以便您区分不同的密钥。不足以用于验证签名。
创建该目标的 Business Console 成员的邮箱。通过 API 密钥创建的目标为 null。
创建该目标的 Business Console 成员姓名。使用 API 密钥创建的目标为 null。