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: Travel Rule 경로
Didit 네트워크와 Travel Rule VASP 디렉터리를 필터로 검색하고, 각 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."
]
}인증
Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본 키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며 특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나 만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된 IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를 벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write 권한이 없는 키는 세션 링크와 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