curl -X GET 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.retrieve(
"abcdef12-3456-7890-abcd-ef1234567890",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.Retrieve(ctx, "abcdef12-3456-7890-abcd-ef1234567890")
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.transactions().retrieve("abcdef12-3456-7890-abcd-ef1234567890");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->retrieve('abcdef12-3456-7890-abcd-ef1234567890');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.RetrieveAsync("abcdef12-3456-7890-abcd-ef1234567890");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "abcdef12-3456-4890-abcd-ef1234567890",
"environment": "live",
"transaction_number": 4123,
"txn_id": "your-txn-2026-05-17-001",
"txn_date": "2026-05-17T08:42:00Z",
"zone_id": "Europe/Madrid",
"transaction_type": "finance",
"action_type": "withdrawal",
"direction": "OUTBOUND",
"status": "IN_REVIEW",
"source": "LIVE",
"amount": "1500",
"currency": "EUR",
"currency_type": "fiat",
"amount_in_default_currency": "1620.45",
"default_currency_code": "USD",
"preferred_currency_amount": "1620.45",
"preferred_currency_code": "USD",
"payment_details": "Withdrawal to crypto wallet",
"payment_txn_id": null,
"score": 78,
"severity": "HIGH",
"decision_reason_code": "WALLET_HIGH_RISK",
"decision_reason_label": "Destination wallet flagged as high risk",
"vendor_data": "user-12345",
"metadata": {
"subject": {
"entity_type": "individual",
"vendor_data": "user-12345",
"full_name": "Maria Garcia",
"address": {},
"institution_details": {},
"device_context": {}
},
"counterparty": {}
},
"props": {
"order_id": "ord-9988"
},
"tags": [],
"parties": [
{
"uuid": "b1111111-2222-4333-8444-555555555555",
"role": "APPLICANT",
"entity_type": "individual",
"kind": "USER",
"vendor_data": "user-12345",
"full_name": "Maria Garcia",
"first_name": null,
"last_name": null,
"country_code": null,
"dob": null,
"address": {},
"institution_info": {},
"device": {},
"external_party_snapshot": null
}
],
"payment_methods": [],
"documents": [],
"activities": [],
"alerts": [
{
"uuid": "a7b8c9d0-1234-4abc-9def-567890abcdef",
"title": "Destination wallet flagged as high risk",
"description": "Provider risk score exceeded the configured threshold.",
"severity": "HIGH",
"status": "OPEN",
"source": "RULE",
"metadata": {},
"created_at": "2026-05-17T08:42:12Z",
"due_at": null
}
],
"rule_runs": [],
"provider_results": [],
"travel_rule": null,
"network_snapshot": null,
"remediation": null,
"action_required": null,
"cost_breakdown": null
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}获取交易 API:KYT 交易详情
通过 Didit 获取 KYT 交易详情:关联方、支付方式、警报、规则命中、Travel Rule 检查、整改链接及网络快照。
curl -X GET 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.retrieve(
"abcdef12-3456-7890-abcd-ef1234567890",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890");
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.Retrieve(ctx, "abcdef12-3456-7890-abcd-ef1234567890")
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.transactions().retrieve("abcdef12-3456-7890-abcd-ef1234567890");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->retrieve('abcdef12-3456-7890-abcd-ef1234567890');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890")
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.RetrieveAsync("abcdef12-3456-7890-abcd-ef1234567890");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "abcdef12-3456-4890-abcd-ef1234567890",
"environment": "live",
"transaction_number": 4123,
"txn_id": "your-txn-2026-05-17-001",
"txn_date": "2026-05-17T08:42:00Z",
"zone_id": "Europe/Madrid",
"transaction_type": "finance",
"action_type": "withdrawal",
"direction": "OUTBOUND",
"status": "IN_REVIEW",
"source": "LIVE",
"amount": "1500",
"currency": "EUR",
"currency_type": "fiat",
"amount_in_default_currency": "1620.45",
"default_currency_code": "USD",
"preferred_currency_amount": "1620.45",
"preferred_currency_code": "USD",
"payment_details": "Withdrawal to crypto wallet",
"payment_txn_id": null,
"score": 78,
"severity": "HIGH",
"decision_reason_code": "WALLET_HIGH_RISK",
"decision_reason_label": "Destination wallet flagged as high risk",
"vendor_data": "user-12345",
"metadata": {
"subject": {
"entity_type": "individual",
"vendor_data": "user-12345",
"full_name": "Maria Garcia",
"address": {},
"institution_details": {},
"device_context": {}
},
"counterparty": {}
},
"props": {
"order_id": "ord-9988"
},
"tags": [],
"parties": [
{
"uuid": "b1111111-2222-4333-8444-555555555555",
"role": "APPLICANT",
"entity_type": "individual",
"kind": "USER",
"vendor_data": "user-12345",
"full_name": "Maria Garcia",
"first_name": null,
"last_name": null,
"country_code": null,
"dob": null,
"address": {},
"institution_info": {},
"device": {},
"external_party_snapshot": null
}
],
"payment_methods": [],
"documents": [],
"activities": [],
"alerts": [
{
"uuid": "a7b8c9d0-1234-4abc-9def-567890abcdef",
"title": "Destination wallet flagged as high risk",
"description": "Provider risk score exceeded the configured threshold.",
"severity": "HIGH",
"status": "OPEN",
"source": "RULE",
"metadata": {},
"created_at": "2026-05-17T08:42:12Z",
"due_at": null
}
],
"rule_runs": [],
"provider_results": [],
"travel_rule": null,
"network_snapshot": null,
"remediation": null,
"action_required": null,
"cost_breakdown": null
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "Not found."
}{
"detail": "Request was throttled. Expected available in 30 seconds."
}授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
路径参数
Didit 稳定的交易 UUID(从创建/列出接口返回的 uuid,不是您的 txn_id)。
响应
完整交易详情。
单个交易的完整监控记录,由 GET /v3/transactions/{transaction_id}/ 和 POST /v3/transactions/ 返回。
Didit 稳定的交易标识符。用作后续调用的 {transaction_id}。
拥有该交易的应用的环境。sandbox 交易会被存储,但绝不会被评估、筛查、通知或计费,因此其空的 rule_runs 表示“未评估”。
live, sandbox 控制台中显示的应用范围内连续交易序号(例如 4123)。
您在创建时提供的 transaction_id(最多 128 个字符)。每个应用唯一。
交易发生的时间(来自 transaction_at;默认为提交时间)。
创建时提供的 IANA 时区标识符。
存储的顶级类别:finance、kyc、travelRule、userPlatformEvent、gamblingBet、gamblingLimitChange、gamblingBonusChange、auditTrailEvent。请注意,即使以 snake_case 提交,包含多个单词的值也会以 camelCase 形式返回。
类别内的子类型(例如 deposit、withdrawal、transfer)。未提供时默认为该类别。
相对于主体的方向。无论提交时的大小写如何,均以大写形式存储(输入时接受 in/out/inbound/outbound)。
INBOUND, OUTBOUND 当前监控裁决结果。创建交易时的状态为 APPROVED;规则可能会同步将其更改为 IN_REVIEW/DECLINED。
APPROVED, IN_REVIEW, DECLINED, AWAITING_USER 记录的生成来源:通过 API 或 SDK 提交的交易为 LIVE,通过控制台导入加载的交易为 IMPORTED。
LIVE, IMPORTED 作为十进制字符串的交易金额,已去除末尾零(例如 "1500"、"0.5"、"0.123456789012345678")。最多 18 位小数。
amount 的货币代码。接受任何 ISO 4217 字母代码(例如 EUR、USD、NGN)以及加密资产符号(例如 BTC)。建议使用当前流通的代码。并非每个接受的代码都有汇率:当该代码没有可用汇率时(例如 ISO 会计单位 XSU,或 Didit 未定价的加密资产符号),自动换算将失败,并且 preferred_currency_amount 将返回 null,除非请求提供了预先换算的 amount_in_default_currency。
fiat 或 crypto,与在 currency_kind 中提交的内容一致。
您提供的预先换算金额,为去除了末尾零的十进制数字符串。
amount 在可用时折算为应用的首选货币。
提交内容中的自由文本付款参考号或附言。
来自 payment_reference_id 的外部支付系统参考标识(例如区块链交易哈希)。
规则累计的风险评分(通常为 0–100)。数值越高 = 风险越大。
由规则/提供商设置的分类风险严重程度(UNKNOWN、LOW、MEDIUM、HIGH、CRITICAL)。在设置该值之前为 null。
UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL 当前 status 的机器可读原因。
decision_reason_code 的便于人类阅读的标签。
申请人 vendor_data 的便捷副本。
创建时提交的 subject 和 counterparty payload 快照。
您在创建时提供的 custom_properties。每个键都可以在规则条件中通过 custom_values.<key> 访问。
附加到交易的标签(手动或通过规则)。
Show child attributes
Show child attributes
交易当事方(申请人、交易对手)。
Show child attributes
Show child attributes
关联至交易的支付方式。
Show child attributes
Show child attributes
从控制台附加到交易的文件。若无则为 []。
Show child attributes
Show child attributes
活动日志条目(创建、备注、人工审核、状态变更)。
Show child attributes
Show child attributes
当前始终为空。未结警报是指状态为 IN_REVIEW 或 AWAITING_USER 的交易。
Show child attributes
Show child attributes
逐条规则的执行结果:触发了哪条规则,以及产生了怎样的评分影响。
Show child attributes
Show child attributes
原始供应商 payload(AML 筛查、区块链分析等)。
Show child attributes
Show child attributes
Travel Rule 转账或核验。在提交了 travel_rule_details 时填充,以及在启用了 Travel Rule 且创建交易时使用了 transaction_category: travelRule 时填充(即使没有 travel_rule_details,Didit 也会自行发起信息交换)。不存在转账或核验时为 null。在入账转账中,交易对手的 originator_data 和 beneficiary_data 保持掩码状态(data_masked: true),直到钱包所有权得到确认。
Show child attributes
Show child attributes
规则引擎使用的相关交易/关联方图谱快照。可以随交易提交的 network_snapshot,也可以是 Didit 从成功的 AML 钱包筛查中构建的图谱(会替换提交的快照)。两者均不存在时为 null。
Show child attributes
Show child attributes
需要重新验证时向用户提供的补救会话。已被规范字段 action_required 取代;保留以向后兼容。
Show child attributes
Show child attributes
完成此交易所需的待处理终端用户操作,若无则为 null。Didit SDK 默认会自动启动该操作,并在其完成时刷新交易。共有两种变体,通过 type 进行区分:verification_session(由规则操作创建的托管验证会话)和 wallet_ownership(为需要钱包控制权证明的 Travel Rule 转账自动生成的钱包所有权微件会话,受 auto_wallet_verification Travel Rule 设置管控)。当两者均适用时,wallet_ownership 具有更高优先级,因为它会阻断 Travel Rule 交互。
- Verification session
- Wallet ownership
Show child attributes
Show child attributes
此交易的费用:total_price 和 items,每项收费一条记录,均包含 usage_type、price、details 和 created_at。对同一笔交易重新筛查会产生一个新条目。