> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superform.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Deposit into a SuperVault in under 10 minutes.

Use this page when you want the fastest working integration. It skips deep explanation. For full detail, see [Vault Data](/build/earn/vault-data), [Deposit](/build/earn/deposit), and the [Client Library](/build/sdk).

**Time required:** \~10 minutes.

<Steps>
  <Step title="Pick a vault">
    Fetch all available SuperVaults on Base:

    ```bash theme={null}
    curl https://persephone.superform.xyz/v1/supervaults?chain_id=8453
    ```

    Filter to `availability: "available"` and `is_supervault_v_2: true`. Pick a vault address and note its `assets[0].address` (the token your user will deposit).

    Example (NVDA SuperVault):

    * Vault: `0xc441a2cc3a528b6312740448a70cc4d40f4d7bfc`
    * Underlying token (NVDAc): `0xb20000000000000000000078ee7ce2fe4908108c`
    * Decimals: 8
  </Step>

  <Step title="Check user balance">
    Confirm the user holds enough of the underlying token before calling the Bundler. The Bundler validates balance on-chain and returns a 400 error if insufficient.

    ```bash theme={null}
    curl https://persephone.superform.xyz/v1/balances/0xUSER_ADDRESS
    ```

    Or check on-chain directly via `balanceOf(user)` on the token contract.
  </Step>

  <Step title="Build the deposit">
    Call `/hooks/suggest/non-smart-account` with the user's wallet, source token, and target vault. Replace `100000000` with the actual token amount (8 decimals = `100000000` for 1 NVDAc).

    ```bash theme={null}
    curl -X POST https://bundler.superform.xyz/hooks/suggest/non-smart-account \
      -H "Content-Type: application/json" \
      -d '{
        "account": "0xUSER_WALLET_ADDRESS",
        "action": {
          "type": "DEPOSIT",
          "slippage": 50,
          "sources": [
            {
              "address": "0xb20000000000000000000078ee7ce2fe4908108c",
              "chain_id": 8453,
              "amount": "100000000"
            }
          ],
          "targets": [
            {
              "address": "0xc441a2cc3a528b6312740448a70cc4d40f4d7bfc",
              "chain_id": 8453,
              "vault_type": "SUPERVAULT",
              "amount_proportion": 1
            }
          ],
          "route_type": "OUTPUT",
          "outputs": []
        }
      }'
    ```

    The response contains `executions[]`, an ordered list of transactions to broadcast.
  </Step>

  <Step title="Broadcast">
    Send each transaction in order. Wait for on-chain confirmation before sending the next.

    ```
    executions[0] — ERC20.approve(vault, amount)   selector: 0x095ea7b3
    executions[1] — ERC4626.deposit(amount, user)  selector: 0x6e553f65
    ```

    Both carry `type: "DEPOSIT"`. Use array index, not type, to determine order.

    After `executions[1]` confirms, the user holds `superNVDA` shares and their deposit is live.
  </Step>
</Steps>

## Next steps

* [Redemption](/build/earn/redemption) — handle the async ERC-7540 request and claim lifecycle
* [Rewards](/build/earn/rewards) — display and claim Merkl rewards
* [Client Library](/build/sdk) — TypeScript and Python clients wrapping all of the above


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.