S2S Staking Pools
Curated pools bucketed by risk
The simple-strategy selection, split into low / mid / high by the pool's risk score and ordered by rank score within each bucket. Pools switched off for your partner account in the panel are left out.
Curated pools bucketed by risk › Responses
TVL and APY history of one pool
Ascending by date. Defaults to the last 7 days when dateFrom is omitted; points with a zero APY are left out.
path Parameters
slugquery Parameters
dateFromTVL and APY history of one pool › Responses
Ascending by date.
Approximate fee for a stake or unstake amount
The platform fee and the gas fee on amount, and what is left once they are taken (finalAmount) — no wallet is read and nothing is built. The gas fee is priced from the chain’s current gas price. The construct call charges the exact figure; send maxAmount: true there to build for the largest amount a wallet can afford.
path Parameters
slugquery Parameters
actionstake takes amount in base-token units, unstake in wrap-token (share) units — the unit of the matching construct amount.
amountApproximate fee for a stake or unstake amount › Responses
Build an unsigned stake transaction
Returns an EIP-7702 batch user operation for the partner user's wallet plus an intentId. amount is in base-token units; send maxAmount: true instead to stake the largest amount the wallet covers, fee included. The amount used is returned. The user op itself stays server-side: the wallet signs bundle.userOpHash and the authorization tuple, then posts them back to transaction/batch/send.
Build an unsigned stake transaction › Request Body
sluguserIdPublic uuid of the partner user the transaction is built for.
amountStake: base-token units; unstake: wrap-token (share) units. Required unless maxAmount is true.
maxAmountBuild for the largest amount the wallet can send right now, fee included; amount is then ignored. The amount used is returned.
Build an unsigned stake transaction › Responses
Build an unsigned unstake transaction
As the stake counterpart, but amount is in wrap-token (share) units — a withdrawal redeems shares, so it is denominated in the pool token the stake minted, not in the base token. maxAmount: true redeems every share the pool can pay out right now.
Build an unsigned unstake transaction › Request Body
sluguserIdPublic uuid of the partner user the transaction is built for.
amountStake: base-token units; unstake: wrap-token (share) units. Required unless maxAmount is true.
maxAmountBuild for the largest amount the wallet can send right now, fee included; amount is then ignored. The amount used is returned.
Build an unsigned unstake transaction › Responses
Submit a signed batch transaction
Pairs the wallet signatures with the intent built earlier and submits it to the bundler. The intent is single-use and short-lived, so a replayed or late call is rejected.
Submit a signed batch transaction › Request Body
intentIdsignatureWallet signature over userOpHash, 0x-prefixed hex.
userIdPublic uuid of the partner user the transaction is built for.
Signature over bundle.authorization. Required when the bundle carried one; must be omitted when it was null.
