from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.ethena.ethena_unstake(chain=models.EthenaUnstakeRequestChain.ETHEREUM, sender="0xb8340945eBc917D2Aa0368a5e4E79C849c461511", estimate_gas=True)
# Handle response
print(res)import { CompassApiSDK } from "@compass-labs/api-sdk";
const compassApiSDK = new CompassApiSDK({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await compassApiSDK.ethena.ethenaUnstake({
chain: "ethereum",
sender: "0xb8340945eBc917D2Aa0368a5e4E79C849c461511",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/ethena/unstake \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "ethereum",
"sender": "0xb8340945eBc917D2Aa0368a5e4E79C849c461511"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({chain: 'ethereum', sender: '0xb8340945eBc917D2Aa0368a5e4E79C849c461511'})
};
fetch('https://api.compasslabs.ai/v1/ethena/unstake', 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://api.compasslabs.ai/v1/ethena/unstake",
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([
'chain' => 'ethereum',
'sender' => '0xb8340945eBc917D2Aa0368a5e4E79C849c461511'
]),
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://api.compasslabs.ai/v1/ethena/unstake"
payload := strings.NewReader("{\n \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\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://api.compasslabs.ai/v1/ethena/unstake")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/ethena/unstake")
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 \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Unstake USDe
Unstake deposited USDe from Ethena’s vault.
Verify that the USDe being unstaked has completed its mandatory cooldown period using the Ethena ‘Get Vault & User Position’ endpoint.
This is an all or nothing action. All of the USDe that has completed its cooldown period must be withdrawn.
The passive yield earned on USDe deposits is represented by the increased value of the shares received (sUSDe) upon depositing USDe. Trade in these shares in exchange for the intial USDe deposited and any accrued yield since depositing.
An allowance does not have to be set to unstake USDe that has completed its cooldown period.
from compass_api_sdk import CompassAPI, models
with CompassAPI(
api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:
res = compass_api.ethena.ethena_unstake(chain=models.EthenaUnstakeRequestChain.ETHEREUM, sender="0xb8340945eBc917D2Aa0368a5e4E79C849c461511", estimate_gas=True)
# Handle response
print(res)import { CompassApiSDK } from "@compass-labs/api-sdk";
const compassApiSDK = new CompassApiSDK({
apiKeyAuth: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await compassApiSDK.ethena.ethenaUnstake({
chain: "ethereum",
sender: "0xb8340945eBc917D2Aa0368a5e4E79C849c461511",
});
console.log(result);
}
run();curl --request POST \
--url https://api.compasslabs.ai/v1/ethena/unstake \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"chain": "ethereum",
"sender": "0xb8340945eBc917D2Aa0368a5e4E79C849c461511"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({chain: 'ethereum', sender: '0xb8340945eBc917D2Aa0368a5e4E79C849c461511'})
};
fetch('https://api.compasslabs.ai/v1/ethena/unstake', 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://api.compasslabs.ai/v1/ethena/unstake",
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([
'chain' => 'ethereum',
'sender' => '0xb8340945eBc917D2Aa0368a5e4E79C849c461511'
]),
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://api.compasslabs.ai/v1/ethena/unstake"
payload := strings.NewReader("{\n \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\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://api.compasslabs.ai/v1/ethena/unstake")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.compasslabs.ai/v1/ethena/unstake")
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 \"chain\": \"ethereum\",\n \"sender\": \"0xb8340945eBc917D2Aa0368a5e4E79C849c461511\"\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
ethereum "ethereum"
The address of the transaction sender.
"0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B"
"ETHENA_UNSTAKE"The address which will receive the unstaked USDe. Defaults to the sender.
Determines whether to estimate gas costs for transactions, also verifying that the transaction can be successfully executed.
Response
Successful Response
The unsigned transaction data. User must sign and broadcast to network.
- UnsignedTransaction
- UserOperationResponse
Show child attributes
Show child attributes
{
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
}
Was this page helpful?