Cambrian Total Value Locked API
GET /api/v1/evm/tvl/status
Total Value Locked (Token Holdings by Address)
Overview
Returns all tokens held by a given EVM wallet address on a specified chain, including token amount and USD value for each holding. This endpoint is useful for portfolio tracking, wallet analysis, and computing an address's total value locked (TVL) across ERC-20 tokens.
Business Value
- Portfolio Analytics: Track complete token holdings across EVM wallets for investment monitoring
- Risk Assessment: Analyze wallet token diversification and concentration risks for due diligence
- Balance Verification: Confirm token holdings for audit, compliance, and verification purposes
- Value Tracking: Monitor USD values of all token positions in real-time
- Token Discovery: Identify all tokens held by a wallet including lesser-known or new tokens
Endpoint Details
URL:
https://api.cambrian.org/evm/tvl/status
Method: GET
Authentication: Required via X-API-Key header
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chain_id | integer | No | 8453 | EVM chain ID. |
| wallet_address | string | Yes | - | Address that holds tokens, prefixed with 0x. |
| hasprice | boolean | No | false | If true, only tokens with a USD price will be returned. |
| limit | integer | No | 1000 | Limit the number of results. |
| offset | integer | No | 0 | Offset the results, allows you to skip a number of rows before starting to return rows. |
Response Field Descriptions
| Response Field | Type | Description |
|---|---|---|
| chainId | UInt16 | EVM chain ID the token holding was retrieved from. |
| ownerAddress | FixedString(42) | Wallet address that owns the tokens. |
| tokenAddress | FixedString(42) | Contract address of the held token. |
| tokenSymbol | String | Symbol/ticker of the held token. |
| tokenAmount | Float64 | Raw amount of the token held by the wallet. |
| valueUsd | Float64 | Current USD value of the token holding. |
Examples
1. Retrieve All Token Holdings for a Wallet
This example retrieves every token held by a wallet on Base (chain ID 8453), including tokens with no known USD price.
curl -X GET "https://api.cambrian.org/evm/tvl/status?wallet_address=0xfBB6Eed8e7aa03B138556eeDaF5D271A5E1e43ef&chain_id=8453" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response:
[
{
"columns": [
{ "name": "chainId", "type": "UInt16" },
{ "name": "ownerAddress", "type": "FixedString(42)" },
{ "name": "tokenAddress", "type": "FixedString(42)" },
{ "name": "tokenSymbol", "type": "String" },
{ "name": "tokenAmount", "type": "Float64" },
{ "name": "valueUsd", "type": "Float64" }
],
"data": [
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", 72.85335663, 4677512.761858977],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "USDC", 3417014.646363, 3417014.646363],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x745e91e6db835646f790799e46afb73c459f5af7", "DIGITAL", 301, 565.0151144228093],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x3b9efc6f8165812c033618f45a5145cb07548712", "USGR", 75, 0.03814443055110924],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x94f68febe9b81e6f44aff39bad8ffaa712879471", "TRUMP", 151.7421, 0.028506361532441616],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xc6b4444073f4ee01f707253e6d915b3ff337711b", "ZORA", 100, 0.028099397009084374],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xccdc31173d897319bcdd0376b4f64e1819652b57", "CABASE", 1000, 0.01876144236069653],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x75618e57ed8c1da6894d0bda2974f1bd96d8c63b", "SROS", 45, 0.01685367157566115],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x23a23b6e57d4e35f1584e584d37586b490878763", "USXR", 25, 0.012715165232135998],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x68f61fdfbfb72e38341a0ec2ca15043d98294274", "BASEMATE", 25, 0.009419502203740935]
],
"rows": 521
}
]
Note: This wallet holds 521 total tokens; the data array above has been truncated to the first 10 rows for brevity. The rows field reflects the true total count.
This wallet's largest holding is cbBTC ($4.68M USD), followed by USDC ($3.42M USD), with the remaining 519 tokens holding comparatively negligible USD value — many with a valueUsd of 0 because no price feed is available for them.
2. Filter to Only Priced Tokens with a Result Limit
This example uses hasprice=true combined with limit=10 to return only tokens that have a known USD price, capped at 10 results — useful for quickly computing a wallet's meaningful TVL without noise from unpriced/illiquid tokens.
curl -X GET "https://api.cambrian.org/evm/tvl/status?wallet_address=0xfBB6Eed8e7aa03B138556eeDaF5D271A5E1e43ef&chain_id=8453&hasprice=true&limit=10" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response:
[
{
"columns": [
{ "name": "chainId", "type": "UInt16" },
{ "name": "ownerAddress", "type": "FixedString(42)" },
{ "name": "tokenAddress", "type": "FixedString(42)" },
{ "name": "tokenSymbol", "type": "String" },
{ "name": "tokenAmount", "type": "Float64" },
{ "name": "valueUsd", "type": "Float64" }
],
"data": [
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", 72.85335663, 4677512.761858977],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "USDC", 3417014.646363, 3417014.646363],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x745e91e6db835646f790799e46afb73c459f5af7", "DIGITAL", 301, 565.0151144228093],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x3b9efc6f8165812c033618f45a5145cb07548712", "USGR", 75, 0.03814443055110924],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x94f68febe9b81e6f44aff39bad8ffaa712879471", "TRUMP", 151.7421, 0.028506361532441616],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xc6b4444073f4ee01f707253e6d915b3ff337711b", "ZORA", 100, 0.028099397009084374],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0xccdc31173d897319bcdd0376b4f64e1819652b57", "CABASE", 1000, 0.01876144236069653],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x75618e57ed8c1da6894d0bda2974f1bd96d8c63b", "SROS", 45, 0.01685367157566115],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x23a23b6e57d4e35f1584e584d37586b490878763", "USXR", 25, 0.012715165232135998],
[8453, "0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef", "0x68f61fdfbfb72e38341a0ec2ca15043d98294274", "BASEMATE", 25, 0.009419502203740935]
],
"rows": 10
}
]
With limit=10 applied, the API returns exactly 10 rows (rows: 10), ordered by descending USD value — showing cbBTC and USDC as by far the dominant holdings in this wallet.
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/tvl/status"
);
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/tvl/status")
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/tvl/top-owners- Returns top token holders for a given token address./evm/aero/v3/pool- Returns current pool TVL (Total Value Locked), Swap Volume, Price volatility and other pool metrics./evm/uniswap/v3/pool- Returns current pool TVL (Total Value Locked), Swap Volume, Fees APR and other pool metrics./evm/aero/v2/provider-summary- Provides Aerodrome V2 liquidity-provider summary and portfolio metrics./evm/dexes- List of DEXes on EVM compatible chains.