Endpoints
Wallets
30-day trading profile of a wallet: PnL, win rate, holding time and funding source.
GET
/api/v1/wallets/{address}Returns the profile XCA built for a wallet. Wallets are profiled during token scans (the largest holders) and on demand in the app; a wallet that was never profiled returns 404.
Parameters#
addresspathrequiredWallet address.string
Request#
curl -s "https://app.xca.fun/api/v1/wallets/HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH" \
-H "Authorization: Bearer $XCA_API_KEY"Try it
Paste your API key to send a real request.
Response#
addressWallet address.string
isSmartThe wallet passes the smart-money thresholds.boolean
pnl30dUsdPnL over 30 days, USD.number | null
pnl30dPctPnL over 30 days, percent.number | null
winRateShare of profitable trades, 0 to 1.number | null
trades30dTrades over 30 days.number | null
avgHoldSecAverage holding time, seconds.number | null
walletAgeDaysDays since the first transaction.number | null
fundedByWallet that first funded this one.string | null
lastProfiledAtWhen the profile was built.string
Example response#
{
"address": "HN7cABqLq46Es1jh92dQQisAq662SmxELLLsHHe4YWrH",
"isSmart": true,
"pnl30dUsd": 48210.7,
"pnl30dPct": 31.4,
"winRate": 0.64,
"trades30d": 37,
"avgHoldSec": 1209600,
"walletAgeDays": 412,
"fundedBy": "FWznbcNXWQuHTawe9RxvQ2LdCENssh12dsznf4RiouN5",
"lastProfiledAt": "2026-10-02T08:40:11.000Z"
}Status codes#
200Success
400validation — A parameter or the body is invalid; see
error.issues.401unauthorized — The API key is missing, malformed or revoked.
402
planRequired — Your plan doesn't include API access or this feature.404
notFound — The token wasn't scanned or the wallet wasn't profiled yet.429
rateLimited — Too many requests per minute, or the monthly quota is used up.Good to know#
- pnl30dPct and
avgHoldSecneed detailed PnL in your plan,fundedByneeds clusters; otherwise they are null. isSmartmarks wallets that pass the smart-money thresholds: profitable over 30 days with a high win rate and enough trades.