curl --request POST \
--url https://api.kamino.finance/ktx/kvault/withdraw \
--header 'Content-Type: application/json' \
--data '
{
"wallet": "KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9",
"kvault": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
"amount": "0.1234"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
wallet: 'KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9',
kvault: 'HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E',
amount: '0.1234'
})
};
fetch('https://api.kamino.finance/ktx/kvault/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/ktx/kvault/withdraw"
payload = {
"wallet": "KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9",
"kvault": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
"amount": "0.1234"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)false{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAEB4U90z775Z0G20Lzbx64AwbcGsJTUS+D6M2d1yQDvRL+MXyh2DY6ZPXvcFUmkblzqU7UrFcH4BAOPAPQXUWHKZS66KvlDTwMypF/H+icat/xVYNA0OvZ+RMaheXL0QJajAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9ps6fZhmN2HDYqYbzBnXEb4Pi9Sg0h5UvXVBWPj73qMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQTZCvHbiTnsNf+U2WQNV9zDJ5S7Phu2b9OuhJqE3NuUsuvLnkdJfjUAGox8/57aeYKvmQtCaruy3qoGNzwovloCBQYAAQAHAxEBAQYRAAsIDw0HAgEQEREEBgoJDgwQ8iPGiVLh8rYA4fUFAAAAAAGC6dRmw0Z9LrKw2cy+tHvb9JXuHBu0d9Dar60DX6fr5AUFLxMJAQYVBAsCBwM="
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request",
"code": "DECIMAL_TO_LAMPORTS_OVERFLOW"
}Get transaction to withdraw from a kvault
Withdraw tokens from a specified Kamino Earn Vault. An optional memo is added as an SPL memo instruction.
curl --request POST \
--url https://api.kamino.finance/ktx/kvault/withdraw \
--header 'Content-Type: application/json' \
--data '
{
"wallet": "KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9",
"kvault": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
"amount": "0.1234"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
wallet: 'KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9',
kvault: 'HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E',
amount: '0.1234'
})
};
fetch('https://api.kamino.finance/ktx/kvault/withdraw', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/ktx/kvault/withdraw"
payload = {
"wallet": "KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9",
"kvault": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
"amount": "0.1234"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)false{
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAEB4U90z775Z0G20Lzbx64AwbcGsJTUS+D6M2d1yQDvRL+MXyh2DY6ZPXvcFUmkblzqU7UrFcH4BAOPAPQXUWHKZS66KvlDTwMypF/H+icat/xVYNA0OvZ+RMaheXL0QJajAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9ps6fZhmN2HDYqYbzBnXEb4Pi9Sg0h5UvXVBWPj73qMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQTZCvHbiTnsNf+U2WQNV9zDJ5S7Phu2b9OuhJqE3NuUsuvLnkdJfjUAGox8/57aeYKvmQtCaruy3qoGNzwovloCBQYAAQAHAxEBAQYRAAsIDw0HAgEQEREEBgoJDgwQ8iPGiVLh8rYA4fUFAAAAAAGC6dRmw0Z9LrKw2cy+tHvb9JXuHBu0d9Dar60DX6fr5AUFLxMJAQYVBAsCBwM="
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request",
"code": "DECIMAL_TO_LAMPORTS_OVERFLOW"
}Body
User wallet address (base58) that will also sign the transaction
32 - 44"KUMtRazMP7vwvc2kthnGZ9Cq6ZsGRiYC97snMYepNx9"
Target Kamino vault address
32 - 44"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"
Amount to withdraw (in decimal format, not lamports), use U64::MAX to withdraw all
"0.1234"
Optional. If omitted, the value is false. Set it to true to target a vault owned by the staging kvault program instead of the mainnet program.
true
Memo to include with the vault withdrawal transaction (maximum 64 UTF-8 bytes)
1 - 64Optional. If omitted, the value is false. Set it to true to request user-state closure on a full withdrawal. The SDK can collect claimable farm rewards and close an eligible empty Farms user state. Closure is not guaranteed.
true
Response
Default Response
Encoded transaction ready to send
"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAEB4U90z775Z0G20Lzbx64AwbcGsJTUS+D6M2d1yQDvRL+MXyh2DY6ZPXvcFUmkblzqU7UrFcH4BAOPAPQXUWHKZS66KvlDTwMypF/H+icat/xVYNA0OvZ+RMaheXL0QJajAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9ps6fZhmN2HDYqYbzBnXEb4Pi9Sg0h5UvXVBWPj73qMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4WQTZCvHbiTnsNf+U2WQNV9zDJ5S7Phu2b9OuhJqE3NuUsuvLnkdJfjUAGox8/57aeYKvmQtCaruy3qoGNzwovloCBQYAAQAHAxEBAQYRAAsIDw0HAgEQEREEBgoJDgwQ8iPGiVLh8rYA4fUFAAAAAAGC6dRmw0Z9LrKw2cy+tHvb9JXuHBu0d9Dar60DX6fr5AUFLxMJAQYVBAsCBwM="