- Automated Routing: The POST
shortcuts/routeAPI calculates optimized multi-step paths for entering/exiting DeFi positions or swapping ERC20 tokens. It automatically creates a path between two positions specified in the request. - Bundling DeFi Actions: The POST
shortcuts/bundleAPI lets you orchestrate DeFi workflows by composing multi-step sequences of Actions of your choosing.
EnsoRouter for execution.
1. Automated Routing
The POSTroute API is suitable for single-path operations with automatic optimization.
Token Swaps
Optimize conversions between tokens by leveraging automated routing across DEXs. Example: Swapping 1 ETH to USDC with the best execution price and 0.5% slippage- Input: 1 ETH
- Slippage: 0.5%
- Output: USDC worth of 1 ETH
Typescript SDK
Multi-Token Deposits
Deposit multiple tokens simultaneously into a liquidity pool to receive LP tokens in a single transaction. Example: Depositig 10 DAI + 10 USDC + 10 USDT to 3Crv LP tokens (Curve 3pool) in one step- Input: 10 DAI, 10 USDC, 10 USDT
- Slippage: 0.5%
- Output: 3Crv LP tokens
SDK
LST Staking Entry
Transform base tokens directly into staked liquid staking positions with a single call. Example: Converting 1 ETH to stETH (Lido Staked ETH) in one step- Input: 1 ETH
- Slippage: 0.5%
- Output: stETH
SDK
Yield Position Entry
Enter yield-generating positions from base assets. Example: Moving from 1 WETH to a Yearn vault (yvWETH)- Input: 1 WETH Output: yvWETH (exact amount depends on the vault’s share price)
- Slippage: 0.5%
SDK
Position Exit (Single Token)
Exit completely from a DeFi position back to a single base token. Example: Converting 1 yvWETH (Yearn ETH vault) back to WETH- Input: 1 yvWETH
- Output: WETH (actual amount depends on accrued yield)
- Slippage: 0.5%
SDK
LP Position Entry
Enter into LP token positions with automatic routing and slippage protection. Example: Going from 1 ETH to Curve stETH/ETH LP tokens (steCRV)- Output: ~0.92 steCRV LP tokens (varies with pool composition)
- Slippage: 0.5%
SDK
Zap into a Morpho Blue Vault
Zap a Morpho USDC vault position, represented by0xBEeFFF209270748ddd194831b3fa287a5386f5bC.
Example: Going from 1 ETH to Morpho USDC position
- Output: Morpho Blue USDC vault tokens
- Slippage: 0.5%
SDK
Simple LST Zapping
Direct entry into or exit from liquid staking tokens. Example: Converting 1 stETH back to ETH- Input: 1 stETH (Lido Staked ETH)
- Output: ETH (varies with current discount/premium)
- Slippage: 0.5%
SDK
2. Bundling DeFi Actions
The Bundle API (POST/v1/shortcuts/bundle) excels at orchestrating complex sequences of operations.
Multi-Position Entry
Splitting funds across several positions simultaneously Example: Distributing 1 ETH into three LST tokens in one transaction- Input: 1 ETH
- Slippage: 0.5% for each conversion
- Outputs:
- stETH (Lido Staked ETH)
- rETH (Rocket Pool ETH)
- cbETH (Coinbase Staked ETH)
- Process:
- Convert 1/3 ETH (0.333 ETH) to stETH
- Convert 1/3 ETH (0.333 ETH) to rETH
- Convert 1/3 ETH (0.334 ETH) to cbETH
SDK
Single-Asset Zap into Uniswap V3 Concentrated Liquidity
Provide liquidity to a two-asset Uniswap V3 pool using a single token as input. Enso automatically handles swapping for the second token and balancing the pair before depositing. Example: Use AAVE to provide concentrated liquidity to a WETH/AAVE pool on Uniswap v3 on Arbitrum.- Input: 10 AAVE
- Output token: the
NonfungiblePositionManagerthat mints and manages NFT-based receipts for provided liquidity. - Final Result: A Uniswap V3 NFT representing a concentrated liquidity position in the WETH/AAVE pool.
- Process:
- The
enso.splitaction takes the input AAVE and swaps the optimal amount for WETH to create a balanced pair required by the Uniswap pool. - Check the split WETH and AAVE amounts against 0.5% slippage.
- The
uniswap-v3.depositclmmaction takes the resulting WETH and AAVE from the split. - It deposits both tokens as liquidity into the specified pool within the defined tick range (
26520to28440).
- The
SDK
Multiple-Asset Zap to SushiSwap V3 LP
To deposit into Sushiswap V3AUSD/USDC poool, you need to use the bundle API.
Bundle Design:
- Input of 100
USDCmust be split into 2 tokens:AUSDandUSDC, using Enso’ssplitaction that converts part of the USDC into AUSD in the ratio the pool needs, and keeps the rest as USDC - Check the split
AUSDandUSDCamounts against 0.5% slippage - Deposit using
depositclmmaction ofsushiswap-v3protocol.tokenInare the pool’s tokens (AUSD/USDC)amountInis an array of amounts obtained from the split intoAUSDandUSDCrespectively, using dynamic quantity reference (useOutputOfCallAt).- The
tokenOutvalue is the address of Sushiswap’s position manager contract. - Provide correct fee and ticks.
Mint and top up a Uniswap V3 position
Mint a Uniswap V3 position and add more liquidity to it in the same transaction, under therouter strategy. Shows two Bundle-API rules for position NFTs:
- Reference the minted id with
index: 0:depositclmmreturns[tokenId, liquidity]. The top-up and the transfer both take{ useOutputOfCallAt: 0, index: 0 }. - A consumed NFT stays in the executor: because a later action uses the minted position, the router keeps it instead of sending it to the user after the mint. The trailing
erc721:transferdelivers it; without it the NFT leaves the executor after the mint and the top-up reverts.
- Input: 4,000 USDC and 1.3 WETH
- Final result: one Uniswap V3 position NFT owned by the user, holding both deposits
- Process:
- Mint a position with 3,000 USDC + 1 WETH between ticks 196000 and 199000 (kept by the router)
- Add 1,000 USDC + 0.3 WETH to the position just minted
- Transfer the position NFT to the user
router the response’s preTransactions are the two ERC-20 approvals; no NFT approval is needed.
SDK
Staking Pipeline
Chain multiple actions together to create a complete Curve LP staking workflow. Example: Creating a staked Curve 3pool position starting with 1 ETH- Input: 1 ETH
- Final Output: 3pool LP tokens staked in Curve gauge
- Process:
- Swap 1 ETH to USDC
- Deposit USDC into Curve 3pool to get 3pool LP tokens
- Stake 3pool LP tokens in the Curve gauge
- Check the received gauge token amount against 0.5% slippage
SDK
Portfolio Rebalancing
Adjusting position sizes across multiple protocols. Example: Rebalancing from 70%ETH + 30% USDC to 50% ETH + 50% USDC across Aave positions
- Input: 0.6 WETH (for reallocation)
- Output:
- 0.4 WETH deposited to Aave (aWETH)
- ~$580 USDC (from 0.2 WETH) deposited to Aave (aUSDC)
- Process:
- Convert 0.2 WETH to USDC
- Deposit 0.4 WETH into Aave (aWETH position)
- Deposit the acquired USDC into Aave (aUSDC position)
- Check the received aUSDC amount against 0.5% slippage
SDK
Position Migration
Moving from one protocol to another Example: Migrating 1 aWETH from Aave V3 to Compound V3 on Arbitrum- Input: 1 aWETH (Aave V3 WETH)
- Output: cWETHv3 (Compound V3 WETH)
- Process:
- Withdraw 1 WETH from Aave by redeeming aWETH
- Supply the WETH to the Compound V3 WETH market to get cWETHv3
SDK
Leveraged Positions
Creating leveraged positions through multiple actions Example: Creating a 2x ETH position using Aave- Input: 1 WETH initial collateral
- Final Result: WETH worth of collateral in Aave
- Process:
- Deposit 1 WETH as collateral in Aave
- Borrow ~1,000 USDC against the WETH collateral
- Swap the borrowed 1,000 USDC back to ~0.35 WETH
- Deposit the additional WETH back into Aave as more collateral
SDK
Zap into multiple LPs
Multi-step entry into or exit from liquid staking tokens with additional operations. Example: Creating diversified LP and LST positions with 1 ETH- Input: 1 ETH split evenly
- Slippage: 0.5% for each conversion
- Process:
- Convert 0.5 ETH to stETH/ETH Curve LP tokens
- Convert 0.5 ETH to BAL/WETH Balancer LP tokens
SDK
Yield Compounding Flow
Automate yield compounding by harvesting rewards, swapping, and redepositing in a single transaction. Example: Compounding Curve gauge rewards back into the stETH/ETH pool- Input: Existing position in stETH/ETH Curve gauge
- Slippage: 0.5%
- Process:
- Harvest accumulated wstETH rewards from the Curve gauge
- Convert wstETH rewards to stETH
- Deposit stETH back into the stETH/ETH Curve pool
- Check the received stETH/ETH Curve LP amount against 0.5% slippage
SDK
Liquid Staking Derivative Looping
Create a leveraged position with liquid staking tokens through recursive borrowing and depositing in a lending protocol. Example: Implement a two-loop leveraged position on Lido Staked ETH (wstETH) using Aave V3 as the lending platform.- Input: 10 wstETH
- Final Result: ~17.2 wstETH deposited with 9 WETH borrowed (~1.7x leverage)
- Process:
- Deposit 10 wstETH as collateral into Aave V3
- Borrow 6 WETH against your deposited collateral
- Route the borrowed WETH to wstETH
- Deposit the wstETH back as additional collateral
- Borrow 3 WETH against your increased collateral
- Route the borrowed WETH to wstETH
- Deposit this amount back again as additional collateral
SDK
Alchemix alUSD Leverage Loop (2 Borrows, Router Strategy)
Open and loop a leveraged Alchemix AlchemistV3 alUSD position in a single bundle: deposit MIXUSD collateral, mint an NFT, borrow alUSD, swap to USDC, wrap to MIXUSD, deposit back into the same NFT, then borrow alUSD again. Shows three useful Bundle-API patterns at once:- Mint-then-reuse NFT tokenId: the first deposit mints a fresh position (
tokenId: "0"); subsequent actions reference the minted id viauseOutputOfCallAt(0, index: 0). - Hold-in-router across actions: setting
receiver: address(0)on intermediate steps keeps the NFT and tokens inside the router until the final borrow ships alUSD to the EOA. - Loop with output chaining: every later
amountInis derived from a prior action’s output, so the bundle adapts to actual amounts at execution time.
- Input: 10 MIXUSD (alchemix-myts USDC) on Ethereum
- Final result: One AlchemistV3 NFT with ~17 MIXUSD collateral + ~14.5 alUSD debt, plus the second-borrow alUSD delivered to the EOA
- Process:
- Deposit 10 MIXUSD → mint AlchemistV3 NFT (held by router)
- Borrow 7.5 alUSD against the new NFT
- Swap 7.5 alUSD → USDC (0.5% slippage)
- Wrap USDC → MIXUSD via
alchemix-myts.deposit - Deposit the new MIXUSD back into the same NFT
- Borrow another 7.0 alUSD against the now-bigger position, sent to the EOA
SDK
Cross-Chain Route-Bridge
Execute a route and bridge tokens to another chain in a single transaction using the route-bridge functionality. Example: Bridging 1 ETH from Ethereum to Optimism and converting to USDT- Input: 1 ETH on Ethereum
- Output: USDT on Optimism
- Process:
- Route 1 ETH to USDT on Ethereum
- Bridge the resulting USDT to Optimism
- Receive USDT on Optimism
SDK
Updated 2025-11-03
