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

API
yield.plan

yield.plan

A ranked menu of 3 to 6 yield options for an amount, with expected USD yield, exit cost, risk and steps; with build: true, the unsigned transactions to do it, checked.

Details

Endpoint
POST /v1/yield/plan
Credits
varies
Pricing
Depends on the input and the size of the result. The description says how.
Rate class
Light. Counts against your light requests per second.

Give an amount in USD and optionally the coin you hold, a target APY, the highest risk tier you accept and a horizon in days. Returns 3 to 6 options from the yield map, ranked: options that reach the target first, then lowest risk tier, then closest to the target. Each option has the realized APY used (never the advertised one), token rewards apart, expected USD over the horizon, the cost to get in and out at this size, the risk tier with its reasons, plain steps, a link to the protocol and a tide.ad link to the evidence. At most two options per protocol. With build: true and sender, tide also builds the transaction for the top option (or the ranks in build_ranks, up to 3): one unsigned transaction per option that swaps into the option's coin when the wallet holds another (Aftermath router, slippage enforced on chain) and then supplies, mints the liquid staking coin or stakes, gassed and dry-run on current mainnet state with the pre-sign check, like tx.build. An option that would fail or that tide cannot build (liquidity pools, vaults) comes back with the reason instead of bytes. tide never signs. 3 credits, plus 15 per transaction built.

Parameters

NameTypeDescription
amount_usdrequirednumberHow much to put to work, in USD.At least 1.
assetstringThe coin you hold: a symbol (USDC, SUI) or a coin type. Pools that pair it count too (they need half swapped).
target_apynumberThe APY you are after, in percent (6 means 6%).At least 0.
max_risk_tierintegerHighest risk tier to include (1 is the lowest risk). Default 5.From 1 to 5.
horizon_daysintegerHow long you plan to stay, for the expected USD. Default 365.From 1 to 3650.
buildbooleanAlso build the unsigned transactions for the chosen options (needs sender). Default false.
senderstringWith build: the wallet that holds asset and will sign.
passstringWith build: an Agent Pass id instead of sender. Each option is built for the pass's agent from the owner's budget (NAVI supply or stake as the pass allows), prechecked against the pass, with a signed receipt; an option the pass does not allow says why.
amountnumber or stringWith build: the amount of asset to put in, whole coins. Default amount_usd at the current price.
build_ranksarray of integerWith build: which options to build, by rank. Default [1]; at most 3.
slippage_pctnumberWith build: slippage for any swap into the option's coin, percent. 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/plan" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "amount_usd": 5000,
  "asset": "USDC",
  "target_apy": 6,
  "max_risk_tier": 2
}'
TypeScript
const res = await fetch("https://api.tide.ad/v1/yield/plan", {
  method: "POST",
  headers: {
    "x-api-key": process.env.TIDE_API_KEY!,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "amount_usd": 5000,
    "asset": "USDC",
    "target_apy": 6,
    "max_risk_tier": 2
  }),
});
const data = await res.json();

Response

