Register Wallet
curl --request POST \
--url https://testapi.kravata.co/api/wallets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"wallet": "0x1234567890abcdef1234567890abcdef12345678",
"supportedTokenId": 3,
"supportedNetworkId": 4,
"supportedCustodianId": 18
}
'import requests
url = "https://testapi.kravata.co/api/wallets"
payload = {
"wallet": "0x1234567890abcdef1234567890abcdef12345678",
"supportedTokenId": 3,
"supportedNetworkId": 4,
"supportedCustodianId": 18
}
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({
wallet: '0x1234567890abcdef1234567890abcdef12345678',
supportedTokenId: 3,
supportedNetworkId: 4,
supportedCustodianId: 18
})
};
fetch('https://testapi.kravata.co/api/wallets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"message": "Unauthorized"
}Wallets
Register Wallet
Registers an external wallet (an address you or one of your users control) for your company or one of your users. The wallet is created with status in_review and can be used once Kravata approves it (accepted).
Request
| Field | Type | Required | Description |
|---|---|---|---|
| Authorization | Header | Yes | Bearer <access> obtained from POST /api/token. |
| clientId | Query | Yes | Your client ID, from GET /api/infoClient. Requests without it are rejected with 401. |
| userId | Query | No | Register the wallet for one of your users instead of your company. Available for B2B2B and B2B2C clients. |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| wallet | string | Yes | Wallet address. |
| supportedTokenId | integer | Yes | Token ID from GET /api/parameters/tokens. |
| supportedNetworkId | integer | Yes | Network ID from GET /api/parameters/networks?token=…. It must be a network of the selected token. |
| supportedCustodianId | integer | Yes | Custodian ID from GET /api/parameters/custodians. For self-custodial wallets use “SIN CUSTODIO / DESCENTRALIZADA”. |
IDs can differ between test and production: always read them from the parameter endpoints of the environment you use.
Response
The registered wallet: id, wallet, supportedToken, supportedNetwork, supportedCustodian, status (in_review), isCustodial, registerDate and userId (owner).
Errors
| Status | When |
|---|---|
| 400 | Invalid body, the token is not supported on the selected network, or the wallet is already registered. |
| 401 | Missing token or clientId. |
POST
/
api
/
wallets
Register Wallet
curl --request POST \
--url https://testapi.kravata.co/api/wallets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"wallet": "0x1234567890abcdef1234567890abcdef12345678",
"supportedTokenId": 3,
"supportedNetworkId": 4,
"supportedCustodianId": 18
}
'import requests
url = "https://testapi.kravata.co/api/wallets"
payload = {
"wallet": "0x1234567890abcdef1234567890abcdef12345678",
"supportedTokenId": 3,
"supportedNetworkId": 4,
"supportedCustodianId": 18
}
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({
wallet: '0x1234567890abcdef1234567890abcdef12345678',
supportedTokenId: 3,
supportedNetworkId: 4,
supportedCustodianId: 18
})
};
fetch('https://testapi.kravata.co/api/wallets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"message": "Unauthorized"
}Authorizations
Access token from POST /api/token (valid 5 minutes).
Body
application/json
Response
401 - application/json
Unauthorized

