curl
curl -X GET 'https://verification.didit.me/v3/transactions/11111111-2222-3333-4444-555555555555/travel-rule/deliveries/?limit=100&offset=0' \
-H 'x-api-key: YOUR_API_KEY'import requests
url = "https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/",
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/transactions/{transaction_id}/travel-rule/deliveries/"
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/transactions/{transaction_id}/travel-rule/deliveries/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/")
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{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "11111111-2222-4333-8444-555555555555",
"kind": "SEND",
"status": "DELIVERED",
"rail": "NETWORK",
"created_at": "2026-11-01T10:00:00Z",
"delivered_at": "2026-11-01T10:00:01Z",
"detail_lines": [
"Send",
"Delivered"
]
}
]
}Travel Rule
Travel Rule 投递历史 API
通过 Didit 读取某笔交易完整的 Travel Rule 投递历史,支持分页、传输类型、消息状态和投递时间戳。
GET
/
v3
/
transactions
/
{transaction_id}
/
travel-rule
/
deliveries
/
curl
curl -X GET 'https://verification.didit.me/v3/transactions/11111111-2222-3333-4444-555555555555/travel-rule/deliveries/?limit=100&offset=0' \
-H 'x-api-key: YOUR_API_KEY'import requests
url = "https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/",
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/transactions/{transaction_id}/travel-rule/deliveries/"
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/transactions/{transaction_id}/travel-rule/deliveries/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/deliveries/")
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{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "11111111-2222-4333-8444-555555555555",
"kind": "SEND",
"status": "DELIVERED",
"rail": "NETWORK",
"created_at": "2026-11-01T10:00:00Z",
"delivered_at": "2026-11-01T10:00:01Z",
"detail_lines": [
"Send",
"Delivered"
]
}
]
}
Didit 的 Travel Rule 投递历史 API 会按从最早到最近的顺序分页,返回某笔交易的每条投递记录。
请使用具有交易读取权限的
x-api-key。transaction_id 为 Didit 交易 UUID。若交易或转账不存在,返回 404;权限不足则返回 403。
分页与排序
响应包含count、next、previous 和 results。limit 默认为 100,上限为 100;offset 默认为 0,且不得超过 1,000,000,否则返回 400。count 通常上限为 100,对于较长的历史记录,它不是可靠的总数。无论 count 为何值,都应持续跟随 next,直到其为 null。条目按创建时间排序,创建时间相同时按标识符排序。
每个条目包含 uuid、kind、status、rail、created_at、delivered_at 和 detail_lines。rail 的取值为 EMAIL、TRP、INTERNAL、NETWORK 或 null(选择前)。detail_lines 描述消息类型和状态,不包含原始错误或传输层 payload。
嵌入历史记录
交易详情 仅包含travel_rule.deliveries 中最新的 100 条记录,并按从旧到新的顺序展示。deliveries_truncated 用于说明较早的记录是否被省略。交易列表不包含这两个历史字段。现有的 delivery 字段仍然描述最新的一次投递。
有关状态含义,请参阅 投递与重试。交易对手消息 是单独的会话端点。授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
路径参数
拥有该转账的 Didit 稳定交易 UUID。
查询参数
每页条目数。默认为 100,较大的值上限为 100;超过 1,000,000 的值将返回 400。
必填范围:
1 <= x <= 1000000要跳过的条目数,最大 1,000,000。超过该值将返回 400。
必填范围:
0 <= x <= 1000000最后修改于 2026年11月12日