Developers
Wallet Score API
Pre-computed wallet analytics and the 0–100 zkCodex score over a single REST endpoint.
Updated 2026-09-22
Overview
The Wallet Analytics & Score API returns aggregated, scored on-chain wallet intelligence: transaction metrics, activity streaks, DeFi breakdown, token diversity, earned badges and a calibrated 0–100 score with a rank percentile. No raw log parsing is needed on your side.
Base URLhttps://zkcodex.com/api/v1
FormatJSON
CachingEdge CDN, s-maxage=60, stale-while-revalidate=120
Get wallet score and analytics
GET /api/v1/wallet/{network}/{address}| Parameter | In | Required | Description |
|---|---|---|---|
| network | path | yes | Network slug (base, arc, arbitrum, ethereum…) or numeric chain ID |
| address | path | yes | 42-character EVM hex address (0x…) |
| fresh | query | no | true bypasses the CDN cache and computes real-time data |
Examples
curl -X GET "https://zkcodex.com/api/v1/wallet/base/0xEAa823AB4C4eE00283d8ed7be713ddf8A5ba0Fac" \
-H "Accept: application/json"async function getWalletScore(network: string, address: string) {
const res = await fetch(`https://zkcodex.com/api/v1/wallet/${network}/${address}`, {
headers: { Accept: "application/json" },
});
if (!res.ok) throw new Error("Failed to fetch score");
return res.json();
}
const base = await getWalletScore("base", "0xEAa823AB4C4eE00283d8ed7be713ddf8A5ba0Fac");
console.log(`Base score: ${base.data.score.total} [${base.data.score.tier}]`);import requests
def get_wallet_score(network: str, address: str):
url = f"https://zkcodex.com/api/v1/wallet/{network}/{address}"
res = requests.get(url, headers={"Accept": "application/json"}, timeout=10)
res.raise_for_status()
return res.json()
data = get_wallet_score("base", "0xEAa823AB4C4eE00283d8ed7be713ddf8A5ba0Fac")
print(f"Score: {data['data']['score']['total']} ({data['data']['score']['tier']})")Response
{
"success": true,
"data": {
"address": "0xEAa823AB4C4eE00283d8ed7be713ddf8A5ba0Fac",
"network": "base",
"networkName": "Base",
"chainId": 8453,
"nativeCurrency": "ETH",
"isTestnet": false,
"score": {
"total": 100,
"tier": "Legend",
"rank": "Legend",
"percentile": "Top 1.2%",
"breakdown": {
"activityScore": 30,
"volumeScore": 25,
"diversityScore": 25,
"technicalScore": 20
}
},
"metrics": {
"totalTransactions": 2412,
"uniqueContracts": 733,
"totalVolumeUSD": 223184.26,
"totalGasSpentNative": 0.03738,
"totalGasSpentUSD": 92.70,
"firstTransactionDate": "2023-07-15T12:37:35.000Z",
"lastTransactionDate": "2026-08-24T20:08:29.000Z"
},
"activity": {
"activeDays": 473,
"activeWeeks": 145,
"activeMonths": 38,
"currentStreakDays": 1,
"longestStreakDays": 26
},
"defi": {
"totalDeFiActivities": 482,
"swapCount": 215,
"liquidityCount": 42,
"stakingCount": 18,
"deployedContracts": 8,
"nftMintCount": 145
},
"tokens": {
"uniqueTokens": 86,
"tokenTransfers": 1240,
"tokenDiversity": 68
},
"behavior": {
"transactionFrequency": 2.14,
"consistencyScore": 94.5
},
"badges": {
"totalEarned": 58,
"totalAvailable": 69,
"items": [
{ "id": "first-steps", "name": "First Steps", "tier": "bronze", "earned": true },
{ "id": "base-pioneer", "name": "Base Pioneer", "tier": "base", "earned": true }
]
}
},
"cached": false,
"timestamp": "2026-08-25T12:00:00.000Z"
}Supported networks
| Network | Slug | Chain ID | Data source |
|---|---|---|---|
| Base Mainnet | base | 8453 | Etherscan V2 |
| Arc | arc | 5042 | Etherscan V2 / Blockscout |
| Arc Testnet (Archived) | arc-testnet | 5042002 | Blockscout |
| Arbitrum One | arbitrum | 42161 | Etherscan V2 |
| Optimism | optimism | 10 | Etherscan V2 |
| Polygon PoS | polygon | 137 | Etherscan V2 |
| Ethereum Mainnet | ethereum | 1 | Etherscan V2 |
| Unichain | unichain | 130 | Blockscout |
| Monad Testnet | monad | 10143 | Monad RPC |
| Scroll | scroll | 534352 | Etherscan V2 |
| Linea | linea | 59144 | Etherscan V2 |
| ZkSync Era | zksync | 324 | Blockscout |
| Ink Mainnet | ink | 57073 | Blockscout |