DXB Tracker · Public REST API

v1 · CORS-enabled · 5-minute cache · https://dxb-tracker.pages.dev/api/dxb/*

All endpoints below are publicly accessible. No auth required. The on-chain DXB mint history, recipient classifications, holder snapshots, and forensic computations are reconstructed nightly via Cloudflare Workers cron from api.mainnet.klever.org. Methodology: 1 DXB per $17 of KLV WAGERED (gross wager, not net loss) is Dexbet's published rate; all variance / shortfall figures use this anchor.

Read endpoints

GET/api/dxb/timeline
Full DXB supply timeline. Returns cumulative supply over time, every indexed mint event with classification, baseline (pre-indexed history), and current rate.
{ snapshot, asset, baseline, anchor, indexedTotal, curve: [{ts,hash,to,amt,classification,cumulative_supply},...], currentSupply, currentRate, mintLiveTs, treasuries }
GET/api/dxb/recipients
Every address that has received DXB from a Dexbet treasury, with classification + user notes.
{ recipients: [{addr,totalDxb,txCount,firstTs,lastTs,classification,note,possibleKleverFounder},...], count }
GET/api/dxb/holders
Current DXB balance for every indexed holder, with staking + FPR claim metadata.
{ ts, holderCount, totalHeld, totalStaked, holders: [{addr,totalDxb,stakedDxb,lastClaim,bucketCount},...] }
GET/api/dxb/fpr
Fixed-period reward staking snapshot — latest epoch, total staked, per-KDA reward distribution.
{ ts, interestType, latest: {epoch,totalAmount,TotalClaimed,totalStaked,kda:[...]}, epochs:[...] }
GET/api/dxb/snapshot
Metadata about the latest cron snapshot — event count, recipient count, oldest/newest indexed event.
{ ts, eventCount, recipientCount, oldestTs, newestTs, mintLiveTs, treasuries, asset, pagesScanned }
GET/api/dxb/house-profit
Phase 5: net KLV captured by Dexbet (gross wager − wins paid). The actual house edge in dollar terms. Separate accusation from mint shortfall.
{ ts, klvIn, klvOut, houseTake, volume, effectiveEdgePct, txIn, txOut, uniqueBettors, uniqueWinners }
GET/api/dxb/velocity
Phase 5: mint velocity + ETA to next $1 tier. Tier = max(1, floor(supply / 1M)) per Dexbet's published formula.
{ currentSupply, currentTier, nextTier, distanceToNextTier, velocity:{d1,d7,d30,all}, ratePerDay:{d7,d30}, eta:{d7,d30} }
GET/api/dxb/anomalies
Phase 5: z-scores per recipient on tx-count, avg-mint, timing-entropy. >3σ flagged as ANOMALY. Dexbet-founder wallets excluded from population stats.
{ population, anomalies:[{addr,z:{...},flags,...}], all:[...], threshold:3 }
GET/api/dxb/outflow-breakdown
Where Dexbet sent their KLV — buckets KLV-out by recipient classification (exchange / dexbet-founder / klever-founder / klever-infra / excluded / mint).
GET/api/dxb/holders-history
Phase 7: daily holder snapshots (rolling 30 days). Compares today vs yesterday vs 7d for retention/churn analysis.
GET/api/dxb/dex-price
Phase 7: DXB market price on KleverSwap, if paired. Includes 24h volume + total liquidity.
GET/api/dxb/hall-of-fame
Phase 8: biggest single mint, longest dry streak, most DXB ever held, oldest active address.
GET/api/dxb/community-labels-all
Phase 8: every address with crowd-sourced labels (sorted by vote count).
GET/api/dxb/community-label?addr=klv1...
Labels for a specific address (negative-net-vote labels hidden).
GET/api/dxb/groups
Phase 2: every saved wallet group (Dio, personal, whale-1, etc) with member addresses.
GET/api/dxb/flow?addr=klv1...
Phase 2: every outgoing DXB tx from addr, grouped by recipient. Where did DXB go next?
GET/api/dxb/cluster?addr=klv1...
Phase 2: every counterparty of addr (in + out), with tx counts and DXB volumes.

Write endpoints

POST/api/dxb/classify
Set a recipient's classification.
Body: {addr: "klv1...", classification: "mint"|"exchange"|"dexbet-founder"|"klever-founder"|"klever-infra"|"excluded"}
POST/api/dxb/note
Set a per-address private note (≤500 chars).
Body: {addr: "klv1...", note: "..."}
POST/api/dxb/community-label
Phase 8: suggest a label or vote on one. Max 3 labels per addr, max 80 chars each.
Body: {addr, label, suggester, vote: 1|-1}
POST/api/dxb/refresh?full=1
Manually re-run the treasury scrape + snapshot. Full=1 backfills 100 pages per treasury (slower).
POST/api/dxb/refresh-holders
Manually re-run the holders + FPR snapshot.
POST/api/dxb/refresh-house
Phase 5: manually re-run the house-profit KLV in/out scrape.

Embeddable widget

GET/embed?addr=klv1...&bg=transparent
Phase 9: standalone variance KPI card. Iframe-friendly for Discord embeds, forum signatures, etc.
<iframe src="https://dxb-tracker.pages.dev/embed?addr=klv1...&bg=transparent" width="360" height="220" frameborder="0"></iframe>

Methodology footnote

All variance / mint-shortfall figures use Dexbet's published rate: 1 DXB per $17 of KLV WAGERED. This is GROSS WAGER, not net loss — bet-by-bet, the published terms say the DXB owed accrues on every KLV sent, regardless of whether you won or lost that hand. The house-take metric is a different and INDEPENDENT computation: KLV captured by Dexbet treasury vs KLV paid back as wins. Two separate accusations supported by two separate calculations — don't conflate them.

DXB Tracker · KleverChain on-chain forensics · CORS *
No rate limit currently. Be a good neighbor: cache responses for 5 minutes.