xcaDocs
Endpoints

Reporte de token

Datos de mercado, seguridad, Holder Score, métricas de holders, clústeres, historial del dev y actividad de trading de un token.

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

Devuelve el último reporte que XCA tiene de un token. Leer un reporte nunca inicia un escaneo: si el estado es NONE, el token aún no se ha escaneado, así que primero llama a POST /scans.

Parámetros#

chainpathobligatorio
Identificador de la red. Por ahora, solo solana."solana"
addresspathobligatorio
Dirección del token (mint).string

Solicitud#

curl -s "https://app.xca.fun/api/v1/tokens/solana/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" \
  -H "Authorization: Bearer $XCA_API_KEY"
Pruébalo
Pega tu clave de API para enviar una solicitud real.

Respuesta#

chain
Identificador de la red.string
address
Dirección del token (mint).string
status
Estado del reporte. NONE significa que el token nunca se escaneó."NONE" | "QUEUED" | "RUNNING" | "DONE" | "ERROR"
depth
LIGHT para los escaneos automáticos de nuevos pares, FULL para el análisis completo."LIGHT" | "FULL" | null
upgrading
Un reporte LIGHT se está actualizando a FULL.boolean
step
Paso actual del escaneo mientras se ejecuta.string | null
progress
Progreso del escaneo, de 0 a 100.number
errorMessage
Motivo por el que falló el último escaneo, cuando el estado es ERROR.string | null
symbol
Ticker del token.string | null
name
Nombre del token.string | null
imageUrl
URL del logo del token.string | null
market
Par de trading principal según DexScreener.object | null
pairAddress
Dirección del par con mayor liquidez.string | null
dexId
DEX de ese par.string | null
url
Página del par en DexScreener.string | null
name
Nombre del token según el par.string | null
symbol
Ticker del token según el par.string | null
quoteSymbol
Activo de cotización del par, por ejemplo, SOL.string | null
imageUrl
Logo del token según DexScreener.string | null
priceUsd
Precio en USD.number | null
liquidityUsd
Liquidez de todos los pools, en USD.number | null
fdvUsd
Valoración totalmente diluida (FDV), en USD.number | null
marketCapUsd
Capitalización de mercado, en USD.number | null
volume24hUsd
Volumen de trading en 24 horas, en USD.number | null
txns24h
Transacciones de compra y venta en 24 horas.{ buys, sells } | null
change
Variación del precio, en porcentaje, en 5 minutos y en 1, 6 y 24 horas.{ m5, h1, h6, h24 }
pairCreatedAt
Cuándo se creó el par.string | null
poolAddresses
Direcciones de todos los pools conocidos del token.string[]
websites
Sitios web del proyecto.{ url, label }[]
socials
Redes sociales del proyecto.{ type, url }[]
fetchedAt
Cuándo se obtuvieron los datos de mercado.string
security
Datos on-chain sobre el mint.object | null
mintAuthority
Quién puede acuñar nuevos tokens; null si la autoridad fue revocada.string | null
freezeAuthority
Quién puede congelar las cuentas de los holders; null si la autoridad fue revocada.string | null
program
Programa de tokens al que pertenece el mint."spl-token" | "spl-token-2022" | "unknown"
supply
Suministro total en tokens enteros.number
decimals
Número de decimales del token.number
creator
Billetera que creó el token, si se conoce.string | null
createdAt
Cuándo se creó el mint.string | null
computedAt
Cuándo se calculó el reporte.string | null
stale
El reporte supera su tiempo de vida en caché.boolean
holderScore
Holder Score de 0 (peligroso) a 100 (limpio).number | null
riskLevel
Nivel de riesgo derivado de la puntuación."low" | "medium" | "high" | null
metrics
Métricas de distribución; las claves dependen de tu plan.object | null
limited
Los datos de holders fueron parciales (por límites del proveedor).boolean
holdersTotal
Número total de holders.number
holdersAnalyzed
Holders incluidos en el análisis.number
profiled
Holders con un perfil de billetera completo.number
top10Pct
Porcentaje en manos de los 10 mayores holders reales (sin contar pools, quemas ni exchanges).number
topHolderPct
Porcentaje en manos del mayor holder real.number
floatPct
Suministro circulante: el porcentaje fuera de pools y direcciones de quema.number
devPct
Porcentaje en manos del creador.number
devBundlePct
Porcentaje en manos de las billeteras del bundle del creador.number
sniperCount
Número de billeteras sniper.number
sniperPct
Porcentaje en manos de snipers.number
freshCount
Número de billeteras nuevas.number
freshPct
Porcentaje en manos de billeteras nuevas.number
clusterPct
Porcentaje en manos de clústeres de billeteras con un mismo financiador.number
smartCount
Número de holders de smart money.number
smartPct
Porcentaje en manos de smart money.number
poolPct
Porcentaje en manos de pools de liquidez.number
burnPct
Porcentaje enviado a direcciones de quema.number
avgPnlUsd
PnL promedio a 30 días de los holders perfilados, en USD.number | null
launchAt
Cuándo empezó el trading.string | null
launchSlot
Slot de Solana de la primera operación.number | null
scoreVersion
Versión del modelo de Holder Score con la que se puntuó el reporte.number
breakdown
Cada factor del Holder Score con sus puntos y el valor medido.{ key, points, value, total?, cap? }[]
mainReason
El factor que más puntos restó.{ key, points, value, total?, cap? } | null
clusters
Grupos de holders financiados por la misma billetera.object[] | null
id
Identificador del clúster, al que hace referencia el clusterId de los holders.string
funder
Billetera que financió a los miembros.string
funderLabel
Etiqueta conocida del financiador, por ejemplo, un exchange.string | null
members
Billeteras miembro.string[]
sharePct
Porcentaje en manos del clúster.number
clustersCount
Número de clústeres, incluso cuando la lista de clústeres está bloqueada.number
devHistory
Lanzamientos anteriores del creador.object | null
creator
Billetera del creador.string | null
launches
Tokens lanzados por el creador.number
rugs
Lanzamientos que perdieron su liquidez.number
avgLifespanSec
Tiempo de vida promedio de los tokens del creador, si se conoce.number | null
tokens
Los lanzamientos, del más nuevo al más antiguo.{ address, symbol, name, createdAt, liquidityUsd, fdvUsd, rugged }[]
approximate
Se infirió a partir de las primeras compras del creador, así que tómalo como una estimación.true
devTeaser
Cantidad de lanzamientos y de rugs, incluso cuando el historial del dev está bloqueado.{ launches, rugs } | null
activity
Actividad de trading reciente en el par principal.object | null
recent
Últimos swaps; time es una marca de tiempo Unix en milisegundos.{ signature, time, wallet, side, amount, valueUsd }[]
topTraders
Los traders más rentables del token.{ wallet, boughtUsd, soldUsd, pnlUsd, trades }[]
locked
Funciones que tu plan no incluye; sus campos son null o se omiten.string[]

Respuesta de ejemplo#

{
  "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 estado#

200Éxito
400validation — Un parámetro o el cuerpo de la solicitud no es válido; consulta error.issues.
401unauthorized — La clave de API falta, está mal formada o fue revocada.
402planRequired — Tu plan no incluye acceso a la API o a esta función.
429rateLimited — Demasiadas solicitudes por minuto o se agotó la cuota mensual.

Estado del reporte#

NONENunca se escaneó. Inicia un escaneo con POST /scans.
QUEUEDEsperando un worker disponible.
RUNNINGSe está analizando; consulta step y progress.
DONETerminado; el reporte está completo.
ERROREl último escaneo falló; consulta errorMessage e inténtalo de nuevo.

Ten en cuenta#

  • Los campos de las funciones que tu plan no incluye son null o se omiten, y sus claves aparecen en locked.
  • stale es true cuando el reporte supera su tiempo de vida en caché; un nuevo POST /scans lo actualiza.
  • Los reportes LIGHT provienen de los escaneos automáticos de nuevos pares y no incluyen el PnL de las billeteras hasta que alguien los abre; mientras se completan, upgrading es true.
  • Las participaciones son porcentajes del suministro total, incluidos los tokens en manos de los pools.