Cambrian V2 - Provider Summary API
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
- Send a normal request to the endpoint (no API key needed)
- Server returns
402 Payment Requiredwith payment details - The x402 SDK automatically signs a payment authorization with your wallet
- The SDK resubmits the request with the signed payment
- 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.