curl --request POST \
--url https://core-api-dev.vanish.trade/borrow/settle \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"smart_wallet_id": 4821,
"user_address": "<string>",
"token_address": "<string>",
"amount": "<string>",
"loan_additional_sol": "<string>",
"cleanup_leftover_sol": true,
"main_tx": "<string>",
"timestamp": "<string>",
"user_signature": "<string>"
}
'import requests
url = "https://core-api-dev.vanish.trade/borrow/settle"
payload = {
"smart_wallet_id": 4821,
"user_address": "<string>",
"token_address": "<string>",
"amount": "<string>",
"loan_additional_sol": "<string>",
"cleanup_leftover_sol": True,
"main_tx": "<string>",
"timestamp": "<string>",
"user_signature": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
smart_wallet_id: 4821,
user_address: '<string>',
token_address: '<string>',
amount: '<string>',
loan_additional_sol: '<string>',
cleanup_leftover_sol: true,
main_tx: '<string>',
timestamp: '<string>',
user_signature: '<string>'
})
};
fetch('https://core-api-dev.vanish.trade/borrow/settle', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-api-dev.vanish.trade/borrow/settle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'smart_wallet_id' => 4821,
'user_address' => '<string>',
'token_address' => '<string>',
'amount' => '<string>',
'loan_additional_sol' => '<string>',
'cleanup_leftover_sol' => true,
'main_tx' => '<string>',
'timestamp' => '<string>',
'user_signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://core-api-dev.vanish.trade/borrow/settle"
payload := strings.NewReader("{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://core-api-dev.vanish.trade/borrow/settle")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-api-dev.vanish.trade/borrow/settle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"action_id": 88213,
"tx_id": "<string>",
"transaction": "<string>",
"jito_bundle_id": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Settle Position
Returns the advanced funds from the position’s one-time wallet to Vanish’s trading accounts, wrapped around the instructions supplied in main_tx. Always returns a signed transaction for you to broadcast - there is no bundle route here.
Set cleanup_leftover_sol to true only on the settle that fully closes the position. Follow every settle with POST /borrow/commit. Requires a signature valid for 10 minutes; see Signing Requests and the Settle Flow.
curl --request POST \
--url https://core-api-dev.vanish.trade/borrow/settle \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"smart_wallet_id": 4821,
"user_address": "<string>",
"token_address": "<string>",
"amount": "<string>",
"loan_additional_sol": "<string>",
"cleanup_leftover_sol": true,
"main_tx": "<string>",
"timestamp": "<string>",
"user_signature": "<string>"
}
'import requests
url = "https://core-api-dev.vanish.trade/borrow/settle"
payload = {
"smart_wallet_id": 4821,
"user_address": "<string>",
"token_address": "<string>",
"amount": "<string>",
"loan_additional_sol": "<string>",
"cleanup_leftover_sol": True,
"main_tx": "<string>",
"timestamp": "<string>",
"user_signature": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
smart_wallet_id: 4821,
user_address: '<string>',
token_address: '<string>',
amount: '<string>',
loan_additional_sol: '<string>',
cleanup_leftover_sol: true,
main_tx: '<string>',
timestamp: '<string>',
user_signature: '<string>'
})
};
fetch('https://core-api-dev.vanish.trade/borrow/settle', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-api-dev.vanish.trade/borrow/settle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'smart_wallet_id' => 4821,
'user_address' => '<string>',
'token_address' => '<string>',
'amount' => '<string>',
'loan_additional_sol' => '<string>',
'cleanup_leftover_sol' => true,
'main_tx' => '<string>',
'timestamp' => '<string>',
'user_signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://core-api-dev.vanish.trade/borrow/settle"
payload := strings.NewReader("{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://core-api-dev.vanish.trade/borrow/settle")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-api-dev.vanish.trade/borrow/settle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"smart_wallet_id\": 4821,\n \"user_address\": \"<string>\",\n \"token_address\": \"<string>\",\n \"amount\": \"<string>\",\n \"loan_additional_sol\": \"<string>\",\n \"cleanup_leftover_sol\": true,\n \"main_tx\": \"<string>\",\n \"timestamp\": \"<string>\",\n \"user_signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"action_id": 88213,
"tx_id": "<string>",
"transaction": "<string>",
"jito_bundle_id": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Body
Details of the settle request.
Identifier of the one-time wallet holding the position. Must belong to user_address.
4821
The Solana wallet address of the user settling the position.
The address of the token expected to land back in the one-time wallet from your instructions. Wrapped SOL is normalised to native SOL after the signature check.
The amount being settled, expressed in the smallest unit (e.g., lamports for SOL). Must be greater than 0. Can be provided as a string or a number
^[0-9]+$Additional SOL (in lamports) advanced for this settle if the one-time wallet is running low. Pass 0 when it already holds enough. Can be provided as a string or a number
^[0-9]+$When true, any SOL left in the one-time wallet after this settle lands is returned to Vanish's trading accounts and credited to the user, and the position is closed. Only set this on the settle that fully closes the position - a partial withdrawal still needs the remaining SOL.
Serialized or encoded transaction data carrying your own withdraw or close instructions. The transaction must be provided unsigned, with the one-time wallet address set as the signer.
Unix timestamp of when the settle was initiated (in milliseconds). Must be within 10 minutes of server time. Can be provided as a string or a number
^[0-9]+$A digital signature of 'By signing, I hereby agree to Vanish's Terms of Service and agree to be bound by them (docs.vanish.trade/legal/TOS)
Details: settle:{smart_wallet_id}:{token_address}:{amount}:{loan_additional_sol}:{cleanup_leftover_sol}:{timestamp}', signed by the user's wallet.
Response
Successful settle action response.
Identifier of this lending or settle action.
88213
Transaction signature of the action. Poll it via /borrow/commit.
Base64-encoded signed transaction for you to broadcast. Null when Vanish submitted a Jito bundle instead; always populated for settle.
If the wrapped transaction was too large for a single transaction and Vanish submitted a two-transaction Jito bundle, its bundle ID; otherwise null. When set, there is nothing for you to broadcast. Always null for settle.
