API ReferenceHolders

Holders

On-chain holder concentration and ranked holder lists for any token, served from indexed holder state. Updated continuously as transfers land — no batch jobs.

Available at Layer 1 and above.


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

Distinct holder count, three-tier concentration (top-10 / top-50 / top-100), and hydration status. Powers the “Top 10 hold X%” badge.

Parameters

ParameterInTypeRequiredDescription
mintpathstringyesSolana token mint address

Example

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.conyr.ai/v1/token/EPjFWd.../holders/summary"

Response

{
  "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
}

Field notes

  • totalBalanceRaw and supplyRaw are raw token units encoded as strings to preserve precision across JavaScript clients.
  • top{N}Pct is null when fewer than N distinct holders exist. Always render alongside distinctCount so the user knows the denominator.
  • supplyRaw is null for tokens whose mint hasn’t been validated yet. When missing, treat totalBalanceRaw as the denominator.

Hydration status

ValueMeaningUX hint
hydratingInitial holder set is still being collectedRender a spinner; concentration values may be unstable
hydratedFull holder set has been observedDisplay normally
born_forwardToken first appeared after Conyr started indexingDisplay normally — every transfer has been captured from the start
partial_forwardBackfill is incomplete; only forward state is authoritativeRender concentration as a lower bound and surface a small disclaimer

Cache TTL: 15 seconds.


GET /v1/token/{mint}/holders/top

Ordered top-N holders with per-wallet share of totalBalanceRaw.

Parameters

ParameterInTypeRequiredDefaultConstraints
mintpathstringyes
nqueryintegerno101–500

Example

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.conyr.ai/v1/token/EPjFWd.../holders/top?n=10"

Response

{
  "mint": "EPjFWd...",
  "distinctCount": 18420,
  "totalBalanceRaw": "999850000000000",
  "hydrationStatus": "hydrated",
  "holders": [
    {
      "rank": 1,
      "wallet": "9xQeWp...",
      "balanceRaw": "120000000000000",
      "pctOfTotal": 12.0,
      "firstSeenSlot": 245678901
    }
  ],
  "asOfTsMs": 1709654400123
}

Cache TTL: 15 seconds.


GET /v1/token/{mint}/holders

Paginated full holder list, ordered by balanceRaw descending.

Parameters

ParameterInTypeRequiredDefaultConstraints
mintpathstringyes
limitqueryintegerno1001–1000
offsetqueryintegerno0

Example

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.conyr.ai/v1/token/EPjFWd.../holders?limit=100&offset=0"

Response

{
  "mint": "EPjFWd...",
  "distinctCount": 18420,
  "totalBalanceRaw": "999850000000000",
  "hydrationStatus": "hydrated",
  "holders": [
    {
      "rank": 1,
      "wallet": "9xQeWp...",
      "balanceRaw": "120000000000000",
      "pctOfTotal": 12.0,
      "firstSeenSlot": 245678901
    }
  ],
  "limit": 100,
  "offset": 0,
  "nextOffset": 100,
  "asOfTsMs": 1709654400123
}

Pagination: when nextOffset is present, pass it back as offset to fetch the next page. When nextOffset is null, the list is exhausted.

Cache TTL: 15 seconds.