xcaDocs
Эндпоинты

Отчёт по токену

Рыночные данные, безопасность, Holder Score, метрики холдеров, кластеры, история дева и торговая активность токена.

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

Возвращает последний отчёт XCA по токену. Чтение отчёта никогда не запускает скан: если статус NONE, токен ещё не сканировали — сначала вызови POST /scans.

Параметры#

chainpathобязательно
Идентификатор сети. Пока только solana."solana"
addresspathобязательно
Адрес токена (mint).string

Запрос#

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

Ответ#

chain
Идентификатор сети.string
address
Адрес токена (mint).string
status
Состояние отчёта. NONE значит, что токен ещё не сканировали."NONE" | "QUEUED" | "RUNNING" | "DONE" | "ERROR"
depth
LIGHT для автоматических сканов новых пар, FULL для полного анализа."LIGHT" | "FULL" | null
upgrading
LIGHT-отчёт дополняется до FULL.boolean
step
Текущий шаг, пока идёт скан.string | null
progress
Прогресс скана от 0 до 100.number
errorMessage
Причина неудачи последнего скана, когда статус ERROR.string | null
symbol
Тикер токена.string | null
name
Название токена.string | null
imageUrl
Адрес логотипа токена.string | null
market
Основная торговая пара из DexScreener.object | null
pairAddress
Адрес самой ликвидной пары.string | null
dexId
DEX этой пары.string | null
url
Страница пары на DexScreener.string | null
name
Название токена из пары.string | null
symbol
Тикер токена из пары.string | null
quoteSymbol
Котируемый актив пары, например SOL.string | null
imageUrl
Логотип токена из DexScreener.string | null
priceUsd
Цена в USD.number | null
liquidityUsd
Ликвидность всех пулов, USD.number | null
fdvUsd
Полностью разводнённая оценка (FDV), USD.number | null
marketCapUsd
Капитализация, USD.number | null
volume24hUsd
Объём торгов за 24 часа, USD.number | null
txns24h
Транзакции покупки и продажи за 24 часа.{ buys, sells } | null
change
Изменение цены в процентах за 5 минут, 1, 6 и 24 часа.{ m5, h1, h6, h24 }
pairCreatedAt
Когда создана пара.string | null
poolAddresses
Адреса всех известных пулов токена.string[]
websites
Сайты проекта.{ url, label }[]
socials
Соцсети проекта.{ type, url }[]
fetchedAt
Когда получены рыночные данные.string
security
Ончейн-факты о mint.object | null
mintAuthority
Кто может выпускать новые токены; null, если право отозвано.string | null
freezeAuthority
Кто может замораживать счета холдеров; null, если право отозвано.string | null
program
Программа токена, которой создан mint."spl-token" | "spl-token-2022" | "unknown"
supply
Общее предложение в целых токенах.number
decimals
Количество знаков после запятой.number
creator
Кошелёк, создавший токен, если известен.string | null
createdAt
Когда создан mint.string | null
computedAt
Когда рассчитан отчёт.string | null
stale
Отчёт старше времени жизни кеша.boolean
holderScore
Holder Score от 0 (опасно) до 100 (чисто).number | null
riskLevel
Уровень риска, выведенный из оценки."low" | "medium" | "high" | null
metrics
Метрики распределения; набор ключей зависит от тарифа.object | null
limited
Данные о холдерах неполные (ограничения поставщика).boolean
holdersTotal
Общее количество холдеров.number
holdersAnalyzed
Холдеров, включённых в анализ.number
profiled
Холдеров с полным профилем кошелька.number
top10Pct
Доля 10 крупнейших реальных холдеров (без пулов, сожжённых токенов и бирж).number
devPct
Доля создателя.number
devBundlePct
Доля кошельков из бандла создателя.number
sniperCount
Количество кошельков-снайперов.number
sniperPct
Доля снайперов.number
freshCount
Количество свежих кошельков.number
freshPct
Доля свежих кошельков.number
clusterPct
Доля кластеров кошельков с общим источником финансирования.number
smartCount
Количество холдеров-smart money.number
smartPct
Доля smart money.number
poolPct
Доля пулов ликвидности.number
burnPct
Доля, отправленная на адреса сжигания.number
avgPnlUsd
Средний PnL профилированных холдеров за 30 дней, USD.number | null
launchAt
Когда начались торги.string | null
launchSlot
Слот Solana первой сделки.number | null
breakdown
Каждый фактор Holder Score с баллами и измеренным значением.{ key, points, value }[]
mainReason
Фактор, отнявший больше всего баллов.{ key, points, value } | null
clusters
Группы холдеров, профинансированные одним кошельком.object[] | null
id
Идентификатор кластера, на него ссылается clusterId холдеров.string
funder
Кошелёк, профинансировавший участников.string
funderLabel
Известная метка источника, например биржа.string | null
members
Кошельки-участники.string[]
sharePct
Доля кластера.number
clustersCount
Количество кластеров — даже когда список кластеров закрыт.number
devHistory
Предыдущие запуски создателя.object | null
creator
Кошелёк создателя.string | null
launches
Токены, запущенные создателем.number
rugs
Запуски, потерявшие ликвидность.number
avgLifespanSec
Среднее время жизни токенов создателя, если известно.number | null
tokens
Запуски, от самых новых.{ address, symbol, name, createdAt, liquidityUsd, fdvUsd, rugged }[]
approximate
Определено по самым первым покупкам создателя, поэтому это оценка.true
devTeaser
Количество запусков и рагов — даже когда история дева закрыта.{ launches, rugs } | null
activity
Последняя торговля в основной паре.object | null
recent
Последние свопы; time — Unix-время в миллисекундах.{ signature, time, wallet, side, amount, valueUsd }[]
topTraders
Самые прибыльные трейдеры токена.{ wallet, boughtUsd, soldUsd, pnlUsd, trades }[]
locked
Функции, которых нет в твоём тарифе; их поля равны null или отсутствуют.string[]

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

