Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API
yield.withdrawPlan

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

NameTypeDescription
walletrequiredstringThe wallet (0x address) that holds the positions and will sign.
exitarray or stringPosition ids to build exits for, or "all". Left out, only the list comes back.
tostringSwap each exit's proceeds into this coin (symbol or type) in the same transaction.
slippage_pctnumberFor 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
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"
}'
TypeScript
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

JSON
{
  "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
  }
}