curl -X GET 'https://verification.didit.me/v3/travel-rule/vasps/?search=counterparty&reachable=true' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.travel_rule.list_vasps():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.travelRule.listVasps()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.TravelRule.ListVASPsAutoPaging(ctx, didit.TravelRuleListVASPsParams{})
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.travelRule().listVasps()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->travelRule->listVasps() as $item) {
print_r($item->toArray());
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.travel_rule.list_vasps.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.TravelRule.ListVaspsAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 123,
"next": "<string>",
"previous": "<string>",
"results": [
{
"id": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
"kind": "directory",
"name": "Example Counterparty VASP",
"lei": "529900EXAMPLECPTY001",
"jurisdiction": "DE",
"domains": [
"counterparty.example"
],
"reachable": true,
"aliases": [
{
"name": "Example Counterparty",
"kind": "trading_name"
}
],
"networks": [
{
"network": "GTR",
"code": "EXAMPLE01",
"listed_name": "Example Counterparty VASP",
"country": "DE",
"verified_at": "2026-10-12T09:30:00Z",
"last_seen_at": "2026-10-12T09:30:00Z",
"source": "staff"
}
],
"routes": [
{
"rail": "GTR",
"status": "unavailable",
"reason": "no_membership",
"via": ""
},
{
"rail": "EMAIL",
"status": "available",
"reason": "",
"via": "contact"
}
],
"umbrella": null,
"entities": [],
"contacts": [
{
"id": "6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b",
"email": "travelrule@counterparty.example",
"name": "Travel Rule desk",
"source": "staff",
"scope": "platform",
"verified_at": null
}
],
"dd_status": "NOT_STARTED",
"dd_score": 62,
"dd_score_breakdown": {
"jurisdiction": {
"points": 25,
"max": 25,
"reason": "jurisdiction_not_high_risk",
"detail": "DEU is not on the high-risk jurisdiction list"
},
"verification": {
"points": 3.8,
"max": 15,
"reason": "dd_status_not_started",
"detail": "due diligence status NOT_STARTED"
},
"protocol": {
"points": 6,
"max": 15,
"reason": "email_only",
"detail": "reachable over the email fallback only"
},
"lei": {
"points": 10,
"max": 10,
"reason": "lei_valid",
"detail": "valid LEI on record"
},
"history": {
"points": 5,
"max": 10,
"reason": "no_history",
"detail": "no exchange history"
},
"essentials": {
"points": 7.5,
"max": 15,
"reason": "no_essential_checks",
"detail": "no decided essential check yet"
},
"responsiveness": {
"points": 5,
"max": 10,
"reason": "responsiveness_unknown",
"detail": "0 decided recent requests, too few to judge"
}
},
"dd_assessed_at": "2026-10-12T09:30:00Z",
"dd_score_semantic": "higher_is_safer",
"risk_level": "MEDIUM",
"responsiveness": {
"status": "UNKNOWN",
"answered": 0,
"total": 0,
"computed_at": "2026-10-12T09:30:00Z"
},
"essential_checks": {},
"reachable_rails": [
"GTR",
"EMAIL"
],
"is_didit_customer": false,
"decision": {
"decision": "APPROVED",
"reason": "Licensed in DE, questionnaire reviewed",
"decided_by": "",
"updated_at": "2026-10-14T10:05:00Z",
"inherited_from": null
},
"entity_screening": {
"id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"status": "Approved",
"total_hits": 0,
"score": null,
"screened_at": "2026-10-14T09:58:00Z",
"fresh": true,
"flagged": false
},
"questionnaires": [
{
"id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"status": "ANSWERED",
"form_version": "1",
"sent_to": "travelrule@counterparty.example",
"sent_at": "2026-09-02T08:00:00Z",
"expires_at": "2026-10-02T08:00:00Z",
"answered_at": "2026-09-04T15:20:00Z",
"valid_until": "2027-09-04T15:20:00Z",
"current": true,
"answers": {
"legal_name": "Example Counterparty VASP, incorporated in the example jurisdiction.",
"licensing": "Crypto-asset service provider authorised under MiCA by its national regulator, licence active.",
"jurisdictions": "EU and EEA. We do not serve the United States.",
"aml_program": "Written AML/CFT policy, annual independent review, last completed in March 2026.",
"compliance_officer": "Head of Compliance, reachable at compliance@counterparty.example.",
"sanctions_screening": "Customers at onboarding and daily; counterparties on every transfer.",
"transaction_monitoring": "Rule-based monitoring with analyst review; suspicious activity reports filed with the FIU.",
"travel_rule": "TRP and email; we answer requests within one business day.",
"custody": "Segregated customer wallets held with a qualified custodian, insured.",
"ownership": "No shareholder holds 25 percent or more; parent company Example Holding Group.",
"record_keeping": "Five-year record-keeping for Travel Rule and transaction data, as our regulator requires.",
"data_protection": "Encrypted at rest and in transit, stored in the EU."
}
}
]
}
]
}{
"jurisdiction": [
"Use an ISO 3166 alpha-2 or alpha-3 country code."
],
"network": [
"\"SWIFT\" is not a valid choice."
]
}واجهة البحث في دليل VASP: مسارات Travel Rule
ابحث في دليل VASP الخاص بـ Travel Rule وشبكة Didit باستخدام الفلاتر، واطّلع على المسارات التي يحتاجها تطبيقك للوصول إلى كل VASP.
curl -X GET 'https://verification.didit.me/v3/travel-rule/vasps/?search=counterparty&reachable=true' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
for item in client.travel_rule.list_vasps():
print(item)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
for await (const item of didit.travelRule.listVasps()) {
console.log(item);
}ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
iter := client.TravelRule.ListVASPsAutoPaging(ctx, didit.TravelRuleListVASPsParams{})
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.travelRule().listVasps()) {
System.out.println(item);
}<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
foreach ($didit->travelRule->listVasps() as $item) {
print_r($item->toArray());
}require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
didit.travel_rule.list_vasps.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.TravelRule.ListVaspsAsync())
{
Console.WriteLine(JsonSerializer.Serialize(item));
}{
"count": 123,
"next": "<string>",
"previous": "<string>",
"results": [
{
"id": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
"kind": "directory",
"name": "Example Counterparty VASP",
"lei": "529900EXAMPLECPTY001",
"jurisdiction": "DE",
"domains": [
"counterparty.example"
],
"reachable": true,
"aliases": [
{
"name": "Example Counterparty",
"kind": "trading_name"
}
],
"networks": [
{
"network": "GTR",
"code": "EXAMPLE01",
"listed_name": "Example Counterparty VASP",
"country": "DE",
"verified_at": "2026-10-12T09:30:00Z",
"last_seen_at": "2026-10-12T09:30:00Z",
"source": "staff"
}
],
"routes": [
{
"rail": "GTR",
"status": "unavailable",
"reason": "no_membership",
"via": ""
},
{
"rail": "EMAIL",
"status": "available",
"reason": "",
"via": "contact"
}
],
"umbrella": null,
"entities": [],
"contacts": [
{
"id": "6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b",
"email": "travelrule@counterparty.example",
"name": "Travel Rule desk",
"source": "staff",
"scope": "platform",
"verified_at": null
}
],
"dd_status": "NOT_STARTED",
"dd_score": 62,
"dd_score_breakdown": {
"jurisdiction": {
"points": 25,
"max": 25,
"reason": "jurisdiction_not_high_risk",
"detail": "DEU is not on the high-risk jurisdiction list"
},
"verification": {
"points": 3.8,
"max": 15,
"reason": "dd_status_not_started",
"detail": "due diligence status NOT_STARTED"
},
"protocol": {
"points": 6,
"max": 15,
"reason": "email_only",
"detail": "reachable over the email fallback only"
},
"lei": {
"points": 10,
"max": 10,
"reason": "lei_valid",
"detail": "valid LEI on record"
},
"history": {
"points": 5,
"max": 10,
"reason": "no_history",
"detail": "no exchange history"
},
"essentials": {
"points": 7.5,
"max": 15,
"reason": "no_essential_checks",
"detail": "no decided essential check yet"
},
"responsiveness": {
"points": 5,
"max": 10,
"reason": "responsiveness_unknown",
"detail": "0 decided recent requests, too few to judge"
}
},
"dd_assessed_at": "2026-10-12T09:30:00Z",
"dd_score_semantic": "higher_is_safer",
"risk_level": "MEDIUM",
"responsiveness": {
"status": "UNKNOWN",
"answered": 0,
"total": 0,
"computed_at": "2026-10-12T09:30:00Z"
},
"essential_checks": {},
"reachable_rails": [
"GTR",
"EMAIL"
],
"is_didit_customer": false,
"decision": {
"decision": "APPROVED",
"reason": "Licensed in DE, questionnaire reviewed",
"decided_by": "",
"updated_at": "2026-10-14T10:05:00Z",
"inherited_from": null
},
"entity_screening": {
"id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"status": "Approved",
"total_hits": 0,
"score": null,
"screened_at": "2026-10-14T09:58:00Z",
"fresh": true,
"flagged": false
},
"questionnaires": [
{
"id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"status": "ANSWERED",
"form_version": "1",
"sent_to": "travelrule@counterparty.example",
"sent_at": "2026-09-02T08:00:00Z",
"expires_at": "2026-10-02T08:00:00Z",
"answered_at": "2026-09-04T15:20:00Z",
"valid_until": "2027-09-04T15:20:00Z",
"current": true,
"answers": {
"legal_name": "Example Counterparty VASP, incorporated in the example jurisdiction.",
"licensing": "Crypto-asset service provider authorised under MiCA by its national regulator, licence active.",
"jurisdictions": "EU and EEA. We do not serve the United States.",
"aml_program": "Written AML/CFT policy, annual independent review, last completed in March 2026.",
"compliance_officer": "Head of Compliance, reachable at compliance@counterparty.example.",
"sanctions_screening": "Customers at onboarding and daily; counterparties on every transfer.",
"transaction_monitoring": "Rule-based monitoring with analyst review; suspicious activity reports filed with the FIU.",
"travel_rule": "TRP and email; we answer requests within one business day.",
"custody": "Segregated customer wallets held with a qualified custodian, insured.",
"ownership": "No shareholder holds 25 percent or more; parent company Example Holding Group.",
"record_keeping": "Five-year record-keeping for Travel Rule and transaction data, as our regulator requires.",
"data_protection": "Encrypted at rest and in transit, stored in the EU."
}
}
]
}
]
}{
"jurisdiction": [
"Use an ISO 3166 alpha-2 or alpha-3 country code."
],
"network": [
"\"SWIFT\" is not a valid choice."
]
}التفويضات
مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.
معلمات الاستعلام
جزء من الاسم أو الاسم المستعار (غير حساس لحالة الأحرف)، أو كود LEI محدد، أو نطاق (example.com أو رابط URL عليه). يتطابق أعضاء شبكة Didit بناءً على اسمهم القانوني أو كود LEI أو نطاق بريد الامتثال الإلكتروني الخاص بهم.
255فقط إدخالات الدليل المدرجة حاليًا في دليل أعضاء الشبكة.
GTR, TRUST, VERIFYVASP, SYGNA, TRISA رمز الدولة بصيغة ISO 3166 alpha-2 أو alpha-3. يُرجع 400 لأي شيء آخر.
true: فقط جهات VASP التي يمتلك تطبيقك مساراً متاحاً إليها (بما في ذلك أعضاء شبكة Didit). false: فقط إدخالات الدليل التي لا يمكنه الوصول إليها اليوم.
إدخالات الدليل فقط، أو أعضاء شبكة Didit فقط.
directory, didit فقط إدخالات الدليل التي يكون risk_level لها ضمن هذا النطاق. لا يتطابق أعضاء شبكة Didit، الذين لم تُحتسب درجاتهم، مطلقًا.
LOW, MEDIUM, HIGH فقط إدخالات الدليل التي تكون قيمة responsiveness.status لها مساوية لهذه القيمة. لا يطابق أعضاء شبكة Didit هذا الشرط مطلقًا.
RESPONSIVE, UNRESPONSIVE, UNKNOWN x >= 1x >= 0