Skip to main content
POST
/
accounts
/
{account_id}
/
plan
/
loop-long
Plan Loop Long
curl --request POST \
  --url https://api.example.com/accounts/{account_id}/plan/loop-long

Plan Loop Long

Creates a plan to open or increase a leveraged long position on a Morpho market. Looping borrows the backing asset, swaps it for the exposure asset, and supplies it as collateral — repeatedly — to achieve leverage. Returns a plan ID and an EIP-712 digest that must be signed to authorize execution.

Request

POST /accounts/:account_id/plan/loop-long

Path parameters

ParameterTypeDescription
account_idstringThe sub-account ID

Body parameters

ParameterTypeRequiredDescription
exposure_assetstringYesAsset to go long on (e.g., "WETH")
backing_assetstringYesAsset used as loan currency (e.g., "USDC")
market_idstringYesMorpho market ID (0x-prefixed 32-byte hex)
is_increasebooleanYestrue to open/increase position, false to adjust existing
exposure_amountstringYesTarget exposure amount in the asset’s smallest unit
max_swap_backing_amountstringYesMaximum backing asset to use in swaps
max_provided_backing_amountstringYesMaximum backing asset to supply as collateral
pool_feeintegerYesUniswap pool fee tier (e.g., 500, 3000, 10000)
networkstringYesTarget network (e.g., "base", "mainnet"). Funds on other chains are bridged automatically.

Examples

curl -X POST https://prime-api.legend.xyz/accounts/acc_2o0yiljtp378/plan/loop-long \
  -H "Authorization: Bearer $LEGEND_QUERY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "exposure_asset": "WETH",
    "backing_asset": "USDC",
    "market_id": "0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc",
    "is_increase": true,
    "exposure_amount": "1000000000000000000",
    "max_swap_backing_amount": "5000000000",
    "max_provided_backing_amount": "1000000000",
    "pool_fee": 500,
    "network": "base"
  }'
Response (201 Created)
{
  "plan_id": "pln_71mcui082png",
  "details": {
    "quark_operation_actions": [...],
    "eip712_data": {
      "digest": "0x8a3f...b7c2",
      "domain_separator": "0x...",
      "hash_struct": "0x..."
    }
  },
  "expires_at": "2025-06-15T10:32:00Z"
}

Response fields

FieldTypeDescription
plan_idstringUnique identifier for this plan (pln_ prefix)
detailsobjectTransaction details including EIP-712 signing data
details.eip712_data.digeststringThe hash to sign with the account’s signer key
expires_atstringISO 8601 timestamp — plan must be executed before this time

Errors

StatusCodeDescription
400invalid_paramsMissing required parameters or invalid market ID
400plan_failedCould not generate a valid plan
400no_walletAccount has no wallets
408timeoutFolio computation timed out

Notes

  • Plans expire after 2 minutes. Sign and execute via Execute Plan before expiry.
  • The market_id must be a valid Morpho market ID (0x-prefixed 32-byte hex).
  • Common pool_fee values: 500 (0.05%), 3000 (0.3%), 10000 (1%). These correspond to Uniswap V3 fee tiers.
  • Use Plan Unloop Long to close or reduce the position.