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.applicantFormPath, and let the applicant complete the flow on a public hosted form (no JWT required for applicant endpoints).See the Satoshi Test Guide for the full end-to-end walkthrough.
CREATED → AWAITING_PAYMENT → PENDING_CONFIRMATIONS → VERIFIED (or FAILED / EXPIRED).
Supported networks: bitcoin, ethereum, trc20.
Returns the declarative schema for the operator setup form (network, optional wallet address, optional applicant link).
Use this to render your own dashboard UI before calling POST /forms/satoshi-test/sessions.
https://trp.travel-rule.com/forms/satoshi-test/operator-schema
http://localhost:3000/forms/satoshi-test/operator-schema
curl -i -X GET \
https://trp.travel-rule.com/forms/satoshi-test/operator-schema \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "status": true, "data": { "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "handler": "SATOSHI_TEST", "schema": { … } } }
Creates a wallet verification session and returns an applicantFormPath you can share with the end user.
If walletAddress is omitted, the applicant must claim their wallet on the public form before payment instructions are shown.
See the Satoshi Test Guide.
https://trp.travel-rule.com/forms/satoshi-test/sessions
http://localhost:3000/forms/satoshi-test/sessions
curl -i -X POST \
https://trp.travel-rule.com/forms/satoshi-test/sessions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"values": {
"network": "bitcoin"
}
}'{ "status": true, "data": { "publicId": "f72dfe8e-6cfd-43c2-b1cb-95adbf313789", "status": "CREATED", "network": "BITCOIN", "walletAddress": "string", "tokenContract": "string", "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "applicantFormPath": "string", "instructions": { … }, "payment": { … }, "provider": "string", "failureReason": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "verifiedAt": "2019-08-24T14:15:22Z", "events": [ … ] } }
Public endpoint — no authentication required.
Returns the current applicant form step (claim wallet, payment instructions, pending confirmations, or result). Poll at pollIntervalMs until session.status is terminal (VERIFIED, FAILED, or EXPIRED).
By default TRP refreshes payment status from the blockchain provider on each call (respecting cooldown). Pass sync=false for a read-only response.
https://trp.travel-rule.com/forms/{formPublicId}/public/{sessionPublicId}
http://localhost:3000/forms/{formPublicId}/public/{sessionPublicId}
curl -i -X GET \
'https://trp.travel-rule.com/forms/{formPublicId}/public/{sessionPublicId}?sync=true'{ "status": true, "data": { "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "sessionPublicId": "cfed3640-33e9-48a9-9a2f-40ee729a1138", "handler": "SATOSHI_TEST", "schema": { … }, "values": { … }, "pollIntervalMs": 8000, "session": { … } } }
https://trp.travel-rule.com/forms/{formPublicId}/public/{sessionPublicId}/claim
http://localhost:3000/forms/{formPublicId}/public/{sessionPublicId}/claim
curl -i -X POST \
'https://trp.travel-rule.com/forms/{formPublicId}/public/{sessionPublicId}/claim' \
-H 'Content-Type: application/json' \
-d '{
"walletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"email": "applicant@example.com"
}'{ "status": true, "data": { "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "sessionPublicId": "cfed3640-33e9-48a9-9a2f-40ee729a1138", "handler": "SATOSHI_TEST", "schema": { … }, "values": { … }, "pollIntervalMs": 8000, "session": { … } } }
Lower-level alternative to POST /forms/satoshi-test/sessions.
Requires walletAddress upfront. Does not return an applicant form path unless the session is linked to a form.
https://trp.travel-rule.com/wallet-verification/sessions
http://localhost:3000/wallet-verification/sessions
curl -i -X POST \
https://trp.travel-rule.com/wallet-verification/sessions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"network": "bitcoin",
"walletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}'{ "status": true, "data": { "publicId": "f72dfe8e-6cfd-43c2-b1cb-95adbf313789", "status": "CREATED", "network": "BITCOIN", "walletAddress": "string", "tokenContract": "string", "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "applicantFormPath": "string", "instructions": { … }, "payment": { … }, "provider": "string", "failureReason": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "verifiedAt": "2019-08-24T14:15:22Z", "events": [ … ] } }
Returns the current session status for your VASP backend. When the session is not in a terminal state, TRP syncs with the blockchain provider (unless sync=false).
Use this to track verification progress after sharing the applicant link or when integrating without the hosted form.
https://trp.travel-rule.com/wallet-verification/sessions/{publicId}
http://localhost:3000/wallet-verification/sessions/{publicId}
curl -i -X GET \
'https://trp.travel-rule.com/wallet-verification/sessions/{publicId}?sync=true' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "status": true, "data": { "publicId": "f72dfe8e-6cfd-43c2-b1cb-95adbf313789", "status": "CREATED", "network": "BITCOIN", "walletAddress": "string", "tokenContract": "string", "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "applicantFormPath": "string", "instructions": { … }, "payment": { … }, "provider": "string", "failureReason": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "verifiedAt": "2019-08-24T14:15:22Z", "events": [ … ] } }
https://trp.travel-rule.com/wallet-verification/sessions/{publicId}/refresh
http://localhost:3000/wallet-verification/sessions/{publicId}/refresh
curl -i -X POST \
'https://trp.travel-rule.com/wallet-verification/sessions/{publicId}/refresh' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "status": true, "data": { "publicId": "f72dfe8e-6cfd-43c2-b1cb-95adbf313789", "status": "CREATED", "network": "BITCOIN", "walletAddress": "string", "tokenContract": "string", "formPublicId": "58239a02-25f4-4b8b-965f-b5b285bba5a3", "applicantFormPath": "string", "instructions": { … }, "payment": { … }, "provider": "string", "failureReason": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "verifiedAt": "2019-08-24T14:15:22Z", "events": [ … ] } }