curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/deliveries/66666666-7777-8888-9999-000000000001/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.retrieve_delivery(
"11111111-2222-3333-4444-555555555555",
"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.webhooks.destinations.retrieveDelivery(
"11111111-2222-3333-4444-555555555555",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.RetrieveDelivery(ctx, "11111111-2222-3333-4444-555555555555", "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.webhooks().destinations().retrieveDelivery("11111111-2222-3333-4444-555555555555", "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->webhooks->destinations->retrieveDelivery('11111111-2222-3333-4444-555555555555', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.retrieve_delivery(
"11111111-2222-3333-4444-555555555555",
"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.Webhooks.Destinations.RetrieveDeliveryAsync("11111111-2222-3333-4444-555555555555", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"response_time_ms": 412,
"status": "In Progress",
"webhook_type": "status.updated",
"created_at": "2026-10-15T09:21:18.412345Z",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"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\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}"
}Consultar entrega de webhook pela API
Veja uma tentativa de entrega de webhook com os cabeçalhos de assinatura e o payload JSON que a Didit enviou, e o código de status do seu endpoint.
curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/deliveries/66666666-7777-8888-9999-000000000001/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.webhooks.destinations.retrieve_delivery(
"11111111-2222-3333-4444-555555555555",
"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.webhooks.destinations.retrieveDelivery(
"11111111-2222-3333-4444-555555555555",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Webhooks.Destinations.RetrieveDelivery(ctx, "11111111-2222-3333-4444-555555555555", "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.webhooks().destinations().retrieveDelivery("11111111-2222-3333-4444-555555555555", "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->webhooks->destinations->retrieveDelivery('11111111-2222-3333-4444-555555555555', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.webhooks.destinations.retrieve_delivery(
"11111111-2222-3333-4444-555555555555",
"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.Webhooks.Destinations.RetrieveDeliveryAsync("11111111-2222-3333-4444-555555555555", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"response_time_ms": 412,
"status": "In Progress",
"webhook_type": "status.updated",
"created_at": "2026-10-15T09:21:18.412345Z",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"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\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}"
}X-Signature-V2 a partir de request_body usando a secret_shared_key do destino, conforme descrito em Verificação de assinatura. Use uma chave com acesso total para isso: um corpo com valores ocultados deixa de corresponder às suas assinaturas.
Para enviar a entrega novamente, chame Reenviar entrega do destino do webhook.Autorizações
Chave de API da sua aplicação, em Developers -> API keys no Business Console. A chave principal tem acesso total. Uma chave nomeada pode ter escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a uma data de validade. 401 significa que a chave está errada, revogada ou expirada; 403 significa que nenhuma chave foi enviada, que a chave não tem acesso a este recurso ou ação, ou que a requisição veio de um endereço fora da sua lista de IPs; 404 em uma rota de sessão significa que a sessão está fora dos fluxos ou status da chave. Uma chave sem acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave sem permissão de escrita em sessões recebe links e tokens de sessão como null. Consulte https://docs.didit.me/console/api-keys.
Parâmetros de caminho
UUID do destino para o qual a entrega foi enviada.
UUID da entrega: o uuid de um item retornado por GET /v3/webhook/destinations/{destination_uuid}/deliveries/.
Resposta
A entrega, com os cabeçalhos e o corpo da requisição.
Uma tentativa de entrega a um destino do webhook, com os cabeçalhos e o corpo exatos da requisição que a Didit enviou.
ID da entrega, para as chamadas de detalhe e reenvio.
Sessão de verificação de usuário à qual o evento se refere. null para eventos de sessão de empresa, usuário, empresa, transação, Travel Rule e fluxo.
URL para a qual a entrega foi enviada: a URL do destino no momento em que o evento foi gerado.
Status HTTP que seu endpoint retornou. null enquanto a entrega está na fila e ainda não foi tentada. Quando nenhuma resposta HTTP é recebida, a Didit registra um status próprio: 504 quando seu endpoint não respondeu em 5 segundos, 503 para falha de conexão, 400 quando a URL foi recusada como insegura (por exemplo, um endereço privado ou interno) e 404 para qualquer outro erro de requisição. 400 ou acima conta como entrega com falha.
Tempo que a tentativa levou, em milissegundos. null enquanto a entrega está na fila.
x >= 0Status informado pelo evento quando ele foi gerado: o status da sessão para eventos de sessão (por exemplo, Approved ou In Review), o status da pessoa ou da empresa para eventos de usuário e de empresa, e o status da transação para eventos de transação. null para eventos que não têm status.
Nome de evento de webhook compatível. Use exatamente estas strings em subscribed_events; valores não compatíveis são rejeitados.
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 Quando a entrega foi criada.
Texto JSON (uma string) dos cabeçalhos da requisição que a Didit enviou: Content-Type, X-Signature, X-Signature-V2, X-Signature-Simple, X-Timestamp e User-Agent. Analise-o com um parser JSON. Ele contém assinaturas, nunca o segredo de assinatura.
Texto JSON (uma string) do payload exato que a Didit enviou, com as chaves ordenadas, incluindo event_id e timestamp. Analise-o com um parser JSON; consulte Formato do payload. Para uma chave com escopo sem media: read, as URLs de mídia dentro dele são null; sem sessions: write, os tokens de sessão e os links de verificação hospedados são null. Um corpo alterado dessa forma não corresponde mais às suas assinaturas. A Didit não registra o corpo da resposta que o seu endpoint retornou.