{"build_leverage_tx":{"path":"/v1/build/leverage-tx","method":"POST","kind":"assembly","tier":"basic","description":"Build the unsigned transaction to open a leveraged position — returns approvals, tx, and meta the user signs locally.","parameters":{"strategyId":{"type":"string","description":"Morpho market id of the strategy"},"payToken":{"type":"string","description":"Token to pay in — collateral (direct) or any token (zapped). Native ETH = zero address"},"amount":{"type":"string","description":"Amount of payToken in human units (e.g. '10000')"},"userAddress":{"type":"string","description":"Wallet that will sign; approvals and onBehalfOf are built for it"},"leverage":{"type":"number","description":"Target leverage (e.g. 3). Provide this OR desiredLtv"},"desiredLtv":{"type":"string","description":"Target LTV percent (e.g. '66.67'). Provide this OR leverage"},"slippage":{"type":"number","description":"Slippage ratio, default 0.005, capped at 0.01"},"chainId":{"type":"integer","description":"Chain to target — 1 = Ethereum (default), 4663 = Robinhood Chain"}},"required":["strategyId","payToken","amount","userAddress"],"output_example":{"chainId":1,"action":"open_leverage","path":"swapAndLeverage","approvals":[{"to":"0x...token","data":"0x..."}],"tx":{"to":"0x...router","data":"0x...","value":"0"},"meta":{"expiresAt":"2026-01-01T00:01:00.000Z","signingUrl":"https://app.spiralstake.xyz/..."}},"latency_class":"fast"},"build_manage_tx":{"path":"/v1/build/manage-tx","method":"POST","kind":"assembly","tier":"basic","description":"Build the unsigned transaction to adjust or close an open position (actions: close, increase_leverage, add/remove_collateral, repay, borrow).","parameters":{"userAddress":{"type":"string","description":"Wallet that owns the position and will sign"},"id":{"type":"integer","description":"On-chain position index — from /v1/positions/{address}"},"action":{"type":"string","enum":["close","increase_leverage","add_collateral","remove_collateral","repay","borrow"],"description":"Action type"},"amount":{"type":"string","description":"Human units. Required for add/remove/repay/borrow"},"payToken":{"type":"string","description":"Token to pay in (add_collateral / repay)"},"full":{"type":"boolean","description":"repay only — clear the entire remaining debt"},"desiredLtv":{"type":"string","description":"increase_leverage target LTV percent"},"leverage":{"type":"number","description":"increase_leverage target leverage"},"slippage":{"type":"number","description":"Slippage ratio, default 0.005"},"chainId":{"type":"integer","description":"Chain to target — 1 = Ethereum (default), 4663 = Robinhood Chain"}},"required":["userAddress","id","action"],"output_example":{"chainId":1,"action":"close","path":"closePosition","approvals":[],"tx":{"to":"0x...marketposition","data":"0x...","value":"0"},"meta":{"expiresAt":"2026-01-01T00:01:00.000Z","signingUrl":"https://app.spiralstake.xyz/..."}},"latency_class":"fast"}}