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

# Introduction

> Read-only Solana DeFi positions with explicit coverage and sourced USD values.

> [!WARNING]
>
> **Private alpha, partial coverage.** The API is in private alpha (`release_status: "alpha_partial"`): a token is
> required and only some protocols are covered. See [Supported protocols](https://docs.lucidblock.xyz/reference/supported-protocols.md).

**Read-only Solana DeFi positions with explicit coverage and sourced USD values.**

## What it does

Give it a Solana wallet address and it returns the wallet's positions in the protocols it supports, from verified
adapters only. Every position is broken into legs with exact amounts read from chain state. A USD value is given only
where it can be sourced, and is `null` otherwise, never a guessed zero.

## Your first request

```bash theme={null}
BASE_URL="https://api.lucidblock.xyz"
curl -s -H "Authorization: Bearer $LUCIDBLOCK_TOKEN" \
  "$BASE_URL/v1/solana/wallets/G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH/defi-positions?protocols=native_stake"
```

A captured response, filtered to native stake (the first request for a wallet may return `202` with a job to poll; see
[Quickstart](https://docs.lucidblock.xyz/quickstart.md#your-first-request-in-60-seconds); add `?wait=8` to get the snapshot in one call in most
cases):

> [accordion] Captured example
>
> `GET /v1/solana/wallets/G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH/defi-positions?protocols=native_stake` → `200` (captured 2026-11-12 from local `positions-filtered`)
>
> ```json theme={null}
> {
>   "chain": "solana",
>   "network": "mainnet-beta",
>   "wallet": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH",
>   "snapshot_id": "a19b0669-78d1-4d65-a9f0-60f32c0fbb95",
>   "release_status": "alpha_partial",
>   "as_of": "2026-11-12T20:33:30Z",
>   "observed_slots": {
>     "minimum": 468660578,
>     "maximum": 468660591
>   },
>   "snapshot_consistency": "multi_slot",
>   "refreshing": false,
>   "refresh_job_id": null,
>   "freshness": {
>     "age_seconds": 6,
>     "stale": false,
>     "max_age_seconds": 120
>   },
>   "coverage": {
>     "status": "complete_for_supported_protocols",
>     "universe": "supported_adapters_only",
>     "supported_protocol_count": 1,
>     "completed_protocol_count": 1,
>     "failed_protocol_count": 0,
>     "unsupported_programs_detected": null,
>     "protocols": [
>       {
>         "id": "native_stake",
>         "adapter_version": "1.0.0",
>         "status": "complete",
>         "warnings": [],
>         "error_code": null
>       }
>     ],
>     "wallet_token_scan": {
>       "spl_token": "complete",
>       "token_2022": "complete",
>       "token_accounts_found": 1
>     },
>     "warnings": [
>       "program_discovery_not_run"
>     ],
>     "skipped_protocol_count": 0
>   },
>   "positions": [
>     {
>       "id": "solana:native_stake:116vkzEjoTpFEd3x12XL9HbYJ5EpoC4cZ9a1N5A5mUt",
>       "protocol": {
>         "id": "native_stake",
>         "name": "Solana Stake",
>         "program_id": "Stake11111111111111111111111111111111111111"
>       },
>       "position_type": "native_staking",
>       "category": "native_staking",
>       "position_account": "116vkzEjoTpFEd3x12XL9HbYJ5EpoC4cZ9a1N5A5mUt",
>       "owner_role": "withdraw_authority",
>       "market": "BULKEEKf9Hjy4nwCthjzheEk4joH23LLXttAHjqEZmB2",
>       "assets": [
>         {
>           "role": "staked",
>           "mint": "So11111111111111111111111111111111111111112",
>           "symbol": "SOL",
>           "amount_raw": "216875911",
>           "decimals": 9,
>           "amount": "0.216875911",
>           "price_usd": "81.5403431471040927",
>           "value_usd": "17.684136203280807116",
>           "pricing_source": "builtin:raydium-amm-v4",
>           "price_as_of": "2026-11-12T20:31:41.000Z",
>           "valuation_status": "priced",
>           "confidence": "qualified",
>           "claimable": null,
>           "amount_basis": "exact",
>           "informational": false,
>           "in_totals": true,
>           "market_price_usd": null,
>           "protocol_mark_price_usd": null,
>           "price_warnings": [],
>           "exclusion_reason": null,
>           "context": {
>             "account": "116vkzEjoTpFEd3x12XL9HbYJ5EpoC4cZ9a1N5A5mUt",
>             "as_of_slot": null,
>             "status": "deactivating",
>             "reward_index": null
>           }
>         }
>       ],
>       "debts": [],
>       "rewards": [],
>       "net_value_usd": "17.684136203280807116",
>       "known_value_usd": "17.684136203280807116",
>       "valuation": {
>         "status": "complete",
>         "priced_leg_count": 1,
>         "indicative_leg_count": 0,
>         "unpriced_leg_count": 0
>       },
>       "accounting": {
>         "counts_toward_totals": true,
>         "parent_position_id": null,
>         "carried_forward_from_snapshot": null
>       },
>       "flags": [],
>       "evidence": {
>         "slot": 468660586,
>         "adapter_version": "1.0.0",
>         "method": "program_accounts",
>         "accounts": [
>           "116vkzEjoTpFEd3x12XL9HbYJ5EpoC4cZ9a1N5A5mUt",
>           "SysvarC1ock11111111111111111111111111111111",
>           "SysvarStakeHistory1111111111111111111111111"
>         ],
>         "decoder_hash": "8fbf40e8f01970828a97b687ff32048248b48df81c0a3e89f0c1b853e8ef1108"
>       },
>       "details": {
>         "state_tag": 2,
>         "status": "deactivating",
>         "active_lamports": "0",
>         "activating_lamports": "0",
>         "deactivating_lamports": "214582445",
>         "inactive_lamports": "10586",
>         "rent_exempt_reserve": "2282880",
>         "breakdown_reserve_lamports": "2282880",
>         "delegated_stake": "214582445",
>         "activation_epoch": "943",
>         "deactivation_epoch": "1084",
>         "voter": "BULKEEKf9Hjy4nwCthjzheEk4joH23LLXttAHjqEZmB2",
>         "lockup": {
>           "unix_timestamp": "0",
>           "epoch": "0",
>           "custodian": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH"
>         },
>         "locked": false,
>         "withdrawable_now_lamports": "10586",
>         "wallet_is_staker": true,
>         "staker": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH",
>         "withdrawer": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH",
>         "activation_method": "agave_exact",
>         "clock_epoch": "1084"
>       },
>       "warnings": []
>     },
>     {
>       "id": "solana:native_stake:AkKezL7CHq8242RtV4i53gGTmZ13EJC87AinsXXWVnNX",
>       "protocol": {
>         "id": "native_stake",
>         "name": "Solana Stake",
>         "program_id": "Stake11111111111111111111111111111111111111"
>       },
>       "position_type": "native_staking",
>       "category": "native_staking",
>       "position_account": "AkKezL7CHq8242RtV4i53gGTmZ13EJC87AinsXXWVnNX",
>       "owner_role": "withdraw_authority",
>       "market": "2NxEEbhqqj1Qptq5LXLbDTP5tLa9f7PqkU8zNgxbGU9P",
>       "assets": [
>         {
>           "role": "staked",
>           "mint": "So11111111111111111111111111111111111111112",
>           "symbol": "SOL",
>           "amount_raw": "34072977",
>           "decimals": 9,
>           "amount": "0.034072977",
>           "price_usd": "81.5403431471040927",
>           "value_usd": "2.778322236623385367",
>           "pricing_source": "builtin:raydium-amm-v4",
>           "price_as_of": "2026-11-12T20:31:41.000Z",
>           "valuation_status": "priced",
>           "confidence": "qualified",
>           "claimable": null,
>           "amount_basis": "exact",
>           "informational": false,
>           "in_totals": true,
>           "market_price_usd": null,
>           "protocol_mark_price_usd": null,
>           "price_warnings": [],
>           "exclusion_reason": null,
>           "context": {
>             "account": "AkKezL7CHq8242RtV4i53gGTmZ13EJC87AinsXXWVnNX",
>             "as_of_slot": null,
>             "status": "active",
>             "reward_index": null
>           }
>         }
>       ],
>       "debts": [],
>       "rewards": [],
>       "net_value_usd": "2.778322236623385367",
>       "known_value_usd": "2.778322236623385367",
>       "valuation": {
>         "status": "complete",
>         "priced_leg_count": 1,
>         "indicative_leg_count": 0,
>         "unpriced_leg_count": 0
>       },
>       "accounting": {
>         "counts_toward_totals": true,
>         "parent_position_id": null,
>         "carried_forward_from_snapshot": null
>       },
>       "flags": [],
>       "evidence": {
>         "slot": 468660586,
>         "adapter_version": "1.0.0",
>         "method": "program_accounts",
>         "accounts": [
>           "AkKezL7CHq8242RtV4i53gGTmZ13EJC87AinsXXWVnNX",
>           "SysvarC1ock11111111111111111111111111111111",
>           "SysvarStakeHistory1111111111111111111111111"
>         ],
>         "decoder_hash": "8fbf40e8f01970828a97b687ff32048248b48df81c0a3e89f0c1b853e8ef1108"
>       },
>       "details": {
>         "state_tag": 2,
>         "status": "active",
>         "active_lamports": "31535374",
>         "activating_lamports": "0",
>         "deactivating_lamports": "0",
>         "inactive_lamports": "254723",
>         "rent_exempt_reserve": "2282880",
>         "breakdown_reserve_lamports": "2282880",
>         "delegated_stake": "31535374",
>         "activation_epoch": "714",
>         "deactivation_epoch": "max",
>         "voter": "2NxEEbhqqj1Qptq5LXLbDTP5tLa9f7PqkU8zNgxbGU9P",
>         "lockup": {
>           "unix_timestamp": "0",
>           "epoch": "0",
>           "custodian": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH"
>         },
>         "locked": false,
>         "withdrawable_now_lamports": "254723",
>         "wallet_is_staker": true,
>         "staker": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH",
>         "withdrawer": "G4VmLamEV6h15gndx7nHn8TTcu7fJkBBNVN3wTugMNtH",
>         "activation_method": "agave_exact",
>         "clock_epoch": "1084"
>       },
>       "warnings": []
>     }
>   ],
>   "page": {
>     "limit": 100,
>     "returned": 2,
>     "total_positions": 2,
>     "next_cursor": null,
>     "page_complete": true
>   },
>   "totals": {
>     "total_value_usd": "20.462458439904192483",
>     "known_value_usd": "20.462458439904192483",
>     "total_null_reasons": [],
>     "unpriced_position_count": 0,
>     "priced_leg_count": 2,
>     "indicative_leg_count": 0,
>     "unpriced_leg_count": 0,
>     "excluded": {
>       "indicative_value_usd": null,
>       "stale_value_usd": null,
>       "estimated_rewards_value_usd": null,
>       "claimable_rewards_not_included_usd": null,
>       "staker_only_value_usd": null
>     },
>     "valuation_status": "complete",
>     "include_rewards_in_total": false,
>     "price_sources": [],
>     "note": "Value includes only the explicitly supported scanned DeFi universe; it is not universal wallet net worth."
>   },
>   "request": {
>     "include": [
>       "underlying",
>       "rewards",
>       "valuation"
>     ],
>     "protocols": [
>       "native_stake"
>     ],
>     "freshness_seconds": 120,
>     "include_rewards_in_total": false,
>     "limit": 100
>   }
> }
> ```

## Why it's different

* **Explicit coverage.** Every snapshot lists each supported protocol as `complete`, `partial`, `error`,
  `not_applicable` or `skipped`. The absence of a position means something only for `complete` protocols.
* **Null, not zero.** Unknown values are `null`. `total_value_usd` is `null` unless coverage is complete and every
  counted leg is priced, and `total_null_reasons` says why.
* **Per-leg provenance.** Each leg names its `pricing_source`, `price_as_of` and `valuation_status`.
* **No double counting.** LSTs, LP receipts and nested vaults are counted once.
* **Read-only.** No wallet connection, no signature, no transaction.

## Key features

* 26 verified adapters across lending, concentrated, bin and
  fungible liquidity, vaults, native and liquid staking, perpetuals and rewards: see
  [Supported protocols](https://docs.lucidblock.xyz/reference/supported-protocols.md).
* Built-in on-chain prices, refreshed every 2 minutes; LSTs valued by redemption rate.
* Async scans: `202` + job polling for cold wallets, or one call with `?wait=8`; stale snapshots (at most 10 minutes
  old) served at once while a refresh runs.
* Optional wallet token balances with `include=tokens`, kept separate from the DeFi totals.

## Honest limits

* **Supported universe only: not wallet net worth.** Protocols outside [the supported list](https://docs.lucidblock.xyz/reference/supported-protocols.md) are not
  seen at all.
* Alpha and partial: `release_status` is `alpha_partial`.
* Snapshots are not atomic (`snapshot_consistency: multi_slot`).
* No history: each snapshot is the current state.
* Not an oracle: prices are not executable quotes.
* Orca Whirlpools is pending licence clearance; Drift is not supported; Pyth is not used.

## Where to go next

> [card] [Quickstart](https://docs.lucidblock.xyz/quickstart.md)
>
> Your first wallet snapshot, and how to read it.

> [card] [Concepts](https://docs.lucidblock.xyz/concepts/coverage-and-valuation.md)
>
> Coverage, null-not-zero, totals and freshness.

> [card] [Supported protocols](https://docs.lucidblock.xyz/reference/supported-protocols.md)
>
> Every verified adapter and its limitations.

> [card] [API reference](https://docs.lucidblock.xyz/api-reference/overview.md)
>
> Conventions, and every endpoint from the OpenAPI contract.

> [card] [Errors](https://docs.lucidblock.xyz/reference/errors.md)
>
> The error envelope and every code.

> [card] [FAQ](https://docs.lucidblock.xyz/help/faq.md)
>
> Answers to the common developer questions.


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