The same A–F fairness model that powers the radar, the ranked board and the reports — as a free, CORS-open JSON API. Grade one token, pull the whole ranked board, or drop a live grade badge on any page. No key, no signup, no wallet.
*)
100% read-only on-chain
No auth
CDN-cached
Returns the machine-readable fairness grade and full breakdown for one KRC-20 tick, computed live from public on-chain data.
| Param | Required | Notes |
|---|---|---|
| tick | yes | KRC-20 ticker, 4–6 letters (case-insensitive). E.g. NACHO, KREDO. |
// response appears here…
# cURL curl -s 'https://radar.linkrra.com/api/score?tick=NACHO' // JavaScript (browser or Node) const r = await fetch('https://radar.linkrra.com/api/score?tick=NACHO') const t = await r.json() console.log(t.grade, t.score) // "A" 100
| Field | Type | Description |
|---|---|---|
| tick | string | The ticker (uppercased). |
| grade | string | Fairness grade A–F. |
| score | number | 0–100 fairness score behind the grade. |
| state | string | deployed (open) or finished. |
| minting | bool | true while the token is still open to mint. |
| max / minted | string | Raw supply in on-chain units — apply decimals. |
| decimals | number | Token decimals for human-readable supply. |
| deployedAtMs | number | Deploy time (epoch ms). |
| breakdown | object | preMintPct, topHolderPct, top5Pct, devAllocPct, holders, mintedPct — the graded pillars (percent). |
| reasons | array | [{kind, icon, text}] — transparent "why this grade". |
| topHolders | array | Top-10 [{address, pctOfSupply, isDeployer}]. |
| deployer | string | Deployer address. |
| Status | When |
|---|---|
| 400 | Missing ?tick= or invalid ticker format. |
| 404 | Ticker not found / never deployed. |
| 502 | Upstream (Kasplex) temporarily unavailable. |
public, s-maxage=30 · CORS: Access-Control-Allow-Origin: *The whole ranked A–F leaderboard of the most-active live KRC-20 launches, fairest-first, in one call — the JSON twin of the /top board. Same shared model, so a row here can never disagree with /api/score, /t/{tick} or the badge for the same token.
/top.json · no parameterscurl -s 'https://radar.linkrra.com/api/top' | jq '.items[0]'
| Field | Type | Description |
|---|---|---|
| generatedAt | string | ISO timestamp of this snapshot. |
| count | number | Rows in items. |
| minting | number | How many are still open to mint. |
| topPick | object | Fairest row: {tick, grade, score}. |
| avgScore | number | Mean fairness score across the board. |
| items[] | array | Ranked rows (see below). |
items[] row| Field | Description |
|---|---|
| rank | 1-based position (fairest first). |
| tick, grade, score | Ticker, A–F grade, 0–100 score. |
| verdict | Word for the grade: excellent / good / fair / weak / poor. |
| state, minting | Lifecycle + whether mint is still open. |
| max, minted, decimals | Raw supply units + decimals. |
| pillars | {preMintPct, topHolderPct, top5Pct, devAllocPct, holders, mintedPct}. |
| deployer, topHolders | Deployer address + top-10 holders. |
| reasons | Transparent "why this grade" list. |
| links | {report, score, mint, explorer} (mint null unless open). |
count:0, items:[]) with an error flag rather than breaking your consumer.public, s-maxage=600, stale-while-revalidate=3600 · CORS: *The machine-readable twin of the live /alerts engine: the TYPED on-chain signals a trader acts on — new launch, fair launch, momentum spike, closing mint, concentration risk — over the most-active live KRC-20 mints, in one CORS-open call. Built for Telegram/Discord bots, Zapier/IFTTT automations and trading tools. Same shared model + thresholds as the HTML engine, so a signal here never disagrees with /api/top, /api/score or /t/{tick}.
curl -s 'https://radar.linkrra.com/api/alerts' | jq '.alerts[] | select(.type=="fair")'
alerts[] item| Field | Notes |
|---|---|
type | one of new, fair, momentum, closing, risk |
tick · grade · score | token + its live A–F fairness grade (0–100) |
title · desc · why[] | human-readable headline, one-line detail, and the transparent reasons the signal fired |
ts | epoch-ms of the op/deploy that fired the signal (feed is newest-first) |
mintedPct · mph | mint progress %, and (momentum only) accepted mints/hour |
pillars | pre-mint %, top-wallet %, top-5 %, deployer alloc %, holders |
links | report / score / mint (open mints only) / explorer |
Top-level: count, counts (per type), thresholds (newWithinHours:48, momentumMintsPerHour:6, closingMintedPct:88), generatedAt.
count:0, alerts:[]) with an error flag rather than breaking your consumer.application/json · signals are time-sensitive → 2-min CDN cache + stale-while-revalidate · CORS: *A shields.io-style live SVG badge showing a token's current A–F grade — for a project README, launch page, or dashboard. It re-scores on every request, so the badge always matches the live grade.
[](https://radar.linkrra.com/t/NACHO)
<a href="https://radar.linkrra.com/t/NACHO"> <img src="…/badge/NACHO.svg" alt="Fair-Launch grade"> </a>
n/a / not found badge (still 200 image/svg+xml) — an embed never shows a broken image.image/svg+xml · 2-min CDN cache + stale-while-revalidate · CORS: *Where the badge shows one token's grade, the widget drops the whole live "fairest launches minting now" board onto any page — a Kaspa community site, a wallet, a project hub. One line of HTML, no build step, no key. It renders the same fairest-first board as /top (shared model — never diverges), auto-updates on every load, and each row links straight to the token's report and — for open mints — the 1.75% mint tool.
<script src="https://radar.linkrra.com/widget.js" async></script>
| Attribute | Default | What it does |
|---|---|---|
data-limit | 6 | Rows to show (1–15). |
data-mints-only | true | Only tokens minting now (the mintable funnel). Set false to include finished launches. |
data-title | Fairest launches minting now | Header text. |
<script> sits, or — if present anywhere on the page — into <div id="kaspa-fair-launches"></div>. Example: <script src="…/widget.js" data-limit="5"></script>./api/top and injects scoped, self-styled DOM. On any error it renders nothing and never breaks the host page.application/javascript · CORS: * · every embed is a live, self-updating backlink to the radarOne transparent A–F heuristic, computed live from public on-chain distribution — no black box, no paid placement. The same score.js module backs every surface (radar, /top, /api/score, /api/top, reports, badges), so grades never diverge.
Scored pillars (each returned in breakdown / pillars):
The public tier above is free and CORS-open for apps, bots and dashboards. For high-volume pulls, a licensed data feed, white-label grades, sponsored "Verified Fair-Launch" badges, or a co-brand slot on the radar — let's structure it. Fair use of the free tier is welcome; please cache and attribute Linkrra Fair-Launch Radar.
Talk about API resale →