Skip to main content
For AI-friendly documentation, see Para llms.txt and vaults.fyi llms.txt.
If you’re using Para for embedded wallets, you can add a multi-product DeFi experience to your app using the vaults.fyi API. Your users see 1,000+ vaults across 82 protocols, every major Aave and Morpho borrow market, Pendle fixed-yield positions, and Solana yield vaults, all with a single signing surface via Para.

How It Works

vaults.fyi provides a typed, non-custodial DeFi API. You query an endpoint, get back an ordered array of unsigned transactions, and the user signs each one via their Para wallet. Every operation returns the same { currentActionIndex, actions[] } envelope, so a single signing loop handles every EVM product, and the Solana path is structurally identical with base64-encoded transactions in place of viem calldata. Transactions route directly to canonical protocol contracts. No wrapper, no required fee, no custody. This walkthrough covers four products:
  • Earn (EVM yield): discover, deposit into, track, redeem, and claim rewards from 1,000+ vaults across 82 protocols on Ethereum, Base, Arbitrum, Optimism, and 17 other chains
  • Borrow (EVM lending): discover and use Aave and Morpho lending markets to supply collateral, borrow, repay, and withdraw
  • Fixed-Term (Pendle PT): swap into fixed-yield Pendle Principal Tokens at a known rate locked until maturity, and swap out before or after expiry
  • Solana (SVM yield): discover and use Solana-native yield vaults using Para’s Solana signer

Why Combine Para and vaults.fyi

What makes vaults.fyi distinctive: breadth of coverage (every major DeFi vault and lending market across EVM and Solana), curator diversity (every major risk team’s vaults surfaced in one feed), and a simple integration model. The user’s Para wallet signs and submits directly. No per-user smart accounts to deploy, no gas-sponsor server to operate, no abstraction layer between the user and the canonical vault contract.

Example Use Cases

  1. Multi-Curator Earn Product. Users browse top vaults across every protocol, sorted by APY, with curator and risk-score context. Embed a fee on yield. Works on every EVM chain plus Solana.
  2. Embedded Lending. Let users borrow USDC against ETH or wBTC collateral via Aave or Morpho. Display health factor and liquidation risk. Repay and withdraw with the same actions[] flow.
  3. Fixed-Yield Treasury Allocation. Lock a portion of treasury USDC into Pendle PT positions for a fixed APY until maturity. Surface time-to-expiry and current yield-to-maturity in your UI.
  4. Cross-Ecosystem Yield Dashboard. Show every yield-earning position the user holds across every supported EVM protocol AND every Solana vault, with current APY and balances, including positions opened outside your app.
  5. Agent-Driven Allocation. Pair vaults.fyi’s discovery endpoints with an LLM agent that monitors rate environments and rebalances across chains and products on the user’s behalf. Para signs each rebalance via the same loop.

What You Need

  • A Para SDK setup with embedded wallets configured
  • A vaults.fyi API key, free for development. Sign up at portal.vaults.fyi
  • vaults.fyi SDK: @vaultsfyi/sdk, typed TypeScript wrapper around the v2 (stable) endpoints. Borrow, Fixed-Term, and Solana live on the beta tier and are accessed via direct HTTP through the same proxy.
  • viem 2.x plus @getpara/viem-v2-integration for the Para-backed EVM wallet client
  • @solana/web3.js plus @getpara/solana-web3.js-v1-integration for the Para-backed Solana signer (Solana product only)

Step-by-Step Integration

The first three steps are shared across all four products. After that, pick the tab for the product you want to integrate.

Step 1: Install Dependencies

Add these environment variables to .env.local:

Step 2: Proxy the vaults.fyi API server-side

The vaults.fyi API uses an x-api-key header. To keep that key out of the browser bundle, add a Next.js catch-all route that forwards every /api/vaultsfyi/* request upstream with the header attached server-side. The same proxy serves v2 (stable) and beta endpoints. Every vaults.fyi endpoint is GET, so a single handler is sufficient.
Configure the SDK to point at your proxy:

Step 3: Build the Para-backed signers

Para’s viem integration gives you a standard viem WalletClient for EVM operations. Para’s Solana integration gives you a ParaSolanaWeb3Signer for Solana operations. Both delegate signing to the user’s MPC wallet. The EVM setup below is intentionally Base-only. A transaction must be submitted through wallet and public clients configured for its tx.chainId. If your app accepts vaults or markets on other networks, create clients for each supported chain and select the matching pair before executing each action. The legacy @solana/web3.js integration expects Node’s Buffer global, which browsers do not provide. Install the buffer package as shown in Step 1 and assign it to globalThis.Buffer before constructing the Para Solana signer.

Step 4: Pick a product

Discover EVM vaults, deposit, track positions, redeem, and claim rewards. Uses the stable v2 API via the @vaultsfyi/sdk typed client.

Discover vaults

Query vaults.fyi for the top USDC vaults on Base, sorted by 7-day APY.
A few defaults to know: allowedNetworks defaults to four networks (Ethereum, Base, Arbitrum, Optimism); pass the full list explicitly for broader coverage. minTvl defaults to 100,000 USD. sortOrder defaults to ascending. apy.{window}.total is a raw decimal: 0.0543 means 5.43%.

Read the user’s vault context

Before quoting a deposit, fetch the user’s current state for the vault. The response includes the user’s underlying-asset balance, current allowance, and step in any multi-step flow.

Deposit

The deposit endpoint returns an ordered actions[] array. Each entry has tx.to, tx.data, tx.value, tx.chainId plus a currentActionIndex for resumption. Some vaults need a single transaction; others need approve plus deposit.This walkthrough executes Base actions only. The explicit chain ID check below prevents an action for another network from being submitted through the Base client. For multi-network support, resolve a wallet/public client pair configured for step.tx.chainId inside the loop instead.
Wire it into a deposit handler inside any React component (the execute function comes from useExecuteEvm()):

Track positions

The positions endpoint returns every vault position the user holds across every supported EVM protocol, read directly from on-chain state.

Redeem

Same actions[] pattern as deposit. Pass all: true to redeem the full position.

Claim rewards

Two-step flow. Discover claim IDs, then fetch the per-network claim transactions.

Querying Data

Beyond the operational flows above, vaults.fyi exposes a broader set of endpoints for discovery, history, and analytics:
  • /v2/detailed-vaults: every indexed EVM vault with 21 filter parameters (curator, protocol, network, asset, TVL, APY thresholds)
  • /v2/portfolio/best-deposit-options/{userAddress}: personalized vault recommendations ranked by the assets the user actually holds
  • /v2/portfolio/idle-assets/{userAddress}: cash sitting in the user’s wallet that could be earning yield
  • /v2/historical/{network}/{vaultId}: time-series APY and TVL data
  • /v2/benchmarks/{network}: market-wide USD and ETH benchmark rates
  • /v2/portfolio/total-returns/{userAddress}/{network}/{vaultId}: lifetime PnL for a position
  • /v2/nrt/vault/{network}/{vaultId}: near-real-time onchain reads (share price, total assets, total supply)
  • /beta/borrow/markets/historical/{network}/{marketId}/{assetAddress}: historical supply/borrow APY and utilization
  • /beta/svm/portfolio/idle-assets/{userAddress}: Solana idle assets that could be earning yield
  • /beta/svm/portfolio/events/{userAddress}: Solana deposit/withdrawal event history
See the vaults.fyi API reference for the full surface.