curl --request POST \
--url https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"vault": "7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2",
"mint": "So11111111111111111111111111111111111111112",
"slippageBps": 100
}
'import requests
url = "https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep"
payload = {
"vault": "7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2",
"mint": "So11111111111111111111111111111111111111112",
"slippageBps": 100
}
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({
vault: '7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2',
mint: 'So11111111111111111111111111111111111111112',
slippageBps: 100
})
};
fetch('https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep', 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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep",
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([
'vault' => '7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2',
'mint' => 'So11111111111111111111111111111111111111112',
'slippageBps' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep"
payload := strings.NewReader("{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}"
response = http.request(request)
puts response.read_body{
"vault": "So11111111111111111111111111111111111111112",
"result": {
"transaction": "aSDinaTvuI8gbWludGxpZnk=",
"simulation": {
"unitsConsumed": 123,
"deferred": true
},
"ticket": "<string>",
"blockhash": "<string>",
"sendConcurrently": true,
"next": {
"path": "jupiter/sweep",
"body": {}
}
}
}{
"error": {
"code": "Validation",
"message": "vault must be a public key"
}
}{
"error": {
"code": "Unauthorized",
"message": "Invalid API key"
}
}{
"error": {
"code": "Forbidden",
"message": "Action is not enabled for this key"
}
}{
"error": {
"code": "NotFound",
"message": "Vault not found"
}
}{
"error": {
"code": "Stale",
"message": "pool price moved; refresh before flipping"
}
}{
"error": {
"code": "BodyTooLarge",
"message": "Request body is too large"
}
}{
"error": {
"code": "SlippageToleranceExceeded",
"message": "Transaction rejected during simulation or preflight"
}
}{
"error": {
"code": "RateLimited",
"message": "Too many requests, slow down"
}
}{
"error": {
"code": "Internal",
"message": "Service temporarily unavailable"
}
}{
"error": {
"code": "JupiterQuoteFailed",
"message": "Service temporarily unavailable"
}
}{
"error": {
"code": "RpcUnavailable",
"message": "Service temporarily unavailable"
}
}Sell all of a token and close its strategy
Requires key scope jupiter/sweep.
Returns an unsigned v0 transaction for the manager to sign. Do not send payer: the API sets it to the key’s manager and rejects a body that contains it. Unknown fields are ignored. The key’s manager must be the vault’s current on-chain authority, and the vault must be in the key’s allowlist when the key has one.
In one transaction, sells the vault’s entire balance of mint to the deposit mint and closes the token’s Jupiter strategy. With a zero balance, the step only closes the strategy. Returns 409 MintInUse while an open DLMM position or limit order uses the mint, and 409 NothingToSweep when no Jupiter strategy exists for it. Returns 422 SweepUnroutable when Jupiter finds no route.
curl --request POST \
--url https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"vault": "7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2",
"mint": "So11111111111111111111111111111111111111112",
"slippageBps": 100
}
'import requests
url = "https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep"
payload = {
"vault": "7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2",
"mint": "So11111111111111111111111111111111111111112",
"slippageBps": 100
}
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({
vault: '7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2',
mint: 'So11111111111111111111111111111111111111112',
slippageBps: 100
})
};
fetch('https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep', 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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep",
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([
'vault' => '7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2',
'mint' => 'So11111111111111111111111111111111111111112',
'slippageBps' => 100
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep"
payload := strings.NewReader("{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://hedgin.xyz/api/external/v1/transactions/jupiter/sweep")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hedgin.xyz/api/external/v1/transactions/jupiter/sweep")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"vault\": \"7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2\",\n \"mint\": \"So11111111111111111111111111111111111111112\",\n \"slippageBps\": 100\n}"
response = http.request(request)
puts response.read_body{
"vault": "So11111111111111111111111111111111111111112",
"result": {
"transaction": "aSDinaTvuI8gbWludGxpZnk=",
"simulation": {
"unitsConsumed": 123,
"deferred": true
},
"ticket": "<string>",
"blockhash": "<string>",
"sendConcurrently": true,
"next": {
"path": "jupiter/sweep",
"body": {}
}
}
}{
"error": {
"code": "Validation",
"message": "vault must be a public key"
}
}{
"error": {
"code": "Unauthorized",
"message": "Invalid API key"
}
}{
"error": {
"code": "Forbidden",
"message": "Action is not enabled for this key"
}
}{
"error": {
"code": "NotFound",
"message": "Vault not found"
}
}{
"error": {
"code": "Stale",
"message": "pool price moved; refresh before flipping"
}
}{
"error": {
"code": "BodyTooLarge",
"message": "Request body is too large"
}
}{
"error": {
"code": "SlippageToleranceExceeded",
"message": "Transaction rejected during simulation or preflight"
}
}{
"error": {
"code": "RateLimited",
"message": "Too many requests, slow down"
}
}{
"error": {
"code": "Internal",
"message": "Service temporarily unavailable"
}
}{
"error": {
"code": "JupiterQuoteFailed",
"message": "Service temporarily unavailable"
}
}{
"error": {
"code": "RpcUnavailable",
"message": "Service temporarily unavailable"
}
}Authorizations
API key issued by a Hedgin administrator, in the form hv1_<id>_<secret>. <id> is 1 to 48 characters and <secret> is 32 to 128 characters, both from [A-Za-z0-9_-].
Body
Vault the transaction acts on.
^[1-9A-HJ-NP-Za-km-z]{32,44}$"So11111111111111111111111111111111111111112"
Token to sell. Must differ from the vault's deposit mint.
^[1-9A-HJ-NP-Za-km-z]{32,44}$"So11111111111111111111111111111111111111112"
Slippage tolerance in basis points. The server lowers it to the protocol's maxSlippageBps when it is higher.
1 <= x <= 10000Response
Build result. One step.
Base58 Solana public key. The server decodes it and rejects anything that is not 32 bytes.
^[1-9A-HJ-NP-Za-km-z]{32,44}$"So11111111111111111111111111111111111111112"
One unsigned transaction and its ticket. Builders can add action metadata fields next to these.
Show child attributes
Show child attributes
