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ディレクトリ検索API:トラベルルールのルート
DiditのAPIで、トラベルルールのVASPディレクトリと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キーです。Business ConsoleのDevelopers -> API keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権(なし、読み取り、書き込み)、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンが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