curl -X GET 'https://verification.didit.me/v3/transactions/?limit=50' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.transactions.list():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.transactions.list()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.Transactions.ListAutoPaging(ctx, didit.TransactionsListParams{})
for iter.Next() {
fmt.Printf("%+v\n", iter.Current())
}
if err := iter.Err(); err != nil {
log.Fatal(err)
}import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
for (var item : client.transactions().list()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->transactions->list() as $item) {
print_r($item->toArray());
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.transactions.list.auto_paging_each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
await foreach (var item in await client.Transactions.ListAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 1,
"next": null,
"previous": null,
"total_transactions": 1,
"results": [
{
"uuid": "abcdef12-3456-4890-abcd-ef1234567890",
"transaction_number": 4123,
"txn_id": "your-txn-2026-05-17-001",
"transaction_type": "finance",
"action_type": "withdrawal",
"status": "IN_REVIEW",
"direction": "OUTBOUND",
"amount": "1500",
"currency": "EUR",
"preferred_currency_amount": "1620.45",
"preferred_currency_code": "USD",
"payment_details": "Withdrawal to crypto wallet",
"txn_date": "2026-05-17T08:42:00Z",
"created_at": "2026-05-17T08:42:11Z",
"score": 78,
"severity": "HIGH",
"decision_reason_code": "WALLET_HIGH_RISK",
"decision_reason_label": "Destination wallet flagged as high risk",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Manual review",
"color": "#F59E0B",
"description": null,
"source": "custom"
}
],
"subject_name": "Maria Garcia",
"subject_vendor_data": "user-12345",
"counterparty_name": null,
"counterparty_vendor_data": null,
"counterparty_country": null,
"subject_country": null,
"assigned_to_name": "Alex Reviewer",
"travel_rule_status": null,
"travel_rule": null
}
]
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "GET request rate limit exceeded. You can make up to 600 requests per minute.",
"reference": "RL-00000000000040008000000000000001",
"limit": 600,
"remaining": 0,
"reset": 1794358860,
"window_seconds": 60
}List Transactions API: KYT Monitoring
Retrieve monitored Didit transactions with risk scores, severity, counterparties, tags, and screening status. Pay-per-call KYT, no contracts.
curl -X GET 'https://verification.didit.me/v3/transactions/?limit=50' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.transactions.list():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.transactions.list()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.Transactions.ListAutoPaging(ctx, didit.TransactionsListParams{})
for iter.Next() {
fmt.Printf("%+v\n", iter.Current())
}
if err := iter.Err(); err != nil {
log.Fatal(err)
}import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
for (var item : client.transactions().list()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->transactions->list() as $item) {
print_r($item->toArray());
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.transactions.list.auto_paging_each do |item|
puts item.to_h
endusing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
await foreach (var item in await client.Transactions.ListAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 1,
"next": null,
"previous": null,
"total_transactions": 1,
"results": [
{
"uuid": "abcdef12-3456-4890-abcd-ef1234567890",
"transaction_number": 4123,
"txn_id": "your-txn-2026-05-17-001",
"transaction_type": "finance",
"action_type": "withdrawal",
"status": "IN_REVIEW",
"direction": "OUTBOUND",
"amount": "1500",
"currency": "EUR",
"preferred_currency_amount": "1620.45",
"preferred_currency_code": "USD",
"payment_details": "Withdrawal to crypto wallet",
"txn_date": "2026-05-17T08:42:00Z",
"created_at": "2026-05-17T08:42:11Z",
"score": 78,
"severity": "HIGH",
"decision_reason_code": "WALLET_HIGH_RISK",
"decision_reason_label": "Destination wallet flagged as high risk",
"tags": [
{
"uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"name": "Manual review",
"color": "#F59E0B",
"description": null,
"source": "custom"
}
],
"subject_name": "Maria Garcia",
"subject_vendor_data": "user-12345",
"counterparty_name": null,
"counterparty_vendor_data": null,
"counterparty_country": null,
"subject_country": null,
"assigned_to_name": "Alex Reviewer",
"travel_rule_status": null,
"travel_rule": null
}
]
}{
"detail": "You do not have permission to perform this action."
}{
"detail": "GET request rate limit exceeded. You can make up to 600 requests per minute.",
"reference": "RL-00000000000040008000000000000001",
"limit": 600,
"remaining": 0,
"reset": 1794358860,
"window_seconds": 60
}travel_rule includes the same nullable proof request relation as transaction detail: request_id, request status, expires_at and nullable proof. Request status is separate from the proof verdict and saved transfer decision.
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.
Query Parameters
Comma-separated; a transaction matches when it meets any value. unassigned is what nobody holds yet, rules is what the rules decided on their own without a reviewer, and a member email matches the reviewer assigned to it. me is the signed-in Console reviewer, so an API key sending me gets 400.
Response
Paginated list of transaction summaries, newest first.