Skip to main content
API referenceChain

Chain Deregistrations

Last updated

GET
/api/v1/chain/deregistrations

Fetch network-wide neuron-deregistration activity over a 7d or 30d window across the subnets with observed deregistration activity (subnets with no NeuronDeregistered events are absent): a per-subnet leaderboard (NeuronDeregistered event count, distinct deregistered hotkeys, and average deregistrations per hotkey) ranked by total deregistrations, a network rollup with the true distinct hotkey count (a hotkey deregistered on several subnets counts once) and total deregistrations, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-deregistration intensity. limit caps the leaderboard (default 20, max 100). Raw deregistration/eviction activity — the exit-side companion to GET /api/v1/chain/registrations and the account_events companion to the neuron_daily validator-set churn in GET /api/v1/chain/turnover. DERIVED from UID reuse in the NeuronRegistered stream by a scheduled projection (NeuronDeregistered has never been emitted by the runtime); the payload's derivation block states how many window registrations had no observable previous holder, and degraded marks an answer nothing derived. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).

Query Parameters

window?string

Trailing lookback window the response is computed over, ending at the most recent data point rather than at today. Accepts 7d, 30d. A longer window is not a superset of a shorter one -- rankings and rates are recomputed over the whole window, not summed.

Default"7d"

Value in

  • "7d"
  • "30d"
limit?integer

Maximum number of rows to return in one page (at most 100). A larger value, or a non-positive one, is rejected with 400 invalid_query -- so a short page means the result set is exhausted, not that the server quietly capped you (#9916). Omitted, the server applies 20.

Range1 <= value <= 100
Default20
format?string

Response format override. Use csv to download the route rows as text/csv; json keeps the default response envelope.

Default"json"

Value in

  • "json"
  • "csv"

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/chain/deregistrations"
{  "data": {    "degraded": {      "detail": "example",      "reason": "example"    },    "derivation": {      "is_lower_bound": false,      "lookback_days": 1,      "method": "GET",      "unattributed_registrations": 1,      "window_registrations": 1    },    "intensity_distribution": {      "count": 2,      "max": 15,      "mean": 12.5,      "min": 10,      "p25": 10,      "p50": 10,      "p75": 15,      "p90": 15    },    "network": {      "deregistrations": 70,      "deregistrations_per_hotkey": 14,      "distinct_deregistered_hotkeys": 5    },    "observed_at": "2026-06-01T00:00:00.000Z",    "schema_version": 1,    "subnet_count": 2,    "subnets": [      {        "deregistrations": 40,        "deregistrations_per_hotkey": 10,        "distinct_deregistered_hotkeys": 4,        "netuid": 1      },      {        "deregistrations": 30,        "deregistrations_per_hotkey": 15,        "distinct_deregistered_hotkeys": 2,        "netuid": 2      }    ],    "window": "7d"  },  "meta": {    "artifact_path": "example",    "cache": "short",    "contract_version": "2026-06-29.1",    "generated_at": "2026-06-01T00:00:00.000Z",    "observed_through": "2026-06-01T00:00:00.000Z",    "pagination": {      "collection": "example",      "cursor": 1,      "limit": 1,      "next_cursor": 1,      "order": "asc",      "returned": 1,      "sort": "example",      "total": 1    },    "published_at": "2026-06-01T00:00:00.000Z",    "source": "live-cron-prober",    "stale_contract": {      "built_under": "example",      "live": "example"    }  },  "ok": true,  "schema_version": 1}