curl --request POST \
--url https://api.example.com/clients/link \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>"
}
'import requests
url = "https://api.example.com/clients/link"
payload = { "code": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({code: '<string>'})
};
fetch('https://api.example.com/clients/link', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"status": "provisioning",
"createdAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"baseSmartWallet": "<string>",
"kybStatus": "notStarted",
"kybApplicationId": "kyb_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"failure": {
"code": "provisioning_failed",
"message": "<string>",
"retriable": false
},
"pollUrl": "<string>",
"transferPolicy": {
"allowFiat": true,
"allowCrypto": true,
"allowThirdParty": true,
"allowEscrowThirdParty": true,
"allowSwap": true,
"allowPartnerGroupPayments": true,
"dualApproval": true,
"isFrozen": true,
"recoveryModeActivated": true
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Connect an existing account
Exchange the short-lived code the account holder approved in the HEVN sign-in window for access to their account. The account holder keeps signing their own transfers: a payout for this client answers with authorization: client and no approval, and the holder approves it in the HEVN sign-in window. Linking the same account again returns it.
curl --request POST \
--url https://api.example.com/clients/link \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>"
}
'import requests
url = "https://api.example.com/clients/link"
payload = { "code": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({code: '<string>'})
};
fetch('https://api.example.com/clients/link', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"status": "provisioning",
"createdAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"baseSmartWallet": "<string>",
"kybStatus": "notStarted",
"kybApplicationId": "kyb_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41",
"failure": {
"code": "provisioning_failed",
"message": "<string>",
"retriable": false
},
"pollUrl": "<string>",
"transferPolicy": {
"allowFiat": true,
"allowCrypto": true,
"allowThirdParty": true,
"allowEscrowThirdParty": true,
"allowSwap": true,
"allowPartnerGroupPayments": true,
"dualApproval": true,
"isFrozen": true,
"recoveryModeActivated": true
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Your own key for this write, ^[A-Za-z0-9._:-]{1,128}$. A retry with the same key replays the first answer; the same key with a different request is refused.
"po-inv-2026-114"
The client account to act for, as a cl_… id. Omit it to act as yourself.
"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Body
Short-lived code the account holder approved in the HEVN sign-in window.
1 - 4096Response
Successful Response
Stable public identifier for this account.
^(?:cl_)?[A-Za-z0-9._:\-]{1,216}$"cl_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Current account-provisioning status.
provisioning, ready, failed UTC timestamp when the account was created.
Legal or trading name of the account.
Email address associated with the account.
Phone number in international E.164 format.
Base smart-wallet address controlled by the account.
Current business-verification status.
notStarted, pending, approved, rfi, rejected Latest immutable business-verification application identifier.
^(?:kyb_)?[A-Za-z0-9._:\-]{1,216}$"kyb_9f2c1ab84d7e4f1fa3c65b0e7d9a2c41"
Provisioning failure details, when present.
Show child attributes
Show child attributes
Relative API URL to poll with this response's id in X-Hevn-Account.
Account-level controls for the ways this client may move money.
Show child attributes
Show child attributes
Was this page helpful?