Cambrian V2 - Provider Summary API

By Cambrian Network evm

GET /api/v1/evm/aero/v2/provider-summary

V2 - Provider Summary

Overview

Returns the Aerodrome V2 liquidity-provider summary and portfolio metrics for a given wallet address on an EVM chain. Portfolio-wide USD aggregates and weighted APRs are null if any represented position cannot be fully priced; per-pool and per-token values are nullable independently.

Business Value

  • Portfolio Analysis: Understand concentration risk and token exposure across multiple liquidity pools
  • Performance Tracking: Monitor historical fees earned and APR performance over 7-day and 30-day periods
  • Position Management: Analyze position sizes and distribution to optimize capital allocation
  • Risk Assessment: Calculate HHI concentration index to measure portfolio diversification
  • Strategic Planning: Identify top performing pools and fee opportunities for future positions

Endpoint Details

URL:

https://api.cambrian.org/evm/aero/v2/provider-summary

Method: GET
Authentication: Required via X-API-Key header

Query Parameters

Parameter Type Required Default Description
chain_id integer No 8453 EVM chain ID. Enum: [8453]
wallet_address string Yes - Liquidity provider address with 0x prefix

Response Field Descriptions

Response Field Type Description
providerId String Liquidity provider wallet address
totalValueLockedUsd Nullable(Float64) Total USD value locked across all positions; null if any position cannot be fully priced
activePositionCount UInt64 Number of currently active liquidity positions
totalFeesEarned7d Nullable(Float64) Total fees earned in USD over the trailing 7 days
averageAPR7dWeighted Nullable(Float64) Position-size-weighted average APR over the trailing 7 days
firstPositionTimestamp Nullable(DateTime('UTC')) Timestamp of the provider's first liquidity position
lastActiveTimestamp Nullable(DateTime('UTC')) Timestamp of the provider's most recent activity
poolCount UInt64 Number of distinct pools the provider has positions in
topPoolsData Array(Tuple(FixedString(42), String, String, Nullable(Float64), Nullable(Float64))) Top pools by size: pool address, token0 symbol, token1 symbol, position value USD, share of portfolio
tokenExposure Array(Tuple(FixedString(42), String, Float64, Nullable(Float64), Nullable(Float64))) Per-token exposure: token address, token symbol, token amount, USD value, share of portfolio
averagePositionSizeUsd Nullable(Float64) Average USD size of the provider's positions
medianPositionSizeUsd Nullable(Float64) Median USD size of the provider's positions
minPositionSizeUsd Nullable(Float64) Smallest USD position size
maxPositionSizeUsd Nullable(Float64) Largest USD position size
hhiConcentrationIndex Nullable(Float64) Herfindahl-Hirschman Index measuring portfolio concentration across positions
totalFeesEarned30d Nullable(Float64) Total fees earned in USD over the trailing 30 days
averageAPR30dWeighted Nullable(Float64) Position-size-weighted average APR over the trailing 30 days
feeAprByPool30d Array(Tuple(FixedString(42), String, String, Nullable(Float64), Nullable(Float64))) Per-pool 30-day fee APR breakdown: pool address, token0 symbol, token1 symbol, fee amount USD, weighted APR

Examples

1. Retrieve Provider Summary for a Wallet

Fetches the Aerodrome V2 liquidity-provider summary for a specific wallet address on Base (chain ID 8453).

