Ендпоінти
Звіт по токену
Ринкові дані, безпека, 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"
depthLIGHT для автоматичних сканів нових пар, FULL для повного аналізу."LIGHT" | "FULL" | null
upgradingLIGHT-звіт доповнюється до 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
marketОсновна торгова пара з DexScreener.object | null
pairAddressАдреса найліквіднішої пари.string | null
dexIdDEX цієї пари.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
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
holderScoreHolder Score від 0 (небезпечно) до 100 (чисто).number | null
riskLevelРівень ризику, виведений з оцінки."low" | "medium" | "high" | null
metricsМетрики розподілу; набір ключів залежить від тарифу.object | 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
clustersГрупи холдерів, профінансовані одним гаманцем.object[] | null
idІдентифікатор кластера, на нього посилається clusterId холдерів.string
funderГаманець, що профінансував учасників.string
funderLabelВідома мітка джерела, наприклад біржа.string | null
membersГаманці-учасники.string[]
sharePctЧастка кластера.number
clustersCountКількість кластерів — навіть коли список кластерів закритий.number
devHistoryПопередні запуски творця.object | null
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
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-ключ відсутній, некоректний або відкликаний.
402
planRequired — Тариф не включає доступ до API або цю функцію.429
rateLimited — Забагато запитів на хвилину або вичерпано місячну квоту.Статус звіту#
NONE | Ще не сканували. Запусти скан через POST /scans. |
QUEUED | Чекає на вільний воркер. |
RUNNING | Аналізується; дивись step і progress. |
DONE | Готово, звіт повний. |
ERROR | Останній скан не вдався; дивись errorMessage і спробуй ще раз. |
Варто знати#
- Поля функцій, яких немає у твоєму тарифі, дорівнюють null або відсутні, а їхні ключі перелічені в locked.
- stale дорівнює true, коли звіт старший за час життя кешу; новий
POST /scansоновить його. LIGHT-звіти — це автоматичні скани нових пар, у них немає PnL гаманців, доки хтось не відкриє токен; поки йде доповнення, upgrading = true.- Частки рахуються від усієї пропозиції, включно з токенами в пулах.