{
  "chain": "solana",
  "address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
  "status": "DONE",
  "depth": "FULL",
  "upgrading": false,
  "step": "done",
  "progress": 100,
  "errorMessage": null,
  "symbol": "Bonk",
  "name": "Bonk",
  "imageUrl": "https://arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I",
  "market": {
    "pairAddress": "6oFWm7KPLfxnwMb3z5xwBoXNSPP3JJyirAPqPSiVcnsp",
    "dexId": "raydium",
    "url": "https://dexscreener.com/solana/6ofwm7kplfxnwmb3z5xwboxnspp3jjyirapqpsivcnsp",
    "name": "Bonk",
    "symbol": "Bonk",
    "quoteSymbol": "SOL",
    "imageUrl": "https://arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I",
    "priceUsd": 0.00002134,
    "liquidityUsd": 2864210.4,
    "fdvUsd": 1897000000,
    "marketCapUsd": 1652000000,
    "volume24hUsd": 18450000,
    "txns24h": {
      "buys": 18210,
      "sells": 16930
    },
    "change": {
      "m5": 0.4,
      "h1": -1.2,
      "h6": 3.8,
      "h24": 5.1
    },
    "pairCreatedAt": "2022-12-25T11:04:12.000Z",
    "poolAddresses": [
      "6oFWm7KPLfxnwMb3z5xwBoXNSPP3JJyirAPqPSiVcnsp"
    ],
    "websites": [
      {
        "url": "https://bonkcoin.com",
        "label": "Website"
      }
    ],
    "socials": [
      {
        "type": "twitter",
        "url": "https://x.com/bonk_inu"
      }
    ],
    "fetchedAt": "2026-10-02T09:12:40.000Z"
  },
  "security": {
    "mintAuthority": null,
    "freezeAuthority": null,
    "program": "spl-token",
    "supply": 88870000000000,
    "decimals": 5,
    "creator": "9AhKqLR67hwapvG8SA2JFXaCshXc9nALJjpKaHZrsbkw",
    "createdAt": "2022-12-25T10:52:01.000Z"
  },
  "computedAt": "2026-10-02T09:12:44.000Z",
  "stale": false,
  "holderScore": 78,
  "riskLevel": "low",
  "metrics": {
    "limited": false,
    "holdersTotal": 912345,
    "holdersAnalyzed": 4000,
    "profiled": 100,
    "top10Pct": 21.4,
    "devPct": 0,
    "devBundlePct": 0.3,
    "sniperCount": 2,
    "sniperPct": 0.6,
    "freshCount": 41,
    "freshPct": 3.9,
    "clusterPct": 4.2,
    "smartCount": 7,
    "smartPct": 2.1,
    "poolPct": 3.4,
    "burnPct": 0,
    "avgPnlUsd": 1840.5,
    "launchAt": "2022-12-25T11:04:12.000Z",
    "launchSlot": 168410720,
    "breakdown": [
      {
        "key": "top10",
        "points": -0.7,
        "value": 21.4
      },
      {
        "key": "devBundle",
        "points": -0.5,
        "value": 0.3
      },
      {
        "key": "snipers",
        "points": -0.5,
        "value": 0.6
      },
      {
        "key": "clusters",
        "points": -2.5,
        "value": 4.2
      },
      {
        "key": "fresh",
        "points": -1.3,
        "value": 3.9
      },
      {
        "key": "authorities",
        "points": 0,
        "value": 0
      },
      {
        "key": "devRugs",
        "points": 0,
        "value": 0
      },
      {
        "key": "smartMoneyBonus",
        "points": 10,
        "value": 7
      }
    ],
    "mainReason": {
      "key": "clusters",
      "points": -2.5,
      "value": 4.2
    }
  },
  "clusters": [
    {
      "id": "c1",
      "funder": "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9",
      "funderLabel": null,
      "members": [
        "3Kv1…",
        "8Zq4…",
        "Fh2T…"
      ],
      "sharePct": 1.8
    }
  ],
  "clustersCount": 3,
  "devHistory": {
    "creator": "9AhKqLR67hwapvG8SA2JFXaCshXc9nALJjpKaHZrsbkw",
    "launches": 1,
    "rugs": 0,
    "avgLifespanSec": null,
    "tokens": [],
    "approximate": true
  },
  "devTeaser": {
    "launches": 1,
    "rugs": 0
  },
  "activity": {
    "recent": [
      {
        "signature": "4Vt2…",
        "time": 1790932360000,
        "wallet": "7xKX…",
        "side": "buy",
        "amount": 152000000,
        "valueUsd": 3244.1
      }
    ],
    "topTraders": [
      {
        "wallet": "2bQm…",
        "boughtUsd": 41200,
        "soldUsd": 78900,
        "pnlUsd": 37700,
        "trades": 18
      }
    ]
  },
  "locked": []
}

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

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

Статус отчёта#

NONEЕщё не сканировали. Запусти скан через POST /scans.
QUEUEDЖдёт свободный воркер.
RUNNINGАнализируется; смотри step и progress.
DONEГотово, отчёт полный.
ERRORПоследний скан не удался; смотри errorMessage и попробуй ещё раз.

Стоит знать#

  • Поля функций, которых нет в твоём тарифе, равны null или отсутствуют, а их ключи перечислены в locked.
  • stale равен true, когда отчёт старше времени жизни кеша; новый POST /scans обновит его.
  • LIGHT-отчёты — это автоматические сканы новых пар, в них нет PnL кошельков, пока кто-то не откроет токен; пока идёт дополнение, upgrading = true.
  • Доли считаются от всего предложения, включая токены в пулах.