curl -X PATCH 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"subscribed_events": [
"status.updated",
"data.updated",
"transaction.created"
]
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.update(
"11111111-2222-3333-4444-555555555555",
enabled=False,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.update("11111111-2222-3333-4444-555555555555", {
enabled: false,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.Update(ctx, "11111111-2222-3333-4444-555555555555", didit.WebhooksDestinationsUpdateParams{
Enabled: didit.Bool(false),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WebhooksDestinationsUpdateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.webhooks().destinations().update("11111111-2222-3333-4444-555555555555", WebhooksDestinationsUpdateParams.builder()
.enabled(false)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->update('11111111-2222-3333-4444-555555555555', [
'enabled' => false,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.update(
"11111111-2222-3333-4444-555555555555",
enabled: false
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.UpdateAsync("11111111-2222-3333-4444-555555555555", new WebhooksDestinationsUpdateParams
{
Enabled = false,
});
Console.WriteLine(JsonSerializer.Serialize(result));Update Webhook Destination API
Edit a Didit webhook destination — label, URL, enabled state, version, subscribed events. Programmatic webhook ops, pay-per-call, no contracts.
curl -X PATCH 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"subscribed_events": [
"status.updated",
"data.updated",
"transaction.created"
]
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.update(
"11111111-2222-3333-4444-555555555555",
enabled=False,
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.webhooks.destinations.update("11111111-2222-3333-4444-555555555555", {
enabled: false,
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.Update(ctx, "11111111-2222-3333-4444-555555555555", didit.WebhooksDestinationsUpdateParams{
Enabled: didit.Bool(false),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.WebhooksDestinationsUpdateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.webhooks().destinations().update("11111111-2222-3333-4444-555555555555", WebhooksDestinationsUpdateParams.builder()
.enabled(false)
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->webhooks->destinations->update('11111111-2222-3333-4444-555555555555', [
'enabled' => false,
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.update(
"11111111-2222-3333-4444-555555555555",
enabled: false
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Webhooks.Destinations.UpdateAsync("11111111-2222-3333-4444-555555555555", new WebhooksDestinationsUpdateParams
{
Enabled = false,
});
Console.WriteLine(JsonSerializer.Serialize(result));Updating subscribed_events
When you send subscribed_events, provide the complete event list that should remain subscribed after the update. The array replaces the previous subscription set.
{
"subscribed_events": [
"status.updated",
"data.updated",
"transaction.created",
"transaction.status.updated"
]
}
| Event | What it represents |
|---|---|
status.updated | User Verification (KYC) or Business Verification (KYB) session status changed. |
data.updated | Session verification data changed after creation. |
user.status.updated | User entity status changed. |
user.data.updated | User entity data changed. |
business.status.updated | Business entity status changed. |
business.data.updated | Business entity data changed. |
activity.created | Accepted, but not delivered for live traffic today. |
transaction.created | Transaction created and initially evaluated. |
transaction.status.updated | Transaction status changed. |
travel_rule.status.updated | A Travel Rule exchange changed status. |
workflow.compliance_changed | A published workflow’s compliance status changed. |
transaction_rule_suggestions.created | A rule suggestion run proposed new rule changes. |
investigator.*) and Authentication (auth.*) event families are also accepted; see Webhooks for the complete list.
Use the create destination guide for detailed event descriptions and common subscription sets.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.
Body
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"]
Response
Updated webhook destination. Body has the same shape as GET /v3/webhook/destinations/{destination_uuid}/.
Set for 24 hours after the destination's signing secret is rotated in the Business Console. Until this time, every delivery to the destination also carries X-Signature-Previous, X-Signature-V2-Previous and X-Signature-Simple-Previous, made with the replaced secret (see Signature verification). null when no rotation happened in the last 24 hours.
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.