Public TRP API for VASP-to-VASP Travel Rule data exchange.
Public TRP API for VASP-to-VASP Travel Rule data exchange.
This section describes the public endpoints of the Travel Rule Protocol (TRP) Registry API. These endpoints allow third-party systems and Virtual Asset Service Providers (VASPs) to discover, identify and register participants in the TRP network.
The API follows REST conventions and returns responses in JSON format. All requests should be made over HTTPS.
The TRP API enables VASPs to:
TRP follows global compliance standards (FATF, IVMS101) and ensures secure, encrypted communication between VASPs.
Every integration follows one simple flow:
Before calling any protected endpoint, your system must generate a JWT access token using your API Key. This ensures:
The access token is short-lived (TTL ≈ 1 hour) for security reasons. Pass it as Authorization: Bearer <jwt> on every protected endpoint.
https://trp.travel-rule.com/
http://localhost:3000/
High-level Travel Rule transfer operations from the originator VASP perspective. Transfers can flow two ways depending on what was provided at initiation:
OPEN_VASP — beneficiary VASP is reachable via Travel Address.EMAIL — beneficiary VASP is unknown; we send an email so the recipient can self-attest.Inbound endpoint. Called by an originator VASP (via Travel Address routing) to ask whether our VASP holds the beneficiary identified by beneficiaryPublicId.
If the beneficiary exists, TRP:
Transfer record,INQUIRY_RESOLUTION callback to the caller-provided callback URL with the beneficiary wallet address.Authentication is not required — request integrity is guaranteed by the originator's signed x-data-integrity header and by the inclusion of the encoded Travel Address.
Full IVMS101 originator envelope sent in callbacks. Mirrors the originatingVASP and originator fields used by the KYCAID TRP backend.
https://trp.travel-rule.com/transfers/inquiry/{beneficiaryPublicId}
http://localhost:3000/transfers/inquiry/{beneficiaryPublicId}
curl -i -X POST \
'https://trp.travel-rule.com/transfers/inquiry/{beneficiaryPublicId}' \
-H 'Content-Type: application/json' \
-H 'api-version: 3.2.1' \
-H 'request-identifier: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-d '{
"asset": "BTC",
"amount": "0.05",
"IVMS101": {
"originator": {
"originatorPersons": [
{
"naturalPerson": {
"name": {
"nameIdentifier": [
{
"primaryIdentifier": "Marley",
"secondaryIdentifier": "Bob",
"nameIdentifierType": "LEGL"
}
]
}
}
}
]
},
"originatingVASP": {
"originatingVASP": {
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "Originator VASP Ltd",
"legalPersonNameIdentifierType": "LEGL"
}
]
},
"nationalIdentification": {
"nationalIdentifier": "529900T8BM49AURSDO55",
"nationalIdentifierType": "LEIX"
}
}
}
}
},
"callback": "https://originator-vasp.com/trp/inquiry-resolution?q=0193abc4-…"
}'{ "status": true }
Inbound endpoint. Called by the beneficiary VASP to respond to a previously issued INQUIRY callback.
The request locates the transfer by the q query parameter (transfer publicId), stores the approved wallet address against the beneficiary applicant, marks the transfer as APPROVED, and queues a TRANSFER_RESOLUTION callback to the originator VASP.
Either a plain wallet address string, or a structured object with an address and an optional callback override.
Either a plain wallet address string, or a structured object with an address and an optional callback override.
Either a plain wallet address string, or a structured object with an address and an optional callback override.
https://trp.travel-rule.com/transfers/inquiryResolution
http://localhost:3000/transfers/inquiryResolution
curl -i -X POST \
'https://trp.travel-rule.com/transfers/inquiryResolution?q=497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'Content-Type: application/json' \
-d '{
"approved": "bc1qbeneficiaryaddressxx",
"callback": "https://originator-vasp.com/trp/transfer-resolution"
}'{ "status": true, "data": {} }
https://trp.travel-rule.com/transfers/txId
http://localhost:3000/transfers/txId
curl -i -X POST \
'https://trp.travel-rule.com/transfers/txId?q=497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"txId": "5b1c8f7d9a4e7c3b…"
}'{ "status": true, "data": {} }
https://trp.travel-rule.com/transfers/confirmation
http://localhost:3000/transfers/confirmation
curl -i -X POST \
'https://trp.travel-rule.com/transfers/confirmation?q=497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'Content-Type: application/json' \
-d '{
"txId": "5b1c8f7d9a4e7c3b…"
}'{ "status": true, "data": {} }