Skip to main content
POST
curl
Didit’s Travel Rule end-user link API issues a link for the user to complete their wallet or counterparty choice and can email it to their recorded address. Send {"channel": "link"} to copy a link, or {"channel": "email"} to also attempt email delivery. Omitting channel defaults to link. Email uses the end user’s Didit-record address and their verification-session language when available. You cannot supply an arbitrary recipient. The API requires write access to transactions and an outbound transfer in AWAITING_COUNTERPARTY, COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, UNCONFIRMED_OWNERSHIP or ON_HOLD. Other states return 409; an unknown transaction or missing transfer returns 404. The response contains end_user_link, expires_at, emailed_to and email_available. A new link revokes previous open end-user links for that transfer. Share it only with the intended end user. When no recorded email exists, channel: email returns 409 with code: end_user_email_missing; request channel: link instead. If sending fails, the API still returns a usable link with an empty emailed_to. email_available means an address exists, not that delivery succeeded. For explicit user choice during creation, see Create a transaction and the Travel Rule guide. For transfer actions, see Update a transfer.

Authorizations

x-api-key
string
header
required

Your application's API key, from Developers -> API keys in the Business Console. The primary key has full access. A named key can be scoped: none, read or write per resource, limited to some workflows or to approved sessions, to a list of IP addresses, and to an expiry date. 401 means the key is wrong, revoked or expired; 403 means no key was sent, the key has no access to this resource or action, or the request came from an address outside its IP list; 404 on a session route means the session is outside the key's workflows or statuses. A key without media access receives image, video and PDF URLs as null, and a key without sessions write receives session links and tokens as null. See https://docs.didit.me/console/api-keys.

Path Parameters

transaction_id
string<uuid>
required

Didit-stable transaction UUID that owns the transfer.

Body

application/json
channel
enum<string>
default:link

link returns a new link; email also attempts to send it to the end user's Didit-record email.

Available options:
link,
email

Response

Successful response.

New end-user link. Previous open links for this transfer are revoked.

expires_at
string<date-time>
required

Link expiry.

emailed_to
string
required

Recipient when sending succeeded, otherwise an empty string. An email failure still returns a usable link.

email_available
boolean
required

Whether the end user has an email on their Didit record.

Last modified on November 12, 2026