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
- 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.
-
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. - 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.
- 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.
- 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-integrationfor the Para-backed EVM wallet client @solana/web3.jsplus@getpara/solana-web3.js-v1-integrationfor 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
.env.local:
Step 2: Proxy the vaults.fyi API server-side
The vaults.fyi API uses anx-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.
Step 3: Build the Para-backed signers
Para’s viem integration gives you a standard viemWalletClient 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
- Earn (EVM Yield)
- Borrow (EVM Lending)
- Fixed-Term (Pendle PT)
- Solana Yield
Discover EVM vaults, deposit, track positions, redeem, and claim rewards. Uses the stable v2 API via the A few defaults to know: Wire it into a deposit handler inside any React component (the
@vaultsfyi/sdk typed client.Discover vaults
Query vaults.fyi for the top USDC vaults on Base, sorted by 7-day APY.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 orderedactions[] 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.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
Sameactions[] 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
Related Resources
- vaults.fyi documentation
- @vaultsfyi/sdk reference
- vaults.fyi OpenAPI: v2 stable, beta
- vaults.fyi llms.txt for AI agents
- vaults.fyi MCP server
- Para React + Next.js setup
- Para Ethereum Transfers walkthrough: EVM signing patterns with viem
- Para Solana Transfers walkthrough: Solana signing patterns with Para’s Solana signer