xcaDocs
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ório
ID da rede. Por enquanto, apenas solana."solana"
addresspathobrigatório
Endereç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#

chain
ID da rede.string
address
Endereço do mint do token.string
status
Estado do relatório. NONE significa que o token nunca foi escaneado."NONE" | "QUEUED" | "RUNNING" | "DONE" | "ERROR"
depth
LIGHT para scans automáticos de novos pares, FULL para a análise completa."LIGHT" | "FULL" | null
upgrading
Um relatório LIGHT está sendo atualizado para FULL.boolean
step
Etapa atual do scan, enquanto ele está em andamento.string | null
progress
Progresso do scan, de 0 a 100.number
errorMessage
Motivo da falha do último scan, quando o status é ERROR.string | null
symbol
Ticker do token.string | null
name
Nome do token.string | null
imageUrl
URL do logo do token.string | null
market
Principal par de negociação, segundo o DexScreener.object | null
pairAddress
Endereço do par mais líquido.string | null
dexId
DEX desse par.string | null
url
Página do par no DexScreener.string | null
name
Nome do token no par.string | null
symbol
Ticker do token no par.string | null
quoteSymbol
Ativo de cotação do par, por exemplo SOL.string | null
imageUrl
Logo do token no DexScreener.string | null
priceUsd
Preço em USD.number | null
liquidityUsd
Liquidez de todos os pools, em USD.number | null
fdvUsd
Avaliação totalmente diluída (FDV), em USD.number | null
marketCapUsd
Market cap, em USD.number | null
volume24hUsd
Volume negociado em 24 horas, em USD.number | null
txns24h
Transações de compra e venda em 24 horas.{ buys, sells } | null
change
Variação de preço, em porcentagem, em 5 minutos e em 1, 6 e 24 horas.{ m5, h1, h6, h24 }
pairCreatedAt
Quando o par foi criado.string | null
poolAddresses
Endereços de todos os pools conhecidos do token.string[]
websites
Sites do projeto.{ url, label }[]
socials
Links das redes sociais do projeto.{ type, url }[]
fetchedAt
Quando os dados de mercado foram obtidos.string
security
Fatos on-chain sobre o mint.object | null
mintAuthority
Quem pode emitir novos tokens; null quando a autoridade foi revogada.string | null
freezeAuthority
Quem pode congelar as contas dos holders; null quando a autoridade foi revogada.string | null
program
Programa de token do mint."spl-token" | "spl-token-2022" | "unknown"
supply
Supply total, em tokens inteiros.number
decimals
Casas decimais do token.number
creator
Carteira que criou o token, quando conhecida.string | null
createdAt
Quando o mint foi criado.string | null
computedAt
Quando o relatório foi calculado.string | null
stale
O relatório é mais antigo que o tempo de vida do cache.boolean
holderScore
Holder Score de 0 (perigoso) a 100 (limpo).number | null
riskLevel
Nível de risco derivado do score."low" | "medium" | "high" | null
metrics
Métricas de distribuição; as chaves dependem do seu plano.object | null
limited
Os dados de holders são parciais (limites do provedor).boolean
holdersTotal
Número total de holders.number
holdersAnalyzed
Holders incluídos na análise.number
profiled
Holders com perfil de carteira completo.number
top10Pct
Participação dos 10 maiores holders reais (sem contar pools, queimas e exchanges).number
topHolderPct
Participação do maior holder real.number
floatPct
Supply circulante: a parcela fora de pools e de endereços de queima.number
devPct
Participação do criador.number
devBundlePct
Participação das carteiras do bundle do criador.number
sniperCount
Número de carteiras sniper.number
sniperPct
Participação dos snipers.number
freshCount
Número de carteiras novas.number
freshPct
Participação das carteiras novas.number
clusterPct
Participação dos clusters de carteiras com um financiador em comum.number
smartCount
Número de holders smart money.number
smartPct
Participação de smart money.number
poolPct
Participação dos pools de liquidez.number
burnPct
Parcela enviada para endereços de queima.number
avgPnlUsd
PnL médio de 30 dias dos holders perfilados, em USD.number | null
launchAt
Quando as negociações começaram.string | null
launchSlot
Slot da Solana do primeiro trade.number | null
scoreVersion
Versão do modelo do Holder Score usada para pontuar o relatório.number
breakdown
Cada fator do Holder Score com seus pontos e o valor medido.{ key, points, value, total?, cap? }[]
mainReason
O fator que mais custou pontos.{ key, points, value, total?, cap? } | null
clusters
Grupos de holders financiados pela mesma carteira.object[] | null
id
ID do cluster, referenciado pelo clusterId dos holders.string
funder
Carteira que financiou os membros.string
funderLabel
Rótulo conhecido do financiador, por exemplo uma exchange.string | null
members
Carteiras membros do cluster.string[]
sharePct
Participação do cluster.number
clustersCount
Número de clusters, mesmo quando a lista de clusters está bloqueada.number
devHistory
Lançamentos anteriores do criador.object | null
creator
Carteira do criador.string | null
launches
Tokens lançados pelo criador.number
rugs
Lançamentos que perderam a liquidez.number
avgLifespanSec
Tempo de vida médio dos tokens do criador, quando conhecido.number | null
tokens
Os lançamentos, dos mais novos para os mais antigos.{ address, symbol, name, createdAt, liquidityUsd, fdvUsd, rugged }[]
approximate
Inferido a partir das primeiras compras do criador, então trate como uma estimativa.true
devTeaser
Contagem de lançamentos e rugs, mesmo quando o histórico do dev está bloqueado.{ launches, rugs } | null
activity
Negociações recentes no par principal.object | null
recent
Swaps mais recentes; time é um timestamp Unix em milissegundos.{ signature, time, wallet, side, amount, valueUsd }[]
topTraders
Traders mais lucrativos do token.{ wallet, boughtUsd, soldUsd, pnlUsd, trades }[]
locked
Recursos 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.
402planRequired — O seu plano não inclui acesso à API ou a este recurso.
429rateLimited — Requisições demais por minuto, ou a cota mensal se esgotou.

Status do relatório#

NONENunca escaneado. Inicie um scan com POST /scans.
QUEUEDAguardando um worker.
RUNNINGEm análise; veja step e progress.
DONEConcluído; o relatório está completo.
ERRORO ú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 /scans o atualiza.
  • Relatórios LIGHT vê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.