Skip to main content
Copy-paste recipes for staking into supported liquid staking and restaking protocols via Composer.
All recipes use the GET /quote endpoint. The same toToken addresses work with POST /advanced/routes and the LI.FI SDK. See API Integration or SDK Integration for full integration guides.

Lido wstETH

Lido is the largest liquid staking protocol. Composer supports wrapping ETH to wstETH (deposit and withdraw).

Same-Chain: ETH → wstETH on Ethereum

curl -X GET 'https://li.quest/v1/quote?\
fromChain=1&\
toChain=1&\
fromToken=0x0000000000000000000000000000000000000000&\
toToken=0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=100000000000000000'
ParameterValueNotes
fromChain1Ethereum
toChain1Ethereum (same-chain)
fromToken0x0000000000000000000000000000000000000000ETH (native token)
toToken0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0wstETH on Ethereum
fromAmount1000000000000000000.1 ETH (18 decimals)

Cross-Chain: USDC on Arbitrum → wstETH on Ethereum

curl -X GET 'https://li.quest/v1/quote?\
fromChain=42161&\
toChain=1&\
fromToken=0xaf88d065e77c8cC2239327C5EDb3A432268e5831&\
toToken=0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=1000000000'
LI.FI’s routing engine determines the optimal path, which may include bridging, swapping, and staking, all from a single API call. The exact execution steps are visible in the route response.
Cross-chain flows require status polling via GET /status. See Cross-Chain Composer Patterns for the full execution flow.

EtherFi

EtherFi is a liquid restaking protocol. Composer supports deposit and withdraw.

Same-Chain: ETH → EtherFi on Ethereum

curl -X GET 'https://li.quest/v1/quote?\
fromChain=1&\
toChain=1&\
fromToken=0x0000000000000000000000000000000000000000&\
toToken=ETHERFI_TOKEN_ADDRESS&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=100000000000000000'
Replace ETHERFI_TOKEN_ADDRESS with the specific EtherFi token address. You can find token addresses on the EtherFi app.

Kinetiq (Deposit Only)

Kinetiq is a staking protocol. Composer supports deposit only. Withdrawals are not available via Composer.

Deposit into Kinetiq

curl -X GET 'https://li.quest/v1/quote?\
fromChain=CHAIN_ID&\
toChain=CHAIN_ID&\
fromToken=SOURCE_TOKEN_ADDRESS&\
toToken=KINETIQ_STAKING_TOKEN_ADDRESS&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=AMOUNT_IN_SMALLEST_UNIT'

Kinetiq Earn (vkHYPE)

Kinetiq Earn provides the vkHYPE yield token. Composer supports deposit only.

Deposit into Kinetiq Earn

curl -X GET 'https://li.quest/v1/quote?\
fromChain=CHAIN_ID&\
toChain=CHAIN_ID&\
fromToken=SOURCE_TOKEN_ADDRESS&\
toToken=VKHYPE_TOKEN_ADDRESS&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=AMOUNT_IN_SMALLEST_UNIT'

Ethena (Deposit Only)

Ethena supports two Composer deposit paths:
  • USDe → sUSDe — Stake USDe to receive sUSDe
  • ENA → sENA — Stake ENA to receive sENA
Withdrawals are not available via Composer.

USDe → sUSDe

curl -X GET 'https://li.quest/v1/quote?\
fromChain=CHAIN_ID&\
toChain=CHAIN_ID&\
fromToken=USDE_TOKEN_ADDRESS&\
toToken=SUSDE_TOKEN_ADDRESS&\
fromAddress=0xYOUR_WALLET_ADDRESS&\
toAddress=0xYOUR_WALLET_ADDRESS&\
fromAmount=AMOUNT_IN_SMALLEST_UNIT'

ENA → sENA

const quote = await axios.get('https://li.quest/v1/quote', {
  params: {
    fromChain: CHAIN_ID,
    toChain: CHAIN_ID,
    fromToken: 'ENA_TOKEN_ADDRESS',               // ENA
    toToken: 'SENA_TOKEN_ADDRESS',                // sENA (staked ENA)
    fromAddress: '0xYOUR_WALLET_ADDRESS',
    toAddress: '0xYOUR_WALLET_ADDRESS',
    fromAmount: 'AMOUNT_IN_SMALLEST_UNIT',
  },
});

General Pattern

Every staking recipe follows the same pattern as all Composer operations:
GET /quote
  fromChain  = source chain ID
  toChain    = destination chain ID (same or different)
  fromToken  = token you're starting with
  toToken    = STAKING/LST TOKEN ADDRESS (this triggers Composer)
  fromAmount = amount in smallest unit
  fromAddress = your wallet
  toAddress   = your wallet (receives staking tokens)
Some staking protocols are deposit only. Kinetiq, Kinetiq Earn, and Ethena do not support withdrawals via Composer. Check the Supported Protocols Reference for the full capabilities of each protocol.

Next Steps