JSON
{
  "options": [
    {
      "rank": 1,
      "id": "lend:navi:usdc:10",
      "name": "USDC supply on NAVI",
      "kind": "lending",
      "protocol": {
        "id": "navi",
        "name": "NAVI",
        "url": "https://app.naviprotocol.io"
      },
      "apy": {
        "used": 5.6,
        "realized7d": 6.25,
        "realized30d": 5.6,
        "rewards": 0.33,
        "total": 5.93
      },
      "expected": {
        "horizonDays": 365,
        "usd": 296.5,
        "perYearUsd": 280,
        "rewardsUsd": 16.5
      },
      "exit": {
        "costUsd": 0,
        "costPct": 0,
        "withdrawableUsd": 2804337,
        "window": "Instant, up to the reserve's idle cash",
        "note": "Withdraw any time: $2,804,337 is idle in the market now."
      },
      "risk": {
        "tier": 1,
        "reasons": [
          "Utilization is 89%: withdrawals can queue when borrowers do not repay"
        ],
        "upgrade": "Upgradable by a multisig.",
        "packageAgeDays": 1207,
        "oracles": [
          "Supra"
        ]
      },
      "why": "Paid 5.60% over the last 30 days, plus about 0.33% in token rewards, risk tier 1 of 5, $25,106,801 deposited.",
      "steps": [
        "Open NAVI at app.naviprotocol.io and connect your wallet.",
        "Choose USDC in the supply (lend) list and enter the amount.",
        "Approve the transaction. You get a deposit receipt that grows as borrowers pay interest."
      ],
      "appUrl": "https://app.naviprotocol.io",
      "link": "https://tide.ad/yield?row=lend%3Anavi%3Ausdc%3A10"
    },
    {
      "rank": 2,
      "id": "lend:suilend:usdc:d388bc07",
      "name": "USDC supply on Suilend",
      "kind": "lending",
      "protocol": {
        "id": "suilend",
        "name": "Suilend",
        "url": "https://suilend.fi"
      },
      "apy": {
        "used": 4.41,
        "realized7d": 4.31,
        "realized30d": 4.41,
        "rewards": 0.45,
        "total": 4.86
      },
      "expected": {
        "horizonDays": 365,
        "usd": 243,
        "perYearUsd": 220.5,
        "rewardsUsd": 22.5
      },
      "exit": {
        "costUsd": 0,
        "costPct": 0,
        "withdrawableUsd": 5624525,
        "window": "Instant, up to the market's idle cash",
        "note": "Withdraw any time: $5,624,525 is idle in the market now."
      },
      "risk": {
        "tier": 1,
        "reasons": [
          "One key can upgrade the code at any time"
        ],
        "upgrade": "Upgradable by a single key address.",
        "packageAgeDays": 968,
        "oracles": [
          "Pyth"
        ]
      },
      "why": "Paid 4.41% over the last 30 days, plus about 0.45% in token rewards, risk tier 1 of 5, $28,369,918 deposited.",
      "steps": [
        "Open Suilend at suilend.fi and connect your wallet.",
        "Choose USDC in the supply (lend) list and enter the amount.",
        "Approve the transaction. You get a deposit receipt that grows as borrowers pay interest."
      ],
      "appUrl": "https://suilend.fi/dashboard",
      "link": "https://tide.ad/yield?row=lend%3Asuilend%3Ausdc%3Ad388bc07"
    },
    {
      "rank": 3,
      "id": "lend:scallop:usdc:dba34672",
      "name": "USDC supply on Scallop",
      "kind": "lending",
      "protocol": {
        "id": "scallop",
        "name": "Scallop",
        "url": "https://app.scallop.io"
      },
      "apy": {
        "used": 4.35,
        "realized7d": 4.81,
        "realized30d": 4.35,
        "rewards": null,
        "total": 4.35
      },
      "expected": {
        "horizonDays": 365,
        "usd": 217.5,
        "perYearUsd": 217.5,
        "rewardsUsd": 0
      },
      "exit": {
        "costUsd": 0,
        "costPct": 0,
        "withdrawableUsd": 410993,
        "window": "Instant, up to the market's idle cash",
        "note": "Withdraw any time: $410,993 is idle in the market now."
      },
      "risk": {
        "tier": 1,
        "reasons": [
          "No risk signal found in exit, contract, holders or history"
        ],
        "upgrade": "Upgradable by a multisig (3 of 5 keys).",
        "packageAgeDays": 1206,
        "oracles": [
          "own oracle package 0x1478a432…"
        ]
      },
      "why": "Paid 4.35% over the last 30 days, risk tier 1 of 5, $1,553,413 deposited.",
      "steps": [
        "Open Scallop at app.scallop.io and connect your wallet.",
        "Choose USDC in the supply (lend) list and enter the amount.",
        "Approve the transaction. You get a deposit receipt that grows as borrowers pay interest."
      ],
      "appUrl": "https://app.scallop.io",
      "link": "https://tide.ad/yield?row=lend%3Ascallop%3Ausdc%3Adba34672"
    }
  ],
  "considered": 12,
  "summary": "For $5,000 in USDC: 6 options. Best fit is USDC supply on NAVI at 5.93% (risk tier 1), about $297 over 365 days.",
  "notes": [
    "Rates are what each option actually paid on chain over the last 7 and 30 days, not a promise. Token rewards are counted separately and end when their program ends."
  ],
  "builtAt": "2026-11-05T13:37:11.435Z",
  "asOf": {
    "checkpoint": 341930046,
    "timestamp": "2026-11-05T13:37:11.435Z",
    "lagMs": null
  }
}

Long lists are cut to a few items here.