Endpoints
Relatório do token
Dados de mercado, segurança, Holder Score, métricas de holders, clusters, histórico do dev e atividade de trading de um token.
GET
/api/v1/tokens/{chain}/{address}Retorna o relatório mais recente que o XCA tem para um token. Ler um relatório nunca inicia um scan: se o status for NONE, o token ainda não foi escaneado, então chame POST /scans primeiro.
Parâmetros#
chainpathobrigatórioID da rede. Por enquanto, apenas solana."solana"
addresspathobrigatórioEndereço do mint do token.string
Requisição#
curl -s "https://app.xca.fun/api/v1/tokens/solana/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" \
-H "Authorization: Bearer $XCA_API_KEY"Testar
Cole sua chave de API para enviar uma requisição real.
Resposta#
chainID da rede.string
addressEndereço do mint do token.string
statusEstado do relatório. NONE significa que o token nunca foi escaneado."NONE" | "QUEUED" | "RUNNING" | "DONE" | "ERROR"
depthLIGHT para scans automáticos de novos pares, FULL para a análise completa."LIGHT" | "FULL" | null
upgradingUm relatório LIGHT está sendo atualizado para FULL.boolean
stepEtapa atual do scan, enquanto ele está em andamento.string | null
progressProgresso do scan, de 0 a 100.number
errorMessageMotivo da falha do último scan, quando o status é ERROR.string | null
symbolTicker do token.string | null
nameNome do token.string | null
imageUrlURL do logo do token.string | null
marketPrincipal par de negociação, segundo o DexScreener.object | null
marketPrincipal par de negociação, segundo o DexScreener.object | null
pairAddressEndereço do par mais líquido.string | null
dexIdDEX desse par.string | null
urlPágina do par no DexScreener.string | null
nameNome do token no par.string | null
symbolTicker do token no par.string | null
quoteSymbolAtivo de cotação do par, por exemplo SOL.string | null
imageUrlLogo do token no DexScreener.string | null
priceUsdPreço em USD.number | null
liquidityUsdLiquidez de todos os pools, em USD.number | null
fdvUsdAvaliação totalmente diluída (FDV), em USD.number | null
marketCapUsdMarket cap, em USD.number | null
volume24hUsdVolume negociado em 24 horas, em USD.number | null
txns24hTransações de compra e venda em 24 horas.{ buys, sells } | null
changeVariação de preço, em porcentagem, em 5 minutos e em 1, 6 e 24 horas.{ m5, h1, h6, h24 }
pairCreatedAtQuando o par foi criado.string | null
poolAddressesEndereços de todos os pools conhecidos do token.string[]
websitesSites do projeto.{ url, label }[]
socialsLinks das redes sociais do projeto.{ type, url }[]
fetchedAtQuando os dados de mercado foram obtidos.string
securityFatos on-chain sobre o mint.object | null
securityFatos on-chain sobre o mint.object | null
mintAuthorityQuem pode emitir novos tokens; null quando a autoridade foi revogada.string | null
freezeAuthorityQuem pode congelar as contas dos holders; null quando a autoridade foi revogada.string | null
programPrograma de token do mint."spl-token" | "spl-token-2022" | "unknown"
supplySupply total, em tokens inteiros.number
decimalsCasas decimais do token.number
creatorCarteira que criou o token, quando conhecida.string | null
createdAtQuando o mint foi criado.string | null
computedAtQuando o relatório foi calculado.string | null
staleO relatório é mais antigo que o tempo de vida do cache.boolean
holderScoreHolder Score de 0 (perigoso) a 100 (limpo).number | null
riskLevelNível de risco derivado do score."low" | "medium" | "high" | null
metricsMétricas de distribuição; as chaves dependem do seu plano.object | null
metricsMétricas de distribuição; as chaves dependem do seu plano.object | null
limitedOs dados de holders são parciais (limites do provedor).boolean
holdersTotalNúmero total de holders.number
holdersAnalyzedHolders incluídos na análise.number
profiledHolders com perfil de carteira completo.number
top10PctParticipação dos 10 maiores holders reais (sem contar pools, queimas e exchanges).number
topHolderPctParticipação do maior holder real.number
floatPctSupply circulante: a parcela fora de pools e de endereços de queima.number
devPctParticipação do criador.number
devBundlePctParticipação das carteiras do bundle do criador.number
sniperCountNúmero de carteiras sniper.number
sniperPctParticipação dos snipers.number
freshCountNúmero de carteiras novas.number
freshPctParticipação das carteiras novas.number
clusterPctParticipação dos clusters de carteiras com um financiador em comum.number
smartCountNúmero de holders smart money.number
smartPctParticipação de smart money.number
poolPctParticipação dos pools de liquidez.number
burnPctParcela enviada para endereços de queima.number
avgPnlUsdPnL médio de 30 dias dos holders perfilados, em USD.number | null
launchAtQuando as negociações começaram.string | null
launchSlotSlot da Solana do primeiro trade.number | null
scoreVersionVersão do modelo do Holder Score usada para pontuar o relatório.number
breakdownCada fator do Holder Score com seus pontos e o valor medido.{ key, points, value, total?, cap? }[]
mainReasonO fator que mais custou pontos.{ key, points, value, total?, cap? } | null
clustersGrupos de holders financiados pela mesma carteira.object[] | null
clustersGrupos de holders financiados pela mesma carteira.object[] | null
idID do cluster, referenciado pelo clusterId dos holders.string
funderCarteira que financiou os membros.string
funderLabelRótulo conhecido do financiador, por exemplo uma exchange.string | null
membersCarteiras membros do cluster.string[]
sharePctParticipação do cluster.number
clustersCountNúmero de clusters, mesmo quando a lista de clusters está bloqueada.number
devHistoryLançamentos anteriores do criador.object | null
devHistoryLançamentos anteriores do criador.object | null
creatorCarteira do criador.string | null
launchesTokens lançados pelo criador.number
rugsLançamentos que perderam a liquidez.number
avgLifespanSecTempo de vida médio dos tokens do criador, quando conhecido.number | null
tokensOs lançamentos, dos mais novos para os mais antigos.{ address, symbol, name, createdAt, liquidityUsd, fdvUsd, rugged }[]
approximateInferido a partir das primeiras compras do criador, então trate como uma estimativa.true
devTeaserContagem de lançamentos e rugs, mesmo quando o histórico do dev está bloqueado.{ launches, rugs } | null
activityNegociações recentes no par principal.object | null
activityNegociações recentes no par principal.object | null
recentSwaps mais recentes; time é um timestamp Unix em milissegundos.{ signature, time, wallet, side, amount, valueUsd }[]
topTradersTraders mais lucrativos do token.{ wallet, boughtUsd, soldUsd, pnlUsd, trades }[]
lockedRecursos que o seu plano não inclui; os campos deles vêm como null ou são omitidos.string[]
Exemplo de resposta#
{
"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": []
}Códigos de status#
200Sucesso
400validation — Um parâmetro ou o corpo da requisição é inválido; veja
error.issues.401unauthorized — A chave de API está ausente, malformada ou revogada.
402
planRequired — O seu plano não inclui acesso à API ou a este recurso.429
rateLimited — Requisições demais por minuto, ou a cota mensal se esgotou.Status do relatório#
NONE | Nunca escaneado. Inicie um scan com POST /scans. |
QUEUED | Aguardando um worker. |
RUNNING | Em análise; veja step e progress. |
DONE | Concluído; o relatório está completo. |
ERROR | O último scan falhou; veja errorMessage e tente novamente. |
Bom saber#
- Campos de recursos que o seu plano não inclui vêm como null ou são omitidos, e as chaves deles são listadas em locked.
- stale é true quando o relatório é mais antigo que o tempo de vida do cache; um novo
POST /scanso atualiza. - Relatórios
LIGHTvêm de scans automáticos de novos pares e não têm PnL das carteiras até que alguém os abra; upgrading fica true enquanto isso acontece. - As participações são percentuais do supply total, incluindo os tokens mantidos em pools.