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

# Get Wallet DeFi Positions

> Retrieve DeFi positions across multiple protocols for a wallet address.

<Tip>
  This endpoint is currently in **beta**. Protocol coverage and response shape may evolve without notice until it is fully GA.
</Tip>

### Query Parameters

| Parameter     | Type   | Required | Description                                                  |
| ------------- | ------ | -------- | ------------------------------------------------------------ |
| `wallet`      | string | Yes      | Wallet address (EVM `0x...` format or Solana base58 format). |
| `blockchains` | string | Yes      | Blockchain name or ID (e.g., `solana`, `ethereum`).          |

### Step-by-Step Tutorial and Video Walkthrough

* Check out the guide: [Here](https://docs.mobula.io/guides/how-to-track-wallet-defi-positions)

### Supported Protocols

#### Solana

| Category       | Protocols                           |
| -------------- | ----------------------------------- |
| Lending        | Kamino, MarginFi, Solend            |
| DEX (LP)       | Orca, Raydium, Meteora              |
| Liquid Staking | Jito, Marinade, BlazeStake, Sanctum |
| Native Staking | Solana Stake Program                |
| Perps          | Drift                               |

#### EVM (Ethereum)

| Category       | Protocols                      |
| -------------- | ------------------------------ |
| Lending        | Aave V3                        |
| Liquid Staking | Lido (stETH, wstETH), Ether.Fi |
| Restaking      | EigenLayer                     |

***

### Usage Examples

* Query DeFi positions on Solana

```bash theme={null}
curl -X GET "https://api.mobula.io/api/2/wallet/defi-positions?wallet=7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs&blockchains=solana" \
  -H "Authorization: YOUR_API_KEY"
```

* Query DeFi positions on Ethereum

```bash theme={null}
curl -X GET "https://api.mobula.io/api/2/wallet/defi-positions?wallet=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&blockchains=ethereum" \
  -H "Authorization: YOUR_API_KEY"
```

***

### Response Format (Solana)

```json theme={null}
{
  "data": {
    "wallet": "6Doy9NiFN4euSrkzpbYfyZe7p3pkgERumMmvoGvDEGrP",
    "fetchedAt": "2026-01-07T13:44:48.674Z",
    "totalValueUSD": "5732.07",
    "totalDepositedUSD": "5732.07",
    "totalBorrowedUSD": "0.00",
    "totalRewardsUSD": "781.11",
    "protocols": [
      {
        "protocol": {
          "id": "orca",
          "name": "Orca",
          "url": "https://www.orca.so",
          "logo": "https://i.imgur.com/CdwWqKy.png",
          "category": "lp"
        },
        "totalValueUSD": "5389.51",
        "positions": [
          {
            "id": "orca-whirlpool-HjAfSzsb",
            "type": "liquidity",
            "name": "SOL/USDC LP",
            "valueUSD": 544.02,
            "tokens": [
              {
                "address": "So11111111111111111111111111111111111111112",
                "symbol": "SOL",
                "name": "Wrapped SOL",
                "decimals": 9,
                "amountRaw": "3804402285",
                "amountFormatted": 3.804402,
                "priceUSD": 138.1587,
                "valueUSD": 525.61
              },
              {
                "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                "symbol": "USDC",
                "name": "USD Coin",
                "decimals": 6,
                "amountRaw": "0",
                "amountFormatted": 0,
                "priceUSD": 1.0002,
                "valueUSD": 0
              }
            ],
            "rewards": [
              {
                "address": "So11111111111111111111111111111111111111112",
                "symbol": "SOL",
                "name": "SOL Fees",
                "decimals": 9,
                "amountRaw": "49891954",
                "amountFormatted": 0.049892,
                "priceUSD": 138.1587,
                "valueUSD": 6.89
              },
              {
                "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                "symbol": "USDC",
                "name": "USDC Fees",
                "decimals": 6,
                "amountRaw": "11513560",
                "amountFormatted": 11.51356,
                "priceUSD": 1.0002,
                "valueUSD": 11.52
              }
            ],
            "metadata": {
              "type": "liquidity",
              "poolAddress": "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ",
              "poolName": "SOL/USDC",
              "poolType": "clmm",
              "tickLower": -14784,
              "tickUpper": -11456,
              "inRange": false
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "jito",
          "name": "Jito",
          "url": "https://www.jito.network",
          "logo": "https://i.imgur.com/DlFDSQZ.png",
          "category": "liquid-staking"
        },
        "totalValueUSD": "64.86",
        "positions": [
          {
            "id": "jito-stake-jitosol-6Doy9NiF",
            "type": "stake",
            "name": "Jito Staked SOL",
            "valueUSD": 64.86,
            "tokens": [
              {
                "address": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
                "symbol": "JitoSOL",
                "name": "Jito Staked SOL",
                "decimals": 9,
                "amountRaw": "374736373",
                "amountFormatted": 0.374736,
                "priceUSD": 173.09,
                "valueUSD": 64.86
              }
            ],
            "metadata": {
              "type": "liquid-staking",
              "lstMint": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
              "lstSymbol": "JitoSOL",
              "exchangeRate": "1.254063",
              "apy": "0.0589"
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "marinade",
          "name": "Marinade",
          "url": "https://marinade.finance",
          "logo": "https://i.imgur.com/dPtPylG.png",
          "category": "liquid-staking"
        },
        "totalValueUSD": "4.20",
        "positions": [
          {
            "id": "marinade-stake-msol-6Doy9NiF",
            "type": "stake",
            "name": "Marinade Staked SOL",
            "valueUSD": 4.2,
            "tokens": [
              {
                "address": "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So",
                "symbol": "mSOL",
                "name": "Marinade Staked SOL",
                "decimals": 9,
                "amountRaw": "22490760",
                "amountFormatted": 0.022491,
                "priceUSD": 186.57,
                "valueUSD": 4.2
              }
            ],
            "metadata": {
              "type": "liquid-staking",
              "lstMint": "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So",
              "lstSymbol": "mSOL",
              "exchangeRate": "1.350434",
              "apy": "0.0605"
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "drift",
          "name": "Drift",
          "url": "https://app.drift.trade",
          "logo": "https://i.imgur.com/NGsiS9n.png",
          "category": "perps"
        },
        "totalValueUSD": "1250.50",
        "positions": [
          {
            "id": "drift-perp-0-subaccount-0",
            "type": "leverage",
            "name": "drift-sol-usd LONG",
            "valueUSD": 1250.50,
            "tokens": [],
            "metadata": {
              "type": "perp",
              "id": "drift-perp-0-subaccount-0",
              "marketId": "drift-sol-usd",
              "exchange": "drift",
              "side": "BUY",
              "entryPriceQuote": 180.5,
              "currentPriceQuote": 185.2,
              "currentLeverage": 5.2,
              "liquidationPriceQuote": 145.8,
              "amountUSD": 6500.0,
              "amountRaw": "35000000000",
              "unrealizedPnlUSD": 250.50,
              "unrealizedPnlPercent": 20.04,
              "realizedPnlUSD": 0,
              "realizedPnlPercent": 0,
              "feesOpeningUSD": 0,
              "feesClosingUSD": 0,
              "feesFundingUSD": 0,
              "tp": [],
              "sl": [],
              "lastUpdate": "2026-01-15T10:30:00.000Z",
              "address": "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",
              "chainId": "solana:solana",
              "collateralAsset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "solana-native-staking",
          "name": "Solana Native Staking",
          "url": "https://solana.com/staking",
          "logo": "https://i.imgur.com/QV2QY1p.png",
          "category": "native-staking"
        },
        "totalValueUSD": "862658.11",
        "positions": [
          {
            "id": "solana-native-staking-2zkWd6QsjgGMqJ5qmRCt8hRmyiRCEDx3SYXaR288Maa9",
            "type": "stake",
            "name": "Staked SOL (active)",
            "valueUSD": 849949.53,
            "tokens": [
              {
                "address": "So11111111111111111111111111111111111111112",
                "symbol": "SOL",
                "name": "Solana",
                "decimals": 9,
                "amountRaw": "6688000000000",
                "amountFormatted": 6688,
                "priceUSD": 127.09,
                "valueUSD": 849949.53
              }
            ],
            "metadata": {
              "type": "native-staking",
              "stakeAccountAddress": "2zkWd6QsjgGMqJ5qmRCt8hRmyiRCEDx3SYXaR288Maa9",
              "validatorVoteAccount": "7MKUXUiiVeWFwLaNyw5exkujXnen5yB77hQa54KLD98h",
              "validatorCommission": 5,
              "activationState": "active",
              "activationEpoch": 882,
              "currentEpoch": 915,
              "apy": "5.58"
            }
          }
        ]
      }
    ]
  }
}
```

### Response Format (Ethereum)

```json theme={null}
{
  "data": {
    "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "fetchedAt": "2026-01-28T10:30:00.000Z",
    "totalValueUSD": "125000.00",
    "totalDepositedUSD": "125000.00",
    "totalBorrowedUSD": "0.00",
    "totalRewardsUSD": "0.00",
    "protocols": [
      {
        "protocol": {
          "id": "lido-steth",
          "name": "Lido",
          "url": "https://lido.fi",
          "logo": "https://i.imgur.com/oQeRf5a.png",
          "category": "liquid-staking"
        },
        "totalValueUSD": "50000.00",
        "positions": [
          {
            "id": "lido-steth-stake-steth-0xd8dA6BF2",
            "type": "stake",
            "name": "Lido Staked ETH",
            "valueUSD": 50000.00,
            "tokens": [
              {
                "address": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
                "symbol": "stETH",
                "name": "Lido Staked ETH",
                "decimals": 18,
                "amountRaw": "15000000000000000000",
                "amountFormatted": 15.0,
                "priceUSD": 3333.33,
                "valueUSD": 50000.00
              }
            ],
            "metadata": {
              "type": "liquid-staking",
              "lstMint": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
              "lstSymbol": "stETH",
              "exchangeRate": "1.000000",
              "apy": "0.0350"
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "etherfi",
          "name": "Ether.Fi",
          "url": "https://www.ether.fi",
          "logo": "https://i.imgur.com/hSxOVGx.png",
          "category": "liquid-staking"
        },
        "totalValueUSD": "25000.00",
        "positions": [
          {
            "id": "etherfi-stake-weeth-0xd8dA6BF2",
            "type": "stake",
            "name": "Wrapped eETH",
            "valueUSD": 25000.00,
            "tokens": [
              {
                "address": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee",
                "symbol": "weETH",
                "name": "Wrapped eETH",
                "decimals": 18,
                "amountRaw": "7000000000000000000",
                "amountFormatted": 7.0,
                "priceUSD": 3571.43,
                "valueUSD": 25000.00
              }
            ],
            "metadata": {
              "type": "liquid-staking",
              "lstMint": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee",
              "lstSymbol": "weETH",
              "exchangeRate": "1.071500",
              "apy": "0.0380"
            }
          }
        ]
      },
      {
        "protocol": {
          "id": "eigenlayer",
          "name": "EigenLayer",
          "url": "https://app.eigenlayer.xyz",
          "logo": "https://i.imgur.com/zOYFWGK.png",
          "category": "restaking"
        },
        "totalValueUSD": "50000.00",
        "positions": [
          {
            "id": "eigenlayer-stake-steth",
            "type": "stake",
            "name": "stETH Restaked",
            "valueUSD": 50000.00,
            "tokens": [
              {
                "address": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
                "symbol": "stETH",
                "name": "stETH",
                "decimals": 18,
                "amountRaw": "15000000000000000000",
                "amountFormatted": 15.0,
                "priceUSD": 3333.33,
                "valueUSD": 50000.00
              }
            ],
            "metadata": {
              "type": "restaking",
              "strategyAddress": "0x93c4b944D05dfe6df7645A86cd2206016c51564D",
              "strategyName": "stETH Strategy",
              "underlyingToken": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84",
              "underlyingSymbol": "stETH",
              "operatorAddress": "0x1234567890123456789012345678901234567890",
              "isDelegated": true,
              "sharesRaw": "15000000000000000000"
            }
          }
        ]
      }
    ]
  }
}
```

***

### Metadata by Category

#### Lending Metadata

| Field                  | Type   | Description                                      |
| ---------------------- | ------ | ------------------------------------------------ |
| `market`               | string | Market name (e.g., "Main Market", "JLP Market"). |
| `healthFactor`         | string | Account health factor.                           |
| `liquidationThreshold` | string | Liquidation threshold.                           |
| `ltv`                  | string | Loan-to-value ratio.                             |
| `supplyAPY`            | string | Total supply APY (base + token yield).           |
| `baseSupplyAPY`        | string | Base lending APY from protocol.                  |
| `tokenAPY`             | string | Native yield for LSTs/yield-bearing tokens.      |
| `borrowAPY`            | string | Borrow APY.                                      |
| `utilizationRate`      | string | Reserve utilization rate.                        |

#### Liquidity (DEX) Metadata

| Field         | Type    | Description                             |
| ------------- | ------- | --------------------------------------- |
| `poolAddress` | string  | Pool contract address.                  |
| `poolName`    | string  | Pool name (e.g., "SOL/USDC").           |
| `poolType`    | string  | Pool type: `amm`, `clmm`, or `dlmm`.    |
| `shareOfPool` | string  | User's share of the pool.               |
| `fee24h`      | string  | Fees earned in last 24 hours.           |
| `apy`         | string  | Estimated APY.                          |
| `tickLower`   | number  | Lower tick bound (CLMM/DLMM only).      |
| `tickUpper`   | number  | Upper tick bound (CLMM/DLMM only).      |
| `inRange`     | boolean | Whether position is currently in range. |

#### Liquid Staking Metadata

| Field            | Type   | Description                                                            |
| ---------------- | ------ | ---------------------------------------------------------------------- |
| `lstMint`        | string | LST token address (Solana mint or EVM contract).                       |
| `lstSymbol`      | string | LST token symbol (e.g., "mSOL", "JitoSOL", "stETH", "wstETH", "eETH"). |
| `exchangeRate`   | string | LST to native token exchange rate.                                     |
| `apy`            | string | Staking APY.                                                           |
| `unstakePending` | string | Amount pending unstake (Solana: SOL, EVM: varies by protocol).         |

**Supported LST Protocols:**

* **Solana**: Jito (JitoSOL), Marinade (mSOL), BlazeStake (bSOL), Sanctum (various LSTs)
* **EVM**: Lido (stETH, wstETH), Ether.Fi (eETH, weETH)

#### Restaking Metadata

| Field              | Type    | Description                                       |
| ------------------ | ------- | ------------------------------------------------- |
| `strategyAddress`  | string  | EigenLayer strategy contract address.             |
| `strategyName`     | string  | Strategy name (e.g., "stETH Strategy").           |
| `underlyingToken`  | string  | Underlying token address.                         |
| `underlyingSymbol` | string  | Underlying token symbol (e.g., "stETH", "cbETH"). |
| `operatorAddress`  | string  | Delegated operator address (if delegated).        |
| `isDelegated`      | boolean | Whether shares are delegated to an operator.      |
| `sharesRaw`        | string  | Raw shares amount (bigint as string).             |

**Supported Restaking Protocols:**

* **EVM**: EigenLayer (Ethereum mainnet)

#### Native Staking Metadata

| Field                  | Type   | Description                                                        |
| ---------------------- | ------ | ------------------------------------------------------------------ |
| `stakeAccountAddress`  | string | Solana stake account address.                                      |
| `validatorVoteAccount` | string | Validator vote account address.                                    |
| `validatorName`        | string | Validator name (if available).                                     |
| `validatorCommission`  | number | Validator commission percentage (0-100).                           |
| `activationState`      | string | Stake state: `activating`, `active`, `deactivating`, `inactive`.   |
| `activationEpoch`      | number | Epoch when stake was activated.                                    |
| `deactivationEpoch`    | number | Epoch when stake deactivation started (if applicable).             |
| `currentEpoch`         | number | Current Solana epoch.                                              |
| `apy`                  | string | Estimated staking APY based on inflation and validator commission. |

#### Perps Metadata

| Field                   | Type   | Description                                                       |
| ----------------------- | ------ | ----------------------------------------------------------------- |
| `id`                    | string | Unique position identifier.                                       |
| `marketId`              | string | Market identifier (e.g., "drift-sol-usd").                        |
| `exchange`              | string | Exchange name: `drift`, `gains`, `hyperliquid`, `gte`, `lighter`. |
| `side`                  | string | Position side: `BUY` (Long) or `SELL` (Short).                    |
| `entryPriceQuote`       | number | Entry price.                                                      |
| `currentPriceQuote`     | number | Current mark/oracle price.                                        |
| `currentLeverage`       | number | Current effective leverage.                                       |
| `liquidationPriceQuote` | number | Estimated liquidation price.                                      |
| `amountUSD`             | number | Position size in USD.                                             |
| `amountRaw`             | string | Raw position amount (bigint as string).                           |
| `unrealizedPnlUSD`      | number | Unrealized profit/loss in USD.                                    |
| `unrealizedPnlPercent`  | number | Unrealized PnL as percentage.                                     |
| `realizedPnlUSD`        | number | Realized profit/loss in USD.                                      |
| `realizedPnlPercent`    | number | Realized PnL as percentage.                                       |
| `feesOpeningUSD`        | number | Opening fees in USD.                                              |
| `feesClosingUSD`        | number | Closing fees in USD.                                              |
| `feesFundingUSD`        | number | Cumulative funding fees in USD.                                   |
| `tp`                    | array  | Take profit orders: `[{size, price, id}]`.                        |
| `sl`                    | array  | Stop loss orders: `[{size, price, id}]`.                          |
| `openDate`              | string | Position open date (ISO 8601).                                    |
| `lastUpdate`            | string | Last update timestamp (ISO 8601).                                 |
| `address`               | string | Wallet address.                                                   |
| `chainId`               | string | Chain identifier (e.g., "solana:solana").                         |
| `collateralAsset`       | string | Collateral token address.                                         |


## OpenAPI

````yaml get /2/wallet/defi-positions
openapi: 3.0.0
info:
  version: 1.0.0
  title: Mobula API
  description: >-
    Documentation of the Mobula API


    **Demo API**: The default server (demo-api.mobula.io) is a demo API with
    rate limits.

    For production use, please use api.mobula.io with an API key from
    https://admin.mobula.io
servers:
  - url: https://demo-api.mobula.io/api/
    description: Demo API (rate limited, for testing only)
  - url: https://api.mobula.io/api/
    description: Production API (requires API key)
security: []
tags:
  - name: V2 - Token
    description: Token details, price, security, ATH, and holder data
  - name: V2 - Market Data
    description: Market details, OHLCV history, and lighthouse metrics
  - name: V2 - Trades
    description: Token trades, enriched trades, and trade filters
  - name: V2 - Wallet
    description: Wallet positions, activity, trades, analysis, and labels
  - name: V2 - Assets
    description: Cross-chain asset details and price history
  - name: V2 - Swap
    description: Swap quoting and execution
  - name: V2 - Perps
    description: Perpetual futures quoting, execution, and positions
  - name: V2 - Bridge
    description: Cross-chain bridge quoting and intent status (Alpha Preview)
  - name: V2 - DeFi
    description: Bonding pools and pulse data
  - name: V2 - Search
    description: Universal fast search
  - name: V2 - Usage
    description: Per-key API and WebSocket usage history
  - name: V2 - Blockchains
    description: System metadata and chain listings
  - name: V2 - Prediction Markets
    description: >-
      Polymarket markets/events, wallet positions, and the full execution stack
      (auth, order build/submit/cancel, approvals, pUSD wrap/unwrap, deploy,
      deposit/withdraw, redeem). Alpha — see /api/2/pm/*.
  - name: V1 - Market Data
    description: Market prices, history, sparklines, pairs, and multi-data
  - name: V1 - Wallet
    description: Wallet portfolio, transactions, history, and NFTs
  - name: V1 - Token
    description: First buyers
  - name: V1 - Trades
    description: Market trades by pair
  - name: V1 - Metadata
    description: Token metadata, categories, trendings, and news
  - name: V1 - Assets
    description: List all assets
  - name: V1 - Search
    description: Search for assets, tokens, and pairs
  - name: V1 - DeFi
    description: Bonding pool pulse data
  - name: V1 - Blockchains
    description: Blockchain listings, pairs, and stats
  - name: V1 - Webhooks
    description: Webhook management
  - name: V1 - Feed
    description: Custom feed creation
paths:
  /2/wallet/defi-positions:
    get:
      tags:
        - V2 - Wallet
      summary: Get Wallet Defi-Positions
      parameters:
        - schema:
            anyOf:
              - type: string
                minLength: 32
                maxLength: 44
              - type: string
                pattern: ^0x[a-fA-F0-9]{40}$
              - type: string
                pattern: ^G[A-Z2-7]{55}$
            description: Wallet address (EVM or Solana)
          required: true
          description: Wallet address (EVM or Solana)
          name: wallet
          in: query
        - schema:
            type: string
            description: Chain ID to fetch positions from (e.g., "solana:solana", "evm:1")
          required: false
          description: Chain ID to fetch positions from (e.g., "solana:solana", "evm:1")
          name: chainIds
          in: query
      responses:
        '200':
          description: Wallet Defi-Positions response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        protocol:
                          type: object
                          properties:
                            name:
                              type: string
                            id:
                              type: string
                            logo:
                              type: string
                            url:
                              type: string
                          required:
                            - name
                            - id
                            - logo
                            - url
                        positions:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                              name:
                                type: string
                              chain_id:
                                type: string
                              contract:
                                type: string
                              created_at:
                                type: string
                                nullable: true
                              tokens:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    symbol:
                                      type: string
                                    contract:
                                      type: string
                                    amount:
                                      type: string
                                    amountRaw:
                                      type: string
                                    decimals:
                                      type: string
                                    amount_usd:
                                      type: string
                                    logo:
                                      type: string
                                      nullable: true
                                    price_usd:
                                      type: string
                                      nullable: true
                                  required:
                                    - name
                                    - symbol
                                    - contract
                                    - amount
                                    - amountRaw
                                    - decimals
                                    - amount_usd
                                    - logo
                                    - price_usd
                              rewards:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    symbol:
                                      type: string
                                    contract:
                                      type: string
                                    amount:
                                      type: string
                                    amountRaw:
                                      type: string
                                    decimals:
                                      type: string
                                    amount_usd:
                                      type: string
                                    price_usd:
                                      type: string
                                  required:
                                    - name
                                    - symbol
                                    - contract
                                    - amount
                                    - amountRaw
                                    - decimals
                                    - amount_usd
                                    - price_usd
                              extra:
                                type: object
                                properties:
                                  lp_token_amount:
                                    type: string
                                  position_staked_amount:
                                    type: string
                                  factory:
                                    type: string
                                  share_of_pool:
                                    type: string
                                  type:
                                    type: string
                                    enum:
                                      - supply
                                      - borrow
                                  health_factor:
                                    type: number
                                  reserve0:
                                    type: string
                                  reserve1:
                                    type: string
                                  reserve_usd:
                                    type: number
                            required:
                              - type
                              - name
                              - chain_id
                              - contract
                              - created_at
                              - tokens
                      required:
                        - protocol
                        - positions
                  wallets:
                    type: array
                    items:
                      type: string
                required:
                  - data
                  - wallets

````