Cambrian V2 - Pool Info API
GET /api/v1/evm/aero/v2/pool
Aerodrome V2 Pool Info
Overview
Returns detailed information for a specific Aerodrome V2 liquidity pool on Base, including token reserves, TVL, and USD-denominated fees, rewards, bribes, and APR breakdowns. USD prices, valuations, and APRs are null when a required token price is unavailable.
Business Value
- Pool Analytics: Access detailed metrics including TVL, reserves, and APR to analyze pool performance and profitability
- Risk Assessment: Evaluate pool composition with token balances, prices, and reserve ratios for informed investment decisions
- Yield Optimization: Compare APR breakdowns (swap fees, rewards, bribes) to identify highest-yielding liquidity opportunities
- Portfolio Management: Monitor pool positions with real-time pricing and reserve data for active liquidity management
- Trading Intelligence: Understand pool depth and composition to optimize trade execution and slippage management
Endpoint Details
URL:
https://api.cambrian.org/evm/aero/v2/pool
Method: GET
Authentication: Required via X-API-Key header
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chain_id | integer | No | 8453 | EVM chain ID. Only 8453 (Base) is supported. |
| pool_address | string | Yes | - | Pool address with 0x prefix, e.g. 0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d. |
| apr_days_annualized | integer | Yes | - | Number of previous completed UTC days to calculate APR from (1-30). 7 annualizes activity from the previous 7 completed UTC days. |
Response Field Descriptions
| Response Field | Type | Description |
|---|---|---|
| poolAddress | String | Address of the liquidity pool. |
| token0Address | String | Contract address of token0 in the pair. |
| token0Symbol | String | Symbol of token0. |
| token0Name | String | Name of token0. |
| token0Decimals | UInt8 | Decimal precision of token0. |
| token1Address | String | Contract address of token1 in the pair. |
| token1Symbol | String | Symbol of token1. |
| token1Name | String | Name of token1. |
| token1Decimals | UInt8 | Decimal precision of token1. |
| reserve0 | Int256 | Raw on-chain reserve of token0 (in token0's smallest unit). |
| reserve1 | Int256 | Raw on-chain reserve of token1 (in token1's smallest unit). |
| tvlToken0 | Float64 | Reserve of token0 adjusted for decimals. |
| tvlToken1 | Float64 | Reserve of token1 adjusted for decimals. |
| token0PriceUsd | Nullable(Float64) | USD price of token0. Null when unavailable. |
| token1PriceUsd | Nullable(Float64) | USD price of token1. Null when unavailable. |
| tvlUsd | Nullable(Float64) | Total value locked in USD. Null when a required token price is unavailable. |
| feesXdUsd | Nullable(Float64) | Swap fees earned in USD over the annualization window. Null when a required price is unavailable. |
| aeroRewardsXdUsd | Nullable(Float64) | AERO emission rewards earned in USD over the annualization window. Null when a required price is unavailable. |
| bribesXdUsd | Nullable(Float64) | Bribe rewards earned in USD over the annualization window. Null when a required price is unavailable. |
| swapFeeAPR | Nullable(Float64) | Annualized percentage return from swap fees. Null when a required price is unavailable. |
| aeroRewardAPR | Nullable(Float64) | Annualized percentage return from AERO emission rewards. Null when a required price is unavailable. |
| bribeFeeAPR | Nullable(Float64) | Annualized percentage return from bribes. Null when a required price is unavailable. |
| totalAPR | Nullable(Float64) | Combined annualized percentage return across swap fees, AERO rewards, and bribes. Null when a required price is unavailable. |
| calculationTimestampAt | UInt32 | Unix timestamp when the calculation was performed. |
| baseCurrency | String | Currency used for USD-denominated fields (e.g. "Usd"). |
| createdAt | DateTime('UTC') | Timestamp when the pool was created. |
| tvlPriceComplete | UInt8 | 1 if all tokens in the pool have complete pricing data, 0 otherwise. |
| unpricedTokenAddresses | Array(String) | Addresses of tokens in the pool lacking price data, if any. |
Examples
1. 7-Day Annualized Pool APR
Fetch pool details for the USDC/AERO pool on Base, annualizing APR from the previous 7 completed UTC days.
curl -X GET "https://api.cambrian.org/evm/aero/v2/pool?chain_id=8453&pool_address=0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d&apr_days_annualized=7" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response:
[
{
"columns": [
{"name": "poolAddress", "type": "String"},
{"name": "token0Address", "type": "String"},
{"name": "token0Symbol", "type": "String"},
{"name": "token0Name", "type": "String"},
{"name": "token0Decimals", "type": "UInt8"},
{"name": "token1Address", "type": "String"},
{"name": "token1Symbol", "type": "String"},
{"name": "token1Name", "type": "String"},
{"name": "token1Decimals", "type": "UInt8"},
{"name": "reserve0", "type": "Int256"},
{"name": "reserve1", "type": "Int256"},
{"name": "tvlToken0", "type": "Float64"},
{"name": "tvlToken1", "type": "Float64"},
{"name": "token0PriceUsd", "type": "Nullable(Float64)"},
{"name": "token1PriceUsd", "type": "Nullable(Float64)"},
{"name": "tvlUsd", "type": "Nullable(Float64)"},
{"name": "feesXdUsd", "type": "Nullable(Float64)"},
{"name": "aeroRewardsXdUsd", "type": "Nullable(Float64)"},
{"name": "bribesXdUsd", "type": "Nullable(Float64)"},
{"name": "swapFeeAPR", "type": "Nullable(Float64)"},
{"name": "aeroRewardAPR", "type": "Nullable(Float64)"},
{"name": "bribeFeeAPR", "type": "Nullable(Float64)"},
{"name": "totalAPR", "type": "Nullable(Float64)"},
{"name": "calculationTimestampAt", "type": "UInt32"},
{"name": "baseCurrency", "type": "String"},
{"name": "createdAt", "type": "DateTime('UTC')"},
{"name": "tvlPriceComplete", "type": "UInt8"},
{"name": "unpricedTokenAddresses", "type": "Array(String)"}
],
"data": [
[
"0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d",
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"USDC",
"USD Coin",
6,
"0x940181a94a35a4569e4529a3cdfb74e38fd98631",
"AERO",
"Aerodrome",
18,
"12601279199261",
"30392701917380872686694266",
12601279.199261,
30392701.917380873,
1,
0.41335875,
25164368.38,
30381.42,
95109.51,
null,
0.063,
0.1971,
null,
null,
1785883500,
"Usd",
"2023-09-07T22:50:45+00:00",
1,
[]
]
],
"rows": 1
}
]
This example annualizes fee and reward activity from the previous 7 completed UTC days. The pool holds ~$25.16M TVL, with swapFeeAPR null (unpriced in this window) while aeroRewardAPR is 6.3%. bribeFeeAPR and totalAPR are null here because at least one required component price was unavailable.
2. 30-Day Annualized Pool APR
Fetch the same pool but annualize APR over the previous 30 completed UTC days to smooth out short-term volatility.
curl -X GET "https://api.cambrian.org/evm/aero/v2/pool?chain_id=8453&pool_address=0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d&apr_days_annualized=30" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response:
[
{
"columns": [
{"name": "poolAddress", "type": "String"},
{"name": "token0Address", "type": "String"},
{"name": "token0Symbol", "type": "String"},
{"name": "token0Name", "type": "String"},
{"name": "token0Decimals", "type": "UInt8"},
{"name": "token1Address", "type": "String"},
{"name": "token1Symbol", "type": "String"},
{"name": "token1Name", "type": "String"},
{"name": "token1Decimals", "type": "UInt8"},
{"name": "reserve0", "type": "Int256"},
{"name": "reserve1", "type": "Int256"},
{"name": "tvlToken0", "type": "Float64"},
{"name": "tvlToken1", "type": "Float64"},
{"name": "token0PriceUsd", "type": "Nullable(Float64)"},
{"name": "token1PriceUsd", "type": "Nullable(Float64)"},
{"name": "tvlUsd", "type": "Nullable(Float64)"},
{"name": "feesXdUsd", "type": "Nullable(Float64)"},
{"name": "aeroRewardsXdUsd", "type": "Nullable(Float64)"},
{"name": "bribesXdUsd", "type": "Nullable(Float64)"},
{"name": "swapFeeAPR", "type": "Nullable(Float64)"},
{"name": "aeroRewardAPR", "type": "Nullable(Float64)"},
{"name": "bribeFeeAPR", "type": "Nullable(Float64)"},
{"name": "totalAPR", "type": "Nullable(Float64)"},
{"name": "calculationTimestampAt", "type": "UInt32"},
{"name": "baseCurrency", "type": "String"},
{"name": "createdAt", "type": "DateTime('UTC')"},
{"name": "tvlPriceComplete", "type": "UInt8"},
{"name": "unpricedTokenAddresses", "type": "Array(String)"}
],
"data": [
[
"0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d",
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"USDC",
"USD Coin",
6,
"0x940181a94a35a4569e4529a3cdfb74e38fd98631",
"AERO",
"Aerodrome",
18,
"12601279199261",
"30392701917380872686694266",
12601279.199261,
30392701.917380873,
1,
0.41335875,
25164368.38,
199216.55,
489954.63,
null,
0.0963,
0.2369,
null,
null,
1785883500,
"Usd",
"2023-09-07T22:50:45+00:00",
1,
[]
]
],
"rows": 1
}
]
Over the 30-day window, cumulative feesXdUsd ($199,216.55) and aeroRewardsXdUsd ($489,954.63) are larger since they cover more activity, and aeroRewardAPR rises to 9.63%. TVL and reserves remain the same because they reflect the current pool state, independent of the annualization window.
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/pool"
);
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/pool")
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–5 automatically.
Network: Base (chain ID 8453) | Currency: USDC | Price: $0.05 per request
Related Endpoints
/evm/aero/v2/fee-metrics- Shows fee metrics and daily historical data for the previous seven completed UTC days. Usd fields are null when a pool-token price is unavailable./evm/aero/v2/pool-volume- Shows recent pool activity and hourly distribution. Usd fields are null when a pool-token price is unavailable./evm/aero/v2/pools- Returns liquidity pools with summary metrics for the previous 7 completed UTC days. Usd prices, valuations, and APRs are null when a required price is unavailable./evm/aero/v2/provider-summary- Provides Aerodrome V2 liquidity-provider summary and portfolio metrics./evm/aero/v3/pool- Returns current pool TVL, Swap Volume, Price volatility and other metrics for recent time ranges.