xcaDocs
Эндпоинты

Холдеры

Классифицированные холдеры просканированного токена с PnL, временем входа и источником финансирования — постранично.

GET/api/v1/tokens/{chain}/{address}/holders

Возвращает проанализированных холдеров токена, отсортированных по рангу, с классом, который XCA назначил каждому кошельку. Токен должен быть просканирован, иначе придёт 404.

Параметры#

chainpathобязательно
Идентификатор сети. Пока только solana."solana"
addresspathобязательно
Адрес токена (mint).string
pagequery
Номер страницы, начиная с 1.integer ≥ 1по умолчанию: 1
pageSizequery
Холдеров на страницу.10 | 25 | 50 | 100по умолчанию: 100
classquery
Возвращать только холдеров этого класса.ALL | HolderClassпо умолчанию: ALL

Запрос#

curl -s "https://app.xca.fun/api/v1/tokens/solana/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263/holders?class=SMART_MONEY&pageSize=25" \
  -H "Authorization: Bearer $XCA_API_KEY"
Попробовать
Вставь свой API-ключ, чтобы отправить настоящий запрос.

Ответ#

rows
Холдеры на этой странице.HolderRow[]
rank
Место по балансу, 1 — крупнейший.number
address
Адрес кошелька.string | null
sharePct
Доля предложения.number
valueUsd
Стоимость позиции, USD.number | null
class
Класс, который XCA назначил кошельку.HolderClass | "HIDDEN"
flags
Дополнительные признаки кошелька.string[]
entryAt
Время первой покупки.string | null
entryBlock
Блоков между запуском и первой покупкой (у снайперов — мало).number | null
pnl30dUsd
Реализованный и нереализованный PnL за 30 дней, USD.number | null
pnl30dPct
PnL за 30 дней, проценты.number | null
winRate
Доля прибыльных сделок, от 0 до 1.number | null
avgHoldSec
Среднее время удержания, секунды.number | null
trades30d
Сделок за 30 дней.number | null
fundedBy
Кошелёк, первым пополнивший этот.string | null
clusterId
Кластер, к которому относится кошелёк.string | null
profiled
Есть полный профиль кошелька.boolean
total
Видимых холдеров, подходящих под фильтр.number
lockedCount
Холдеров, скрытых лимитом тарифа.number
page
Текущая страница.number
pageSize
Холдеров на страницу.number
visibleLimit
Сколько топ-холдеров показывает тариф; -1 — всех.number

Пример ответа#

{
  "rows": [
    {
      "rank": 4,
      "address": "5Hr7wZg7oBpVhH5nngRqzr5W7ZFUfCsfEhbziZJak7fr",
      "sharePct": 1.92,
      "valueUsd": 3641200,
      "class": "SMART_MONEY",
      "flags": [
        "smart"
      ],
      "entryAt": "2023-01-04T18:22:10.000Z",
      "entryBlock": null,
      "pnl30dUsd": 48210.7,
      "pnl30dPct": 31.4,
      "winRate": 0.64,
      "avgHoldSec": 1209600,
      "trades30d": 37,
      "fundedBy": "FWznbcNXWQuHTawe9RxvQ2LdCENssh12dsznf4RiouN5",
      "clusterId": null,
      "profiled": true
    }
  ],
  "total": 7,
  "lockedCount": 0,
  "page": 1,
  "pageSize": 25,
  "visibleLimit": -1
}

Коды статусов#

200Успех
400validation — Некорректный параметр или тело запроса; смотри error.issues.
401unauthorized — API-ключ отсутствует, некорректен или отозван.
402planRequired — Тариф не включает доступ к API или эту функцию.
404notFound — Токен ещё не сканировали или кошелёк ещё не профилировали.
429rateLimited — Слишком много запросов в минуту или исчерпана месячная квота.

Классы холдеров#

SMART_MONEYПрибыльный трейдер за 30 дней с высоким win rate.
REGULARНичего примечательного.
DEVСоздатель токена.
DEV_BUNDLEПокупал вместе с создателем или профинансирован создателем.
SNIPERКупил в первых блоках после запуска.
FRESHТолько что созданный кошелёк.
POOLПул ликвидности, хранилище или bonding curve.
CEXКошелёк централизованной биржи.
BURNАдрес сжигания.

Стоит знать#

  • Тариф ограничивает, сколько топ-холдеров видно; total считает только видимых, а lockedCount показывает, сколько ещё есть.
  • Фильтр по SNIPER, DEV_BUNDLE, SMART_MONEY или FRESH требует соответствующей функции в тарифе, иначе придёт 402.
  • Класс, который твой тариф не видит, возвращается как HIDDEN.
  • Поля PnL зависят от уровня PnL в тарифе: базовый даёт pnl30dUsd и winRate, подробный добавляет pnl30dPct, avgHoldSec и trades30d.