Open a leveraged loop
Open a leveraged loop into an Aave or Morpho market in ONE atomic transaction.
Repeatedly supplies collateral, borrows at the requested loan-to-value, and swaps the borrow back to collateral. Each iteration’s supply uses the swap’s GUARANTEED minimum output (enforced on-chain), so a fill anywhere within the slippage tolerance can never break a later step; any positive surplus stays in the Credit Account (the preview reports the bound as estimated_max_dust). Very large loops relative to pool depth can still exceed the slippage tolerance through their own cumulative price impact — size accordingly or raise max_slippage_percent.
The Credit Account must already hold initial_collateral_amount of collateral_token. For protocol=MORPHO pass a market_id from /v2/credit/morpho_markets.
Body
Open a leveraged loop: repeatedly supply collateral, borrow, and swap the borrow back to collateral — all in ONE atomic transaction from the Credit Account.
The address that owns the Credit Account.
"0x5e5b00ed886A6879C2B934612D2312975427fcAf"
Blockchain network.
base, ethereum, arbitrum, hyperevm, tempo, bsc "ethereum"
Token supplied as collateral each iteration. Must already be in the Credit Account for the initial amount. For MORPHO it must be the market's collateral token.
"wstETH"
"WETH"
Token borrowed each iteration and swapped back to the collateral token. For MORPHO it must be the market's loan token.
"WETH"
"USDC"
Collateral (in token units) already held in the Credit Account to seed the loop.
x > 01.5
Target leverage: total collateral exposure = multiplier × initial_collateral_amount. Must be achievable at the requested loan_to_value (max ≈ 0.9 / (1 − LTV)).
x > 12
Per-iteration borrow LTV in percent. Must not exceed the protocol's maximum for the market (Aave reserve/e-mode LTV; Morpho LLTV with a safety margin); borrows are sized slightly inside the requested value so no leg sits on the protocol's revert boundary.
0 < x <= 10070
Lending protocol to loop into: AAVE or MORPHO. EULER looping is not available yet.
AAVE, EULER, MORPHO "AAVE"
Morpho only: the bytes32 market id (from /v2/credit/morpho_markets). Required when protocol=MORPHO.
Per-swap slippage tolerance in percent. Loop dust is bounded by this per iteration, so tighter slippage means less dust.
0 < x <= 100.3
Aave only: e-mode category to enable before looping (higher LTV for correlated pairs, e.g. ETH-correlated).
x >= 0If true, returns EIP-712 typed data for gas-sponsored execution instead of an unsigned transaction.
false
Response
Successful Response
The atomic loop transaction plus its guaranteed-floor preview.
Projected end state, computed on guaranteed swap floors.
Unsigned transaction for direct execution by the owner. Present when gas_sponsorship=false.
{
"chainId": "0x2105",
"data": "0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d",
"from": "0x4A83b4413CF41C3244027e1590E35a0F48403F0c",
"gas": "0x7a120",
"maxFeePerGas": "0x59682f00",
"maxPriorityFeePerGas": "0x3b9aca00",
"nonce": "0x5",
"to": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
"value": "0x0"
}EIP-712 typed data for gas-sponsored execution. Present when gas_sponsorship=true.
{
"domain": {
"chainId": 8453,
"verifyingContract": "0x6B90E8B4E3E971E74C1A47a3a20976377E2dB4b1"
},
"message": {
"baseGas": "0",
"data": "0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020",
"gasPrice": "0",
"gasToken": "0x0000000000000000000000000000000000000000",
"nonce": "7",
"operation": 1,
"refundReceiver": "0x0000000000000000000000000000000000000000",
"safeTxGas": "0",
"to": "0x93C23AAE4793C14D6DF35D2A2A2234204e1559dA",
"value": "0"
},
"primaryType": "SafeTx",
"types": {
"EIP712Domain": [
{ "name": "chainId", "type": "uint256" },
{
"name": "verifyingContract",
"type": "address"
}
],
"SafeTx": [
{ "name": "to", "type": "address" },
{ "name": "value", "type": "uint256" },
{ "name": "data", "type": "bytes" },
{ "name": "operation", "type": "uint8" },
{ "name": "safeTxGas", "type": "uint256" },
{ "name": "baseGas", "type": "uint256" },
{ "name": "gasPrice", "type": "uint256" },
{ "name": "gasToken", "type": "address" },
{
"name": "refundReceiver",
"type": "address"
},
{ "name": "nonce", "type": "uint256" }
]
}
}