yield.withdrawPlan
A wallet's staking, liquid staking and lending positions, each with the step that exits it, and the exits built and checked on request.
Details
- Endpoint
- POST /v1/yield/withdraw-plan
- Credits
- varies
- Pricing
- Depends on the input and the size of the result. The description says how.
- Rate class
- Heavy. Counts against your heavy requests per second.
Lists the positions tide can exit for a wallet, read from chain now: native stakes, liquid staking coins (afSUI, haSUI, vSUI, sSUI, stSUI and others), and lending supplies on Suilend, NAVI and Scallop. Each has an id, a plain label, the coin and amount, and exit: the exact tx.build step that leaves it. Pass exit (a list of ids, or "all") to get the exits built too: one unsigned transaction per position, gassed and checked like tx.build, or the reason it would fail. Pass to (a coin) to swap each exit's proceeds into that coin in the same transaction. Other positions (liquidity, vaults, perps) come from wallet.positions. 5 credits, plus 15 per exit built.
Parameters
| Name | Type | Description |
|---|---|---|
| walletrequired | string | The wallet (0x address) that holds the positions and will sign. |
| exit | array or string | Position ids to build exits for, or "all". Left out, only the list comes back. |
| to | string | Swap each exit's proceeds into this coin (symbol or type) in the same transaction. |
| slippage_pct | number | For the swap into to. Default 0.5. |
Request
Send your key in the x-api-key header, or leave it out to use the keyless tier.
curl -X POST "https://api.tide.ad/v1/yield/withdraw-plan" \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"wallet": "0xa0c417e4fe1de367e8171b12a2960ddd865aff87be58ea1bb4e06f60d631a49f"
}'const res = await fetch("https://api.tide.ad/v1/yield/withdraw-plan", {
method: "POST",
headers: {
"x-api-key": process.env.TIDE_API_KEY!,
"content-type": "application/json",
},
body: JSON.stringify({
"wallet": "0xa0c417e4fe1de367e8171b12a2960ddd865aff87be58ea1bb4e06f60d631a49f"
}),
});
const data = await res.json();Response
{
"wallet": "0xa0c417e4fe1de367e8171b12a2960ddd865aff87be58ea1bb4e06f60d631a49f",
"positions": [
{
"id": "springsui:liquid_staking:ssui",
"venue": {
"id": "springsui",
"name": "SpringSui",
"url": "https://www.springsui.com"
},
"kind": "liquid_staking",
"label": "4.0019 sSUI (about 4.1544 SUI) with SpringSui",
"asset": {
"type": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
"symbol": "SUI"
},
"amount": 4.154382023,
"exit": {
"action": "lst_redeem",
"lst": "sSUI",
"amount": "all"
}
},
{
"id": "suilend:lending:ssui",
"venue": {
"id": "suilend",
"name": "Suilend",
"url": "https://suilend.fi"
},
"kind": "lending",
"label": "3.8528 sSUI supplied on Suilend",
"asset": {
"type": "0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI",
"symbol": "sSUI"
},
"amount": 3.852791342,
"exit": {
"action": "suilend_withdraw",
"asset": "0x83556891f4a0f233ce7b05cfe7f957d4020492a34f5405b2cb9377d060bef4bf::spring_sui::SPRING_SUI",
"amount": "all"
}
},
{
"id": "suilend:lending:sui",
"venue": {
"id": "suilend",
"name": "Suilend",
"url": "https://suilend.fi"
},
"kind": "lending",
"label": "0.3253 SUI supplied on Suilend",
"asset": {
"type": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
"symbol": "SUI"
},
"amount": 0.325297471,
"exit": {
"action": "suilend_withdraw",
"asset": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
"amount": "all"
}
}
],
"exits": [],
"sign": "Unsigned. Sign tx_bytes with the sender's own wallet (signTransaction) and submit it; tide never signs and never holds keys. Gas coins and price are set; build again if the wallet's coins change before signing.",
"asOf": {
"checkpoint": 341862692,
"timestamp": "2026-11-05T09:06:49.421Z",
"lagMs": 815
}
}