No entity names. No identity. No ownership or “holdings.” No
risk / taint / scam / AML labels. None of those are provable on-chain for BTX, so the
API does not ship them. Every token-gated payload carries a caveat string; keep it attached
when you display or redistribute results.
Every figure is a neutral on-chain fact: provenance (value traced FROM an address),
funding sources (value that came INTO it), co-spend (addresses that appeared
together as inputs), and the derived data-bank series. Interpretation is yours.
Token-gated endpoints require a bearer token in the Authorization
header. Tokens are issued per customer and map to a tier (Basic / Pro / Enterprise) that sets depth,
export, feature and rate-limit ceilings. Tokens are stored server-side as a SHA-256 hash — the plaintext
is shown once at issue time and cannot be recovered. The public chain/explorer endpoints (see
PUBLIC CHAIN) need no token.
# every gated request carries the bearer token Authorization: Bearer flp_YOUR_TOKEN_HERE
Enterprise Programmatic API access is licensed for Enterprise.
Basic and Pro tokens power the interactive web app; if used for programmatic access to a lens their tier
does not include, they return 403.
Connected byron-pool miners can mint a free Basic token via
POST /api/premium/pool-miner/claim.
Only a fully authorized request is counted against your usage; a 401/429/403 is not billed.
Confirm a token is live (tier, limits, features, rate ceiling) with
GET /api/premium/whoami — it is never rate-limited or billed.
https://api-explorer.btxbyronbay.com/api # production https://<your-explorer-host>/api # self-hosted
| tier | hops | fanout | nodes | export (CSV) | lenses | API | rate limit |
|---|---|---|---|---|---|---|---|
| Basic | 3 | 20 | 100 | — | provenance · origin | — | 30 / min |
| Pro | 10 | 50 | 300 | yes | provenance · reverse · cluster · origin | — | 120 / min |
| Enterprise | 15 | 100 | 1000 | yes | all lenses + taint/exposure · shield-linkage · query · anomalies · observatory · data-banks · sell-pressure | yes | 600 / min |
hops = trace depth · fanout = max edges expanded per node · nodes = max addresses returned.
Results past the cap set "truncated": true (or hasMore).
Rate limits are operator-tunable via EXPLORER_RATELIMIT_{BASIC,PRO,ENTERPRISE};
the numbers above are defaults. Per-tier feature gates: provenance/origin = Basic+,
reverse/cluster = Pro+.
taint/exposure and shield-boundary are Pro+ (Pro = direct/1-hop, Enterprise = full indirect);
the query engine, anomaly feed, network observatory, certificate/verify, as-of snapshots, attribution/lineage data-banks,
shield-linkage and the sell-pressure curve are Enterprise.
Each token gets a per-tier request budget (token-bucket, refilled continuously — Basic: 30, Pro: 120,
Enterprise: 600 rpm). Exceeding it returns 429 with a
Retry-After header (seconds until a slot frees). Basic draws from a single
cross-worker per-token bucket (a shared token self-throttles); Pro/Enterprise use a per-worker bucket.
whoami is not rate-limited.
HTTP/1.1 429 Too Many Requests Retry-After: 12 { "error": "rate_limited", "retryAfter": 12, "detail": "rate limit exceeded (600/min for your tier); retry in 12s" }
# 1 · operator mints a per-user token (admin only — plaintext shown ONCE) curl -s -X POST https://api-explorer.btxbyronbay.com/api/premium/admin/tokens \ -H "Authorization: Bearer $EXPLORER_ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"tier":"enterprise","label":"acme-otc-desk"}' # → { "token": "flp_…", "token_sha256": "…", "tier": "Enterprise", … } (store flp_… now) # 2 · confirm the token + see your limits curl -s https://api-explorer.btxbyronbay.com/api/premium/whoami \ -H "Authorization: Bearer $TOKEN" # 3 · first real call — forward provenance for an address curl -s "https://api-explorer.btxbyronbay.com/api/provenance/$ADDR?mode=traceable" \ -H "Authorization: Bearer $TOKEN" # 4 · CSV export (Pro / Enterprise) curl -s "https://api-explorer.btxbyronbay.com/api/reverse/$ADDR?format=csv" \ -H "Authorization: Bearer $TOKEN" -o reverse.csv
Pool miners skip step 1: POST /api/premium/pool-miner/claim with your
{"address":"btx1…"} payout address mints a free Basic token.
Every gated endpoint is listed below with its tier, params, response key fields, bounds and
the neutral caveat. Path params are shown as {name}.
Echo the caller's tier, depth limits, export/feature flags and rate ceiling. Not rate-limited, not billed.
tier, limits{hops,fanout,nodes}, export, features[], api, rateLimitPerMin, tokenSource, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Count of active byron-pool miners the free-Basic perk matches against (count only, never addresses).
enabled, minerCount, lastRefreshOk, stale, note
Connected byron-pool miner claims free Basic access with their payout address. Membership hit mints a Basic token (shown once).
address: btx1... (your BTX payout address)
ok, token (ONCE), tier, limits, export, features, api, expires_ts, note, caveat
Mint a per-user token. Plaintext returned ONCE; only sha256 is stored.
tier: basic|pro|enterprise, label: optional operator note, expires_ts: optional unix int
token (ONCE), token_sha256, tier, tier_key, label, created_ts, expires_ts, note
List tokens (metadata only - no plaintext).
count, tokens[]{token_sha256,tier,label,created_ts,revoked_ts,expires_ts,calls,active}, note
Revoke a token by sha256 or prefix.
ident (path, required) — token sha256 or unique prefix
revoked count / status
Add an address (with optional label) to the caller's private list.
address: btx1..., label: optional note
ok / stored
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
List watched addresses with a neutral on-chain activity summary each.
count, watchlist[]{address,label,createdTs,activity{balanceBtx,receivedBtx,firstSeen,lastSeen,inTxCount,outTxCount}}, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Remove one address from the caller's list.
address (path, required) — btx1 address to remove
ok / removed
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Forward fund-flow: value that provably traces FROM the address, with proportional (haircut) attribution.
addr (path, required) — root address · mode (query) — traceable (default lens mode) · format (query) — csv for a CSV download (Pro/Enterprise only; else 403)
root, mode, totalOriginatedBtx, totalBalanceReachedBtx, totalTraceableUnspentBtx, addressesReached, truncated, tree[], tier, limits, exportable, caveat
Bounded by tier hops/fanout/nodes; results past the cap set truncated:true.
Traceable value is a proportional flow share, not an ownership assertion.
Backward funding-source trace: value that provably flowed INTO the address, attributed up the spend graph.
addr (path, required) · format (query) — csv export
root, totalReceivedBtx, totalTracedSourcesBtx, sourcesCount, tree[], tier, limits, exportable, caveat
Bounded by tier hops/fanout/nodes.
A funding source is where value came FROM; not an owner/sender identity.
Co-spend set: addresses that appeared together as inputs in the same tx(s). NOT proof of common ownership.
addr (path, required) · format (query) — csv export
root, memberCount, evidenceTxCount, members[]{address,sharedTxCount,sharedTxids,firstSeen,lastSeen}, tier, exportable, caveat
Bounded by tier fanout/nodes.
Co-spending is a provable co-occurrence and is NOT proof of common ownership.
Origin trace to coinbase roots (which mined coins ultimately funded this address). Enterprise adds an orphan/reorg/conflicting-spend root-validity forensic.
addr (path, required) · win (query) — time window; default all · format (query) — csv export
root, tree[], incoming[] (cap 40), window, tier, limits, exportable, validityNote (non-Ent), caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Wallet-to-wallet: provable direct transfers where A was an input and B an output of the same tx.
a (path, required) — from address (btx1...) · b (path, required) — to address (btx1...) · win (query) — 1h|24h|7d|30d · from (query) — unix int or ISO · to (query) — unix int or ISO
transfers/edges, window, tier, caveat
cap = max(50, tier.fanout*5).
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied. A->B is a provable on-chain transfer fact (A was an input, B an output of the same tx); it is NOT an ownership or identity claim.
Ranked addresses this wallet sent to / received from - a neutral on-chain volume ranking.
addr (path, required) · win (query) — 1h|24h|7d|30d · from (query) · to (query)
counterparties (top 80), window, tier, caveat
cap = max(100, tier.nodes*2), top=80.
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied. Counterparties are addresses this wallet sent to / received from; a neutral on-chain volume ranking, NOT an ownership or identity claim.
Pre-OTC counterparty check: neutral forensic report on an address before settling a deal. Depth scales with tier (Enterprise = deep).
addr (path, required) — btx1..., len 20-120 · amount (query) — stated deal amount (optional) · win (query) — time window; default all
report body {verdict, toxicity{band: notable|elevated|benign|neutral, glyph, score, evidence: coinbase mined-fraction + first-spend latency + coin-age}, provenance, validity, wallet, balanceCheck, cluster, flags, incoming}, window, tier, reportId, sharePath (/otc.html?r=<rid>)
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Fetch a frozen Pre-OTC report by id. No token - both deal parties read identical facts.
rid (path, required) — report id
frozen report record (verbatim); 404 if unknown
Neutral mining badge: whether an address received coinbase output, and the pool mix (block production, never fund ownership).
addr (path, required) — btx1..., len 20-120
address, isMiningAddress, coinbaseReceiveCount, coinbaseReceivedBtxSampled, sampledReceives, sampleBounded, pools[], note, caveat
sample bounded at 30 receives.
Point-in-time balance of an address at instant t.
address (path, required) · t (query) — unix ts; default now
balance-as-of body, tier, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Frozen point-in-time snapshot of a lens (provenance|reverse|cluster) at instant t. History begins at first query.
lens (path, required) — provenance|reverse|cluster · root (path, required) · t (query) — unix ts; default now
found, lens, root, queriedAsOf/asOf, snapshot..., tier, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Signed provenance certificate for an address (JSON or rendered HTML).
address (path, required) · format (query) — json (default) | html
certificate document (json) or text/html page
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Verify a previously issued provenance certificate document.
<certificate document>: the JSON certificate to verify
verification result, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Signals workspace: aggregate neutral on-chain signal feed.
window (query) · hours (query)
signals payload, tier (or {error:unavailable} if module absent)
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Our node's first-seen instant for a tx in the mempool (ephemeral, un-backfillable). Absence stated, never implied.
txid (path, required)
txid, found, firstSeenMs, firstSeenIso, heightAtSeen, feeRate, feeSats, vsize, bip125Replaceable, ancestorCount, confirmedTimeMs, deltaBeforeBlockMs, tier, caveat
Our node's own first-seen instant for this transaction in the mempool — an ephemeral, un-backfillable local observation, NOT an on-chain/consensus timestamp and not an assertion of origin, ownership, or identity.
Taint-tracing engine: descent taint fraction over on-chain value-flow edges under a chosen accounting model. Pro = direct/1-hop; Enterprise = full multi-hop indirect + model choice.
tok (path, required) — btx1... address OR txid:n outpoint · model (query) — haircut | fifo | poison · source (query) — restrict to a specific flagged btx1... source (optional) · hops (query) — Enterprise only; 1..tier.hops · limit (query) — per-source page size 1-500 · cursor (query) — per-source pagination offset
pillar, available, subject, outpoint, model, sourceFilter, scope, taintFraction, receivedBtx, receivedTaintedBtx, held{ heldTaintedBtx + shield-boundary bucket }, graphInboundBtx, sources[] (paginated), sourceCount, returned, limit, cursor, nextCursor, hasMore, hops, fanout, nodesWalked, truncated, flaggedLoaded, method, engine=taint-engine/1.0.0, source, tier, caveat
perSource breakdown paginated by cursor (limit 1-500); nextCursor + hasMore.
A taint fraction is an ARITHMETIC descent measure over observed on-chain value-flow edges under a stated accounting model - never an accusation, an identity claim, or a statement of ownership. A flag is an append-only, evidence-anchored observation. Results are bounded (hop/fanout/node caps) and conservative (under-counting) beyond the horizon.
Glass-box category exposure score (0-100) aggregating descent taint by category. Enterprise adds indirect multi-hop reach + the auditable method appendix.
addr (path, required) — btx1... address · model (query) — haircut | fifo | poison
pillar, available, subject, model, scope, exposureScore (0-100), band, glyph, byCategory{flagged,mining,shield,service,unknown}, directSources, miningProvenance, serviceTouch, hops, nodesWalked, truncated, methodAppendix, method, engine=taint-engine/1.0.0, source, tier, caveat
An exposure score is a glass-box, methodology-versioned aggregation of descent taint by category - a defensible, auditable OBSERVATION, not a risk verdict, a compliance determination, or advice. Categories and weights are disclosed in the attached method appendix.
Shield/unshield boundary lens: value crossing the shielded-pool boundary + shielded-pool net-flow over time.
window (query) — time window · hours (query) · direction (query) — shield | unshield (filter) · limit (query) — event page size · offset (query) — event pagination offset
summary{currentShieldedPoolBtx, totalShieldInBtx, totalUnshieldOutBtx, poolTrend, shieldEventCount, unshieldEventCount, firstBoundaryUtc, lastBoundaryUtc}, events[] (paginated){direction,amountBtx,height,tier,unshieldFrac,address}, netFlow[] (daily), pagination{limit,offset,total,hasMore}, methodologyVersion=shield-boundary/v1, method, source, available, window, tier, caveat
events paginated by limit/offset.
Boundary crossings are provable arithmetic over the transparent chain. UNSHIELD = outputs with no transparent minting ancestor (origin-opaque); SHIELD = value sent into the shielded pool by conservation (transparent in - out - fee). Neutral supply observations; nothing about who controls an address or why funds crossed.
PROBABILISTIC shielded-pool round-trip candidates for an unshield (amount/timing correlation). Never a definite link - confidence is capped and dampened by the anonymity set.
target (path, required) — txid or btx1... address · window (query) · hours (query) · limit (query) — max candidates
anonymitySetSize, candidates[]{amountMatchPct,timingGapHours,correlationScore}, confidence (capped, anonymity-dampened), methodologyVersion=shield-boundary/v1, window, tier, caveat
PROBABILISTIC round-trip correlation (shielded-pool amount/timing heuristic), NOT a definite link. Every candidate carries an explicit confidence and its basis (amount-match %, timing gap, anonymity-set size); confidence is capped and dampened by the anonymity set.
Investigation query engine - filter/sort/paginate outputs, transactions or addresses over a bounded predicate.
entity: output|transaction|address, filters: [] predicate list, sort: sort spec, page: cursor/page
entity, filters, sort, count, countCapped, truncated, asOfHeight, results[], cursor, facets, note, tier, caveat
Cursor-paginated; fail-open returns neutral empty result (never fabricated).
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Live count preview over the same bounded predicate (capped).
entity: output|transaction|address, filters: [] predicate list
entity, filters, count, countCapped, note, tier, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Facet breakdown for the same bounded predicate.
entity: output|transaction|address, filters: [] predicate list
entity, filters, facets, tier, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Anomaly event feed (id-cursor paginated). Neutral, un-backfillable observations.
window (query) · hours (query) · since (query) — poll forward (id>since) · before (query) — scroll back (id<before) · limit (query) — capped · minNotability (query) · type (query) — comma-separated detector types · rarity (query) — uncommon|rare|exceptional (>= rank)
count, cursor{newest,oldest}, window{key,sinceUtc,nowUtc}, collectorAvailable, events[], note, caveat, tier
id-based cursor (since ASC / before DESC), always newest-first.
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Catalog of anomaly detectors + rarity ladder.
detectors, rarityLadder[uncommon,rare,exceptional], note, collectorAvailable, caveat, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Rollup of anomalies by type and rarity over a window.
window (query) · hours (query)
total, byType, byRarity, window{key,sinceUtc,nowUtc}, collectorAvailable, note, caveat, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Single anomaly event detail by uid.
event_uid (path, required)
event fields + tier; {found:false,...} if absent (HTTP 200)
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Network Observatory - summary pillar.
window (query) · hours (query)
builder payload + tier; {available:false,...} neutral absence if module missing
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Network Observatory - propagation pillar.
window (query) · hours (query)
builder payload + tier; {available:false,...} neutral absence if module missing
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Network Observatory - feemarket pillar.
window (query) · hours (query)
builder payload + tier; {available:false,...} neutral absence if module missing
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Network Observatory - composition pillar.
window (query) · hours (query)
builder payload + tier; {available:false,...} neutral absence if module missing
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Per-pool orphan rate over a height band (apples-to-apples). A tag names the pool, not the operator.
window (query) — blocks (50-2000)
pillar, available, pools[]{pool,blocksMined,orphaned,totalSeen,orphanRatePct,provisional}, window{...}, maturity{...}, method, source, note, caveat, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Local first-sight arrival timing for recent blocks (single-vantage; un-backfillable).
limit (query) — 1-300
pillar, available, vantage, blocks[]{height,hash,lagMs,lagSecs,nTx,sizeBytes,weight,...}, stats{medianLagMs,p90LagMs,...}, method, source, note, caveat, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
This node's own peer set from getpeerinfo (single-vantage view, not a global topology).
pillar, available, vantage, snapshot{...}, peers[]{peerKey,network,pingMs,syncedBlocks,subver,...}, byNetwork[], bySubver[], history[], method, source, note, caveat, tier
peer history bounded to last 120 polls.
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Live first-seen mempool tx stream from our vantage (calm by design on a coinbase-only chain).
limit (query) — 1-200 · since (query) — ms; return newer than
pillar, available, vantage, quiet, mempoolDepth, txs[], stats{...}, lastSeenMs, serverNowMs, method, source, note, caveat, tier
limit 1-200; since filters node_time_ms>since, newest-first.
Our node's own first-seen instant for this transaction in the mempool — an ephemeral, un-backfillable local observation, NOT an on-chain/consensus timestamp and not an assertion of origin, ownership, or identity.
Origin-verified mint certificate for a target (address/tx). Tier-3 pool-ledger PROOF + exportable cert are Enterprise.
target (path, required) — address or txid
ladder{tier1..tier3}, exportable, tier, ... (Pro caps at Tier-2 node-confirmed)
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Settlement-safety / reorg-finality report. Pro = badge + depth distribution; Enterprise = full ancestor-orphan + conflict log.
target (path, required) · kind (query) — auto (default) | block | tx | address
target, kind, badge, confirmations, finalityConfidence, reorgDepthDistribution, (Enterprise: ancestor-orphan/conflict detail), tier, caveat
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Producer-concentration aggregate (top-N / Nakamoto / HHI).
window (query) · hours (query)
centralization metrics, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Dusting / address-poisoning scan + alert feed over a window.
window (query) · hours (query)
dusting scan payload, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Dusting / address-poisoning flag for a single address.
address (path, required)
dust flag payload, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Neutral wallet-behaviour profile (activity shape, consolidation, timing).
address (path, required)
profile payload, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Network-wide coin-age / dormancy aggregate.
window (query) · hours (query)
coin-age aggregate, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Coin-age / dormancy for a single address.
address (path, required) · window (query) · hours (query)
coin-age payload, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Propagation-health / eclipse-risk report from this vantage.
window (query) · hours (query)
propagation report, tier
Neutral on-chain facts only. No entity names, identity, ownership, holdings, or risk/taint claims are asserted or implied.
Attribution label(s) for an address (observed role: coinbase/pool tag or category watchlist). Not ownership.
addr (path, required)
pillar, available, address, labelled, poolLabels[] (<=50), watchlist[] (<=25), method, source, tier, caveat
Attribution, not ownership or identity. A label reflects an OBSERVED role - a self-declared coinbase/pool tag or a category watchlist entry - derived from on-chain facts. It is never a claim about who controls an address or about any named person.
Attribution label directory, keyset-paginated by category.
category (query) — pool|all|exchange|otc|bridge|mixer|custodian · limit (query) — 1-500 · cursor (query) — keyset rowid
pillar, available, category, rows[], returned, limit, cursor, nextCursor, hasMore, method, source, tier, caveat
Keyset cursor by rowid; nextCursor + hasMore for the next page.
Attribution, not ownership or identity. A label reflects an OBSERVED role - a self-declared coinbase/pool tag or a category watchlist entry - derived from on-chain facts. It is never a claim about who controls an address or about any named person.
Coin lineage (dominant-coinbase funding path) up/down from a txid or txid:vout.
tok (path, required) — txid or txid:vout · dir (query) — up (default) | down · depth (query) — 1..tier.hops
pillar, available, query, txid, n, dir, depthCap, fanoutCap, nodeCap, found, returned, rows[], method, source, tier, caveat
Bounded by tier hops/fanout/nodes.
Coin ancestry is the collector's precomputed dominant-coinbase resolution (largest-value funding path). Neutral on-chain provenance, NOT a statement of ownership, custody, or identity.
Directed value-flow spend graph (bounded BFS) out/in/both from an address.
addr (path, required) · dir (query) — out (default) | in | both · hops (query) — 1..min(6,tier.hops) · limit (query) — 1..min(500,tier.nodes)
pillar, available, address, dir, hops, limit, returned, hasMore, nodeCount, edges[], method, source, tier, caveat
Bounded BFS; hasMore flags truncation.
Directed value-flow edges are on-chain input->output attributions. Common-input and change heuristics can mis-attribute; an edge is a movement of value, NOT proof of common ownership or identity.
Mempool fee-floor time series + latest smart-fee estimate curve.
window (query) — 1h|6h|24h|today|7d|30d|all · limit (query) — 1-500
pillar, available, window, returned, limit, latest, floorSeries[], latestFeeEstimate[], method, source, tier, caveat
newest-first, LIMIT limit (1-500); no cursor.
Model/observational market data for informational use only - not financial advice, and not a consensus or exchange-audited price.
Coinbase first-spend feed: when mined coins were first moved, by pool.
limit (query) — 1-500 · since (query) — first_spend_time >= since · cursor (query) — pages older (first_spend_time < cursor) · pool (query) — filter by pool_identity
pillar, available, since, cursor, pool, returned, limit, nextCursor, hasMore, rows[], method, source, tier, caveat
Cursor by first_spend_time; nextCursor + hasMore.
Attribution, not ownership or identity. A label reflects an OBSERVED role - a self-declared coinbase/pool tag or a category watchlist entry - derived from on-chain facts. It is never a claim about who controls an address or about any named person.
Realized-price snapshots time series (model/observational).
window (query) — 7d|30d|90d|180d|1y|all · limit (query) — 1-500
pillar, available, window, returned, limit, latest, snapshots[], method, source, tier, caveat
newest-first, LIMIT limit; no cursor.
Model/observational market data for informational use only - not financial advice, and not a consensus or exchange-audited price.
Miner forward sell-pressure curve: projected miner-mined supply likely to first-move (leave coinbase) over a horizon, by pool, from each pool's empirical hold distribution applied to its current unspent-coinbase stock.
pool (query) — pool identity | all · horizon (query) — projection days, 1-180 · limit (query) — byPool page size · offset (query) — byPool pagination offset
currentOverhangBtx, byPool[] (paginated){pool, medianHoldDays, confidence}, projectedReleaseCurve[]{day,expectedBtx,cumulativeBtx}, recentSellThrough{last7d,last30d}, method, source, confidence, tier, caveat
byPool paginated by limit/offset.
PROJECTION FROM HISTORICAL BEHAVIOUR - NOT financial advice, NOT a price target, NOT a claim that any miner will or will not sell. The curve is expected miner-mined coinbase supply that first MOVES on-chain per day, from each pool's empirical hold-to-first-spend distribution over its current unspent-coinbase stock. 'First move' may be a sale, consolidation, transfer or treasury move - on-chain we cannot tell which.
On-chain cost-basis distribution (URPD) of the transparent unspent supply: BTX bucketed by the price at which it was last acquired, so support/resistance "walls" can be read from real cost basis. Priced sliver only — unpriced supply is reported, never imputed.
bands (query) — number of price bands · window (query) — realized-price window · limit (query) — urpd page size · offset (query) — urpd pagination offset
urpd[]{...}, majorWalls[]{...}, pricedSupplyBtx, unpricedSupplyBtx, unpricedBreakdownBtx, totalSupplyBtx, inProfitSupplyBtx, inLossSupplyBtx, inProfitPctOfPriced, pricedPctOfSupply, windowedOutBtx, spotPriceUsd, realizedPriceUsd, priceRangeUsd, bands, window, pagination, method, source, available, tier, caveat
urpd bands paginated by limit/offset.
A NEUTRAL on-chain observation of cost basis, NOT order-book depth (BTX has no live order book yet), NOT a price target, NOT advice. Only the priced sliver of supply is included (pricedPctOfSupply); unpriced supply is reported separately and never imputed.
Clip slippage estimator: given a clip size (BTX to buy or sell), estimate on-chain price impact by walking the URPD cost-basis walls outward from spot until the clip is filled. A model estimate from on-chain cost basis, not an order book.
clip (query) — clip size in BTX · side (query) — buy | sell · window (query) — realized-price window · bands (query) — URPD band resolution
clipBtx, side, slippagePct, avgSlippagePct, estFillPriceUsd, avgFillPriceUsd, spotPriceUsd, realizedPriceUsd, priceRangeUsd, supplyEatenBtx, sideAvailableBtx, sideAvailableLabel, bandsCrossed, wallsCrossed, exceedsPricedSupply, pricedSupplyBtx, pricedPctOfSupply, confidence, window, generatedUtc, method, source, available, tier, caveat
A MODEL ESTIMATE from on-chain cost basis — NOT order-book depth (BTX has no live order book yet), NOT a guaranteed fill, NOT advice. Bounded clip sizes; exceedsPricedSupply flags a clip larger than the priced sliver.
POST form of the clip slippage estimator (same model and response as GET /api/pro/slippage). Body: { "clip": <btx>, "side": "buy|sell", "window"?: "<win>", "bands"?: <n> } (clipBtx accepted as an alias for clip).
clip (body, required) — clip size in BTX · side (body) — buy | sell · window (body) · bands (body)
clipBtx, side, slippagePct, avgSlippagePct, estFillPriceUsd, avgFillPriceUsd, spotPriceUsd, realizedPriceUsd, priceRangeUsd, supplyEatenBtx, sideAvailableBtx, sideAvailableLabel, bandsCrossed, wallsCrossed, exceedsPricedSupply, pricedSupplyBtx, pricedPctOfSupply, confidence, window, generatedUtc, method, source, available, tier, caveat
A MODEL ESTIMATE from on-chain cost basis — NOT order-book depth, NOT a guaranteed fill, NOT advice.
Per-pool miner conviction: how long each pool holds its mined coinbase before it first moves on-chain (hold-to-first-spend). A neutral behavioural observation — long hold reads as conviction / accumulation, fast spend reads as distribution.
pool (query) — pool identity | all · window (query) — trend window (affects the trend only, not headline stats) · limit (query) — byPool page size · offset (query) — byPool pagination offset
byPool[] (paginated){...}, network{...}, scope, window, windowNote, pagination, method, source, available, tier, caveat
byPool paginated by limit/offset. The window selector re-windows the trend series only; headline conviction stats are computed over full history (see windowNote).
A NEUTRAL behavioural observation over the transparent chain — never a claim about intent, ownership, or identity. "First move" may be a sale, consolidation, transfer or treasury move.
Chain tip ticker (height, hash, difficulty, mempool).
ticker
Network glance summary.
glance
Chain + network + mempool health.
chain health
Emission economics at current height.
economics
Hashrate/difficulty/block-rate time series.
window (query) — 24h|7d|30d
{hashrate,difficulty,blockRate}
Fork / sibling-race census + reorg banner.
forks census
Inter-block gap distribution + drought indicator.
window (query) — 24h|7d|30d
blocktimes
Difficulty oscillation + next-block difficulty + hashrate overlay.
window (query)
difficulty
Producer concentration (top-N / Nakamoto / HHI).
window (query)
concentration
Emission & halving analytic.
supply
Latest N blocks.
n (query) — 1-50
[block rows]
Latest N confirmed txs.
n (query) — 1-25
[latest tx rows]
Paginated blocks.
page (query)
{blocks, page, lastPage}
Block detail by height or hash.
ident (path, required) — height or hash
block detail (404 if not found)
Transaction detail (prevouts resolved).
txid (path, required)
tx detail (404 if not found)
Address page (aggregate + paginated rows).
addr (path, required) · page (query)
address page
Block-production attribution by coinbase tag.
window (query) — recent N blocks · from (query) · to (query)
{total, miners[]}
Blocks produced by one miner tag.
tag (path, required) · n (query) — 1-200 · from (query) · to (query)
miner blocks
Bounded fund tracer (forward/back over the spend index).
txid (path, required) · dir (query) — back|forward · hops (query) — 1-10
trace graph (404 if not found)
In/out flow edges for an address.
addr (path, required)
flows (bounded to 50 edges)
Neutral on-chain wallet signals (bounded, cached).
addr (path, required) · tx (query) — context txid
signals
Mempool summary + recent entries.
mempool
Chain tips (getchaintips).
[tips]
Indexed orphan blocks.
[orphans]
Reorg events + miner note.
{events, minerNote}
Search by height/hash/txid/address.
q (query, required) — query string
{type, target, ...}
API/index health (ops).
{ok, indexed, node_blocks}
Latest banked BTX spot price (model).
latest price row
Quote a BTX amount at current or a given time.
btx (query, required) · at (query) — unix ts or omit
value quote
Value of a tx's output at tx-time and now.
txid (path, required)
{txid, amount_btx, at_tx, current}
Balance/received value quote for an address.
addr (path, required)
{address, balance_btx, received_btx, balance_value, received_value}
On-chain supply map (coin-age & balance cohorts, net-flow, HODL waves).
window (query)
supply-demand map
Ranked addresses in one balance cohort + mining-origin mix.
tier (path, required) — balance cohort tier · limit (query) — 1-500
cohort drill-down
| status | meaning |
|---|---|
| 401 | missing / unknown / revoked / expired token |
| 403 | tier lacks the requested lens or export (or admin token required) |
| 429 | rate limit exceeded — see Retry-After |
| 400 | malformed request / bad params |
| 404 | not found (unknown tx / block / report id) |
| 503 | an optional module / collector DB is unavailable — served as neutral absence where possible |
Collector-backed endpoints (observatory, mempool stream, data-banks) fail OPEN: when a
proprietary collector DB is not readable they return available:false
with empty rows and a note — an absence is stated, never a fabricated value.