curl -X GET 'https://verification.didit.me/v3/webhook/destinations/' \
-H 'x-api-key: YOUR_API_KEY'import os
import requests
resp = requests.get(
'https://verification.didit.me/v3/webhook/destinations/',
headers={'x-api-key': os.environ['DIDIT_API_KEY']},
timeout=10,
)
resp.raise_for_status()
for dest in resp.json():
health = 'OK' if dest['error_rate_percentage'] < 5 else 'DEGRADED'
print(f"{dest['label']:30s} {dest['url']:50s} {health}")const resp = await fetch('https://verification.didit.me/v3/webhook/destinations/', {
headers: { 'x-api-key': process.env.DIDIT_API_KEY },
});
const destinations = await resp.json();
for (const d of destinations) {
console.log(d.label, d.url, `${d.error_rate_percentage}% errors`);
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/webhook/destinations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/webhook/destinations/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/webhook/destinations/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/webhook/destinations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"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",
"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,
"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."
}List Webhook Destinations
List all webhook destinations (unpaginated array, oldest first). Each row includes URL, subscribed events, and delivery health metrics. The signing secret is NOT included in the list — fetch a single destination (GET /v3/webhook/destinations/{destination_uuid}/) to read secret_shared_key.
curl -X GET 'https://verification.didit.me/v3/webhook/destinations/' \
-H 'x-api-key: YOUR_API_KEY'import os
import requests
resp = requests.get(
'https://verification.didit.me/v3/webhook/destinations/',
headers={'x-api-key': os.environ['DIDIT_API_KEY']},
timeout=10,
)
resp.raise_for_status()
for dest in resp.json():
health = 'OK' if dest['error_rate_percentage'] < 5 else 'DEGRADED'
print(f"{dest['label']:30s} {dest['url']:50s} {health}")const resp = await fetch('https://verification.didit.me/v3/webhook/destinations/', {
headers: { 'x-api-key': process.env.DIDIT_API_KEY },
});
const destinations = await resp.json();
for (const d of destinations) {
console.log(d.label, d.url, `${d.error_rate_percentage}% errors`);
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/webhook/destinations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://verification.didit.me/v3/webhook/destinations/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://verification.didit.me/v3/webhook/destinations/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/webhook/destinations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"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",
"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,
"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."
}Authorizations
Response
List of webhook destinations (unpaginated, oldest first).
Stable destination identifier; use as {destination_uuid} for update/delete.
Human-readable name shown in the Console.
Destination URL that receives POST requests with the webhook payload.
When false, Didit silently skips delivery to this destination.
Payload schema version sent to this destination. v3 is the current/recommended format.
v1, v2, v3 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 ["status.updated", "data.updated"]
Cached length of subscribed_events, useful for UI rendering.
Total delivery attempts (successful + failed) recorded for this destination.
Delivery attempts whose target responded with HTTP ≥ 400 (or did not respond).
Average target response time in milliseconds, rounded to an integer. null if no deliveries yet.
round(failed_deliveries_count / deliveries_count * 100); 0 when there are no deliveries.
Timestamp of the most recent delivery attempt (success or failure). null if never delivered.