엔드포인트
토큰 리포트
토큰의 시장 데이터, 보안 정보, Holder Score, 홀더 지표, 클러스터, 개발자 이력, 거래 활동.
GET
/api/v1/tokens/{chain}/{address}XCA에 있는 해당 토큰의 최신 리포트를 반환해요. 리포트를 조회해도 스캔은 시작되지 않아요. 상태가 NONE이면 아직 스캔되지 않은 토큰이니 먼저 POST /scans 요청을 보내세요.
파라미터#
chainpath필수체인 ID. 현재는 solana만 지원해요."solana"
addresspath필수토큰 민트 주소.string
요청#
curl -s "https://app.xca.fun/api/v1/tokens/solana/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" \
-H "Authorization: Bearer $XCA_API_KEY"직접 실행
실제 요청을 보내려면 API 키를 붙여넣으세요.
응답#
chain체인 ID.string
address토큰 민트 주소.string
status리포트 상태. NONE이면 한 번도 스캔된 적 없는 토큰이에요."NONE" | "QUEUED" | "RUNNING" | "DONE" | "ERROR"
depth신규 페어 자동 스캔은 LIGHT, 전체 분석은 FULL이에요."LIGHT" | "FULL" | null
upgradingLIGHT 리포트를 FULL로 업그레이드하는 중이에요.boolean
step스캔이 진행되는 동안의 현재 스캔 단계.string | null
progress0~100 사이의 스캔 진행률.number
errorMessagestatus 값이 ERROR일 때 마지막 스캔이 실패한 이유.string | null
symbol토큰 티커.string | null
name토큰 이름.string | null
imageUrl토큰 로고 URL.string | null
marketDexScreener에서 가져온 주요 거래 페어.object | null
marketDexScreener에서 가져온 주요 거래 페어.object | null
pairAddress유동성이 가장 풍부한 페어의 주소.string | null
dexId해당 페어의 DEX.string | null
url해당 페어의 DexScreener 페이지.string | null
name페어 정보에 있는 토큰 이름.string | null
symbol페어 정보에 있는 토큰 티커.string | null
quoteSymbol페어의 상대 자산(예: SOL).string | null
imageUrlDexScreener의 토큰 로고.string | null
priceUsdUSD 기준 가격.number | null
liquidityUsd전체 풀의 유동성(USD).number | null
fdvUsd완전 희석 가치(FDV, USD).number | null
marketCapUsd시가총액(USD).number | null
volume24hUsd24시간 거래량(USD).number | null
txns24h24시간 동안의 매수 및 매도 거래 건수.{ buys, sells } | null
change5분, 1시간, 6시간, 24시간 가격 변동률(%).{ m5, h1, h6, h24 }
pairCreatedAt페어 생성 시각.string | null
poolAddresses이 토큰의 알려진 모든 풀 주소.string[]
websites프로젝트 웹사이트.{ url, label }[]
socials프로젝트 소셜 링크.{ type, url }[]
fetchedAt시장 데이터를 가져온 시각.string
security민트에 대한 온체인 정보.object | null
security민트에 대한 온체인 정보.object | null
mintAuthority토큰을 추가 발행할 수 있는 주소. 권한이 해제되면 null이에요.string | null
freezeAuthority홀더 계정을 동결할 수 있는 주소. 권한이 해제되면 null이에요.string | null
program민트가 사용하는 토큰 프로그램."spl-token" | "spl-token-2022" | "unknown"
supply총 공급량(최소 단위가 아닌 토큰 단위).number
decimals토큰의 소수점 자릿수.number
creator토큰을 생성한 지갑(알려진 경우).string | null
createdAt민트 생성 시각.string | null
computedAt리포트 계산 시각.string | null
stale리포트가 캐시 유효 기간보다 오래됐어요.boolean
holderScore0(위험)부터 100(깨끗함)까지의 Holder Score.number | null
riskLevel점수로 정해지는 위험 등급."low" | "medium" | "high" | null
metrics보유 분포 지표. 포함되는 키는 플랜에 따라 달라요.object | null
metrics보유 분포 지표. 포함되는 키는 플랜에 따라 달라요.object | null
limited홀더 데이터가 일부만 수집됐어요(데이터 제공업체 제한).boolean
holdersTotal전체 홀더 수.number
holdersAnalyzed분석에 포함된 홀더 수.number
profiled전체 지갑 프로필이 있는 홀더 수.number
top10Pct실제 홀더 상위 10명의 보유 비중(풀, 소각 주소, 거래소 제외).number
topHolderPct실제 홀더 중 최대 홀더의 보유 비중.number
floatPct유통 공급량: 풀과 소각 주소 밖에 있는 물량의 비중.number
devPct생성자의 보유 비중.number
devBundlePct생성자와 번들로 묶인 지갑의 보유 비중.number
sniperCount스나이퍼 지갑 수.number
sniperPct스나이퍼의 보유 비중.number
freshCount신규 지갑 수.number
freshPct신규 지갑의 보유 비중.number
clusterPct같은 자금 제공자를 둔 지갑 클러스터의 보유 비중.number
smartCount스마트 머니 홀더 수.number
smartPct스마트 머니의 보유 비중.number
poolPct유동성 풀의 보유 비중.number
burnPct소각 주소로 보내진 물량의 비중.number
avgPnlUsd프로필이 있는 홀더의 30일 평균 손익(USD).number | null
launchAt거래 시작 시각.string | null
launchSlot첫 거래가 이루어진 Solana 슬롯.number | null
scoreVersion리포트 채점에 사용된 Holder Score 모델 버전.number
breakdown모든 Holder Score 요소와 각 요소의 점수, 측정값.{ key, points, value, total?, cap? }[]
mainReason가장 많은 점수를 깎은 요소.{ key, points, value, total?, cap? } | null
clusters같은 지갑에서 자금을 받은 홀더 그룹.object[] | null
clusters같은 지갑에서 자금을 받은 홀더 그룹.object[] | null
id클러스터 ID. 홀더의 clusterId 값이 이 ID를 가리켜요.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": 84,
"riskLevel": "low",
"metrics": {
"limited": false,
"holdersTotal": 912345,
"holdersAnalyzed": 4000,
"profiled": 100,
"top10Pct": 64.2,
"topHolderPct": 31.7,
"floatPct": 96.6,
"devPct": 0,
"devBundlePct": 0.3,
"sniperCount": 2,
"sniperPct": 6.6,
"freshCount": 41,
"freshPct": 17.6,
"clusterPct": 8.8,
"smartCount": 7,
"smartPct": 2.1,
"poolPct": 3.4,
"burnPct": 0,
"avgPnlUsd": 1840.5,
"launchAt": "2022-12-25T11:04:12.000Z",
"launchSlot": 168410720,
"scoreVersion": 2,
"breakdown": [
{
"key": "top10",
"points": -17.2,
"value": 66.5
},
{
"key": "topHolder",
"points": -5.9,
"value": 32.8
},
{
"key": "devBundle",
"points": 0,
"value": 0.3
},
{
"key": "snipers",
"points": -0.6,
"value": 6.8
},
{
"key": "clusters",
"points": -1.8,
"value": 9.1
},
{
"key": "fresh",
"points": -0.6,
"value": 18.2
},
{
"key": "holders",
"points": 0,
"value": 912345
},
{
"key": "authorities",
"points": 0,
"value": 0
},
{
"key": "devRugs",
"points": 0,
"value": 0,
"total": 1
},
{
"key": "liquidity",
"points": 0,
"value": 2864210.4
},
{
"key": "smartMoneyBonus",
"points": 10,
"value": 7
}
],
"mainReason": {
"key": "top10",
"points": -17.2,
"value": 66.5
}
},
"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리포트는 신규 페어 자동 스캔으로 만들어지며, 누군가 열어 보기 전까지는 지갑 손익이 없어요. 리포트를 열면FULL로 업그레이드되고, 그동안 upgrading 값은 true예요.- 비중은 풀이 보유한 토큰을 포함한 총 공급량 대비 퍼센트예요.