API ReferenceHolder Summary & Concentration
Live

Holder Summary & Concentration

Distinct holder count and three-tier supply concentration for any token, served from indexed holder state and updated continuously as transfers land — no batch jobs.

REST

L1   GET /v1/token/{mint}/holders/summary

FieldTypeDescription
mintstringToken mint
distinctCountnumberDistinct wallets with a non-zero balance
totalBalanceRawstringSum of all holder balances, raw units (string for precision)
supplyRawstring | nullOn-chain mint supply, raw units; null until the mint is validated
top10Pct / top50Pct / top100Pctnumber | nullSupply share held by the top 10 / 50 / 100 wallets
hydrationStatusstringCompleteness of the holder set (see below)
lastUpdatedSlot / lastUpdatedTsMsnumberSlot / time of the last balance change
asOfTsMsnumberWhen this response was computed
curl -H "Authorization: Bearer $API_KEY" \
  "https://api.conyr.ai/v1/token/EPjFWd.../holders/summary"
{
  "mint": "EPjFWd...",
  "distinctCount": 18420,
  "totalBalanceRaw": "999850000000000",
  "supplyRaw": "1000000000000000",
  "top10Pct": 24.6,
  "top50Pct": 41.2,
  "top100Pct": 52.9,
  "hydrationStatus": "hydrated",
  "lastUpdatedSlot": 245678901,
  "lastUpdatedTsMs": 1709654400000,
  "asOfTsMs": 1709654400123
}

top{N}Pct is null when fewer than N distinct holders exist — always render it next to distinctCount so the denominator is clear. When supplyRaw is null (unvalidated mint), use totalBalanceRaw as the denominator. Balances are raw-unit strings to preserve precision in JS. Cached 15s.

Hydration status

Because Conyr is forward-only, hydrationStatus tells you how complete the holder set is for a given token.

ValueMeaningHow to render
hydratingInitial holder set is still being collectedSpinner; concentration may be unstable
hydratedFull holder set has been observedDisplay normally
born_forwardToken first appeared after Conyr started indexingDisplay normally — captured from the first transfer
partial_forwardBackfill incomplete; only forward state is authoritativeTreat concentration as a lower bound; show a disclaimer

Need a live push instead of polling this endpoint? See Holder Streams.