Skip to main content

Subnets

GET /api/v1/subnets and its structure, lifecycle, market, decentralization, and curation sub-resources — everything about a subnet except who's currently on its metagraph. No API key.

Last updated

A Bittensor subnet is an independent incentive mechanism — its own miners, validators, and reward rules — identified on-chain by a netuid. Since the February 2025 dynamic-TAO upgrade, every subnet runs a constant-product AMM between TAO and its own alpha token: price moves with every stake/unstake, and a subnet's share of new TAO issuance is set by that market rather than a root-validator vote.

This page covers what a subnet is and how it's behaved — structure, activity, market data, decentralization metrics, curated metadata. For who's registered on it right now (the live neuron table), see Subnet metagraph & validators.

GET https://api.metagraph.sh/api/v1/subnets/{netuid}

Structure & configuration

PathPurpose
GET /api/v1/subnetsList/filter/sort every subnet.
GET /api/v1/subnets/moversCross-subnet stake/emission/validator/neuron momentum leaderboard.
GET /api/v1/subnets/{netuid}Full subnet detail.
GET /api/v1/subnets/{netuid}/overviewComposed profile + health + curation + gaps summary.
GET /api/v1/subnets/{netuid}/hyperparametersCurrent consensus/economic/governance knobs.
GET /api/v1/subnets/{netuid}/hyperparameters/historyAppend-only hyperparameter-change timeline.
GET /api/v1/subnets/{netuid}/identity-historyAppend-only on-chain identity change timeline.

/subnets takes 25+ filter params — domain, subnet_type, curation_level, coverage_level, q (free text), fields (sparse fieldset), and min_*/max_* range filters on tempo/participant count/surface count and similar — plus cursor/limit (≤1000)/sort/order/format=csv.

A subnet's hyperparameters are its owner-tunable knobs: tempo (blocks per epoch — default 360, sets weight-update cadence), immunity_period (blocks a freshly-registered neuron is shielded from deregistration), kappa (softmax steepness turning validator weights into incentive), commit_reveal_enabled (encrypts weights for a window to stop weight-copying), and roughly two dozen more.

curl -s 'https://api.metagraph.sh/api/v1/subnets?domain=inference&sort=participant_count&order=desc'

Lifecycle & activity

Raw chain-event churn, mostly windowed ?window=7d|30d|90d:

PathPurpose
GET /api/v1/subnets/{netuid}/registrationsNeuron registration activity.
GET /api/v1/subnets/{netuid}/deregistrationsNeuron deregistration activity.
GET /api/v1/subnets/{netuid}/axon-removalsAxon teardown announcements.
GET /api/v1/subnets/{netuid}/servingAxon-serving announcements.
GET /api/v1/subnets/{netuid}/prometheusTelemetry-endpoint announcements.
GET /api/v1/subnets/{netuid}/recycledLive cumulative TAO recycled for registration on this subnet.
GET /api/v1/subnets/{netuid}/event-summaryWindowed activity summary.
GET /api/v1/subnets/{netuid}/eventsRaw curated event feed, CSV-exportable.
GET /api/v1/subnets/{netuid}/historyPer-day neuron/validator/stake/emission rollup — ?window=7d|30d|90d|1y|all.
GET /api/v1/subnets/{netuid}/turnoverValidator-set churn + stability score between window snapshots.

Registration on a subnet costs TAO that's recycled, not burned — returned to the pool that funds future block emissions rather than destroyed. The price decays over time and rises with each successful registration.

Market & economics-adjacent

PathPurpose
GET /api/v1/subnets/{netuid}/ohlcAlpha-price OHLCV candles. ?interval=1h|1d (default 1h), ?days=1-365 (default 90).
GET /api/v1/subnets/{netuid}/volumeRolling 24h buy/sell alpha volume + sentiment.
GET /api/v1/subnets/{netuid}/stake-flowNet stake in/out.
GET /api/v1/subnets/{netuid}/stake-movesRe-delegation churn.
GET /api/v1/subnets/{netuid}/stake-transfersCross-account stake-ownership transfers.
GET /api/v1/subnets/{netuid}/stake-quoteRead-only AMM slippage quote for a hypothetical stake/unstake.
GET /api/v1/subnets/{netuid}/trajectoryWeekly structural completeness/surface-count trend.
GET /api/v1/subnets/{netuid}/yieldPer-UID emission-yield ranking.
GET /api/v1/subnets/{netuid}/yield/historyDaily yield trend.

OHLC candles are reconstructed from the same stake-add/-remove event stream, not a separate price oracle — price per trade is amount_tao / alpha_amount. Root (netuid 0) has no AMM and is excluded.

curl -s 'https://api.metagraph.sh/api/v1/subnets/64/ohlc?interval=1d&days=30'

Decentralization & consensus-weight metrics

PathPurpose
GET /api/v1/subnets/{netuid}/concentrationGini, HHI, Nakamoto coefficient, entropy across three lenses (per-UID, per-entity, validator-only).
GET /api/v1/subnets/{netuid}/concentration/historyDaily trend of the above.
GET /api/v1/subnets/{netuid}/performanceReward-concentration + trust/consensus score spread.
GET /api/v1/subnets/{netuid}/performance/historyDaily trend of the above.
GET /api/v1/subnets/{netuid}/weightsWeight-setting activity aggregate for this subnet.
GET /api/v1/subnets/{netuid}/weights/settersPer-validator weight-setting leaderboard for this subnet.

Nakamoto coefficient and entropy, not just top-N%

Concentration here isn't just a top-holder percentage — it includes the Nakamoto coefficient (the minimum number of colluding parties needed to control the subnet) and Shannon entropy alongside Gini and HHI, the same toolkit used in published Bittensor decentralization research. Independent analysis of live subnets has found wide variance — some controllable by coalitions as small as 1-2%.

Curated metadata

Registry-native metadata, not chain-derived:

PathPurpose
GET /api/v1/subnets/{netuid}/profilePublic-safe curated subnet profile.
GET /api/v1/subnets/{netuid}/surfacesCurated, promoted public surfaces (docs, repo, API, and similar).
GET /api/v1/subnets/{netuid}/candidatesUnpromoted candidate surfaces awaiting review.
const res = await fetch("https://api.metagraph.sh/api/v1/subnets/64/concentration");
const { data } = await res.json();

No route in this group has a dedicated per-IP rate limiter. limit caps at 1000 for most list/history routes (100 for movers, 50 for event-summary's recent events), days caps at 365 for OHLC, and recycled carries its own 600s cache.