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": "GET request rate limit exceeded. You can make up to 600 requests per minute.",
"reference": "RL-00000000000040008000000000000001",
"limit": 600,
"remaining": 0,
"reset": 1794358860,
"window_seconds": 60
}List Webhook Destinations API
Retrieve every Didit webhook destination with its webhook version, subscribed events, 30-day delivery metrics and health status. Pay-per-call.
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": "GET request rate limit exceeded. You can make up to 600 requests per minute.",
"reference": "RL-00000000000040008000000000000001",
"limit": 600,
"remaining": 0,
"reset": 1794358860,
"window_seconds": 60
}Destination health
health_status summarizes how a destination has been answering its deliveries.
| Value | Meaning |
|---|---|
failing | 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully. failing_streak counts them and failing_since is when the first one failed. |
degraded | Not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event. A retry or resend that delivers it clears this. |
healthy | Neither of the above. |
failing_streak, and any successful attempt, including a retry or a resend, ends the streak.
health_status is independent of enabled.
The delivery metrics and daily_points cover the last 30 days (metrics_window_days).
daily_points always has 30 entries, one per UTC day, oldest first.
Related
- Get webhook destination: read one destination with its signing secret and delivery summary.
- Webhooks guide: signature verification, retries and payloads.
Authorizations
Your application's API key, from Developers -> API keys in the Business Console. The primary key has full access. A named key can be scoped: none, read or write per resource, limited to some workflows or to approved sessions, to a list of IP addresses, and to an expiry date. 401 means the key is wrong, revoked or expired; 403 means no key was sent, the key has no access to this resource or action, or the request came from an address outside its IP list; 404 on a session route means the session is outside the key's workflows or statuses. A key without media access receives image, video and PDF URLs as null, and a key without sessions write receives session links and tokens as null. See https://docs.didit.me/console/api-keys.
Response
List of webhook destinations (unpaginated, oldest first).
Event filter for this webhook destination. Didit delivers only webhooks whose event type exactly matches one of these values — there is no wildcard subscription. When sent, the list must contain at least one valid event (an explicit [] is rejected with 400); a destination whose list is empty (field omitted at create) receives nothing. On update the list is replaced wholesale, never merged.
1Supported webhook event name. Use these exact strings in subscribed_events; unsupported values are rejected.
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"]
Delivery health. failing: 3 or more consecutive events failed their first delivery attempt since the destination last answered successfully (see failing_streak). degraded: not failing, but a delivery attempt failed in the last 24 hours and no later attempt has delivered that event; a retry or resend that delivers it clears this. healthy: neither. Independent of enabled. A failed attempt is one answered with HTTP 400 or above, or not answered at all.
healthy, degraded, failing How many consecutive events failed their first delivery attempt since the destination last answered successfully, within the last 30 days. Retries are not counted, and any successful attempt, including a retry or a resend, ends the streak. 0 when no event has failed since the last success.