curl -X GET "https://api.cambrian.org/evm/aero/v2/provider-summary?wallet_address=0x8115afd8dffce5579381ad27524b6feeae917bef" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      {
        "name": "providerId",
        "type": "String"
      },
      {
        "name": "totalValueLockedUsd",
        "type": "Nullable(Float64)"
      },
      {
        "name": "activePositionCount",
        "type": "UInt64"
      },
      {
        "name": "totalFeesEarned7d",
        "type": "Nullable(Float64)"
      },
      {
        "name": "averageAPR7dWeighted",
        "type": "Nullable(Float64)"
      },
      {
        "name": "firstPositionTimestamp",
        "type": "Nullable(DateTime('UTC'))"
      },
      {
        "name": "lastActiveTimestamp",
        "type": "Nullable(DateTime('UTC'))"
      },
      {
        "name": "poolCount",
        "type": "UInt64"
      },
      {
        "name": "topPoolsData",
        "type": "Array(Tuple(FixedString(42),String,String,Nullable(Float64),Nullable(Float64)))"
      },
      {
        "name": "tokenExposure",
        "type": "Array(Tuple(FixedString(42),String,Float64,Nullable(Float64),Nullable(Float64)))"
      },
      {
        "name": "averagePositionSizeUsd",
        "type": "Nullable(Float64)"
      },
      {
        "name": "medianPositionSizeUsd",
        "type": "Nullable(Float64)"
      },
      {
        "name": "minPositionSizeUsd",
        "type": "Nullable(Float64)"
      },
      {
        "name": "maxPositionSizeUsd",
        "type": "Nullable(Float64)"
      },
      {
        "name": "hhiConcentrationIndex",
        "type": "Nullable(Float64)"
      },
      {
        "name": "totalFeesEarned30d",
        "type": "Nullable(Float64)"
      },
      {
        "name": "averageAPR30dWeighted",
        "type": "Nullable(Float64)"
      },
      {
        "name": "feeAprByPool30d",
        "type": "Array(Tuple(FixedString(42),String,String,Nullable(Float64),Nullable(Float64)))"
      }
    ],
    "data": [
      [
        "0x8115afd8dffce5579381ad27524b6feeae917bef",
        null,
        3,
        null,
        null,
        "2025-05-04T15:37:35+00:00",
        "2025-11-14T21:23:41+00:00",
        3,
        [
          [
            "0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d",
            "USDC",
            "AERO",
            7.64293913380204,
            null
          ],
          [
            "0xcdac0d6c6c59727a65f871236188350531885c43",
            "WETH",
            "USDC",
            4.0592370820075985,
            null
          ],
          [
            "0x55b27dbddf95a55bd46d0284348dc8231cd72a2c",
            "USDC.e",
            "Unitos.net",
            null,
            null
          ]
        ],
        [
          [
            "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
            "USDC",
            5.846573580342932,
            5.846573580342932,
            null
          ],
          [
            "0x940181a94a35a4569e4529a3cdfb74e38fd98631",
            "AERO",
            9.258544786616937,
            3.8259097792025174,
            null
          ],
          [
            "0x4200000000000000000000000000000000000006",
            "WETH",
            0.0010864921894428372,
            2.0296928562641887,
            null
          ],
          [
            "0x04e4dfbdbd7c9416a96e144ac51d95d78f83fb19",
            "USDC.e",
            16109.845441127067,
            null,
            null
          ],
          [
            "0xd88707f590528b4a1e316eeebe7bb6ac8b0ea461",
            "Unitos.net",
            3627.4473281608107,
            null,
            null
          ]
        ],
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        [
          [
            "0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d",
            "USDC",
            "AERO",
            0.0593277037736198,
            0.09444277695736393
          ],
          [
            "0xcdac0d6c6c59727a65f871236188350531885c43",
            "WETH",
            "USDC",
            0.011900108337477979,
            0.03566794659052249
          ],
          [
            "0x55b27dbddf95a55bd46d0284348dc8231cd72a2c",
            "USDC.e",
            "Unitos.net",
            null,
            null
          ]
        ]
      ]
    ],
    "rows": 1
  }
]

Result collections are limited to 10 items. This wallet has 3 active positions across 3 pools. The USD-denominated aggregates (totalValueLockedUsd, fee earnings, and weighted APRs) come back null because at least one position could not be fully priced, while per-pool and per-token exposure values are still populated wherever pricing data is available.

x402 Payment Option

This endpoint supports pay-per-use access via the x402 payment protocol (v2): pay $0.05 USDC per request using blockchain micropayments. No API key required.

Quick Start (TypeScript)

npm install @x402/fetch @x402/evm viem
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const response = await fetchWithPayment(
  "https://x402.cambrian.org/evm/aero/v2/provider-summary"
);
const data = await response.json();

Quick Start (Python)

pip install "x402[httpx]"
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

async def main():
    client = x402Client()
    account = Account.from_key(os.getenv("EVM_PRIVATE_KEY"))
    register_exact_evm_client(client, EthAccountSigner(account))

    async with x402HttpxClient(client) as http:
        response = await http.get("https://x402.cambrian.org/evm/aero/v2/provider-summary")
        print(response.json())

asyncio.run(main())

Payment Flow

  1. Send a normal request to the endpoint (no API key needed)
  2. Server returns 402 Payment Required with payment details
  3. The x402 SDK automatically signs a payment authorization with your wallet
  4. The SDK resubmits the request with the signed payment
  5. Server verifies payment and returns the API response

The x402 SDK handles steps 2 through 5 automatically.

Network: Base (chain ID 8453) | Currency: USDC | Price: $0.05 per request


Related Endpoints

  • /evm/aero/v2/fee-metrics - Fee metrics and daily historical data for the previous seven completed UTC days.
  • /evm/aero/v2/pool - Information for a specific Aerodrome V2 pool.
  • /evm/aero/v2/pool-volume - Recent pool activity and hourly distribution.
  • /evm/aero/v2/pools - Liquidity pools with summary metrics for the previous 7 completed UTC days.