Skip to main content

Vault deposit

GET 

/v1/actions/vaults/deposit

The single deposit entry point for every share-token vault. The protocol, interface, and underlying are resolved from the vault (share token), so a deposit needs only vault + amount + operator.

What it routes, all from the share token

  • ERC-4626 family — savings, Morpho, Fluid, Euler-Earn, Silo, Gearbox, Lagoon, Yearn. Routes directly to vault.deposit when no wrap/swap is needed; otherwise the 1delta Composer (wraps native ETH, handles composition).
  • LST / liquid-staking mints — stETH, wstETH, weETH, rETH, stCELO, pumpBTC, Solv, Core, native-staked, … Resolved from the calldata-sdk registry by vault and built via the protocol's mint path, including protocol-specific prep (e.g. StakedCelo validator-group selection — see validatorGroup).
  • ERC-7540 async and ERC-7575 multi-asset vaults — detected via an ERC-165 probe.

underlying and interface are read on-chain (asset() + ERC-165) when omitted; pass them explicitly to skip the reads. For Fluid margin vaults (NFT-position lending markets), use /v1/actions/lending/deposit instead.

Not handled here: GMX (GM/GLV) and Hypercore vaults are USD-denominated / multi-leg, not asset()-based share tokens, so they keep dedicated flows — GMX via /v1/actions/vaults/gmx, Hypercore via interface=hypercore below. Passing one to the auto path returns UNRESOLVED_UNDERLYING.

/v1/actions/vaults/lst and /v1/actions/vaults/savings remain as back-compatible aliases for their specific flows.

Execution mode (mode query param, ERC-4626 path)

  • auto (default) — direct when payAsset === underlying and not native, otherwise composer.
  • direct — force direct; returns 400 when not eligible (e.g. native payAsset).
  • proxy — force the composer (legacy behavior).

The direct path is smaller (one call to the vault) and sidesteps the EVC indirection that the composer triggers. Approval target also changes: direct → the vault; proxy → the composer.

Native deposits

Native ETH is supported via the composer's wrap-then-deposit path (mode=proxy, or auto falls back automatically), and natively by most LST mints (payAsset=0x0). Fluid fToken vaults expose a payable depositNative that skips wrapping — opt in with provider=fluid.


Async / multi-asset / Hypercore (interface query param)

Auto-detected for ERC-7540/7575; only Hypercore needs an explicit interface:

  • erc7540async vaults. Two-phase: action=requestDeposit (default, escrow assets) then action=claimDeposit (mint once fulfilled). Pass controller when it isn't operator. Track the pending request via /v1/data/vaults/withdrawals.
  • erc7575multi-asset vaults (share ≠ entry token). isShares switches deposit-by-assets vs mint-by-shares.
  • hypercoreHyperLiquid multi-leg deposit route (explicit only). amount is uint64 micro-USD (USDC); source picks the funding origin and the response is a structured legs[] array (each with its own chainId/async) rather than transactions[].

Request

Responses

Transaction calldata + approval(s) for the vault deposit. interface=hypercore returns a structured legs[] route instead of transactions[].