Validator Economics Ranking
Last updated
Fetch every subnet ranked by what it costs to become an EARNING validator there. One row per subnet with the same fields as /api/v1/subnets/{netuid}/validator-economics: the permit floor and the earning floor (which differ by a median of ~7x — a permit is not income), their TAO cost against live pool reserves, validator set composition as three separate counts, open slots, the take distribution, and the emission-gate state. Sort by earning_floor_cost_tao (default, cheapest first), permit_floor_cost_tao, permit_to_earning_multiple, tao_inflow_per_day or validator_headroom; filter on emission_gate_open or cap_binding, where omitting a filter means BOTH rather than false. limit caps the page (default 50, max 512). Every subnet the ranking drops is returned in excluded with a reason. The registration burn is excluded from the ranking — it is a live per-subnet read and immaterial to the order; the per-subnet route reports the true entry cost.
Query Parameters
Maximum number of rows to return in one page (at most 512). Routes differ in how they handle a larger value: some reject it with 400 invalid_query, others clamp to the maximum and answer 200. Read the limit echoed in the response body rather than assuming the page is the size you asked for.
1 <= value <= 512Number of rows to skip before the page begins. Correct only in combination with the page size the response actually returned -- prefer cursor for anything beyond the first few pages, since a row inserted mid-scan shifts every later offset.
0 <= value <= 512Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/validators/economics"{ "data": { "excluded": [ { "netuid": 7, "reason": "example" } ], "field_sources": { "example": { "kind": "measured", "storage": "example" } }, "order": "asc", "root_tao_to_clear_threshold": 0.5, "rows": [ { "cap_binding": false, "composition": { "active": 1, "earning": 1, "permitted": 1 }, "degraded_reason": "A", "earning_entry_cost_tao": 0.5, "earning_floor_cost_tao": 0.5, "earning_floor_units": 0.5, "emission_gate_open": false, "field_sources": {}, "max_validators": 1, "min_childkey_take_ratio": 0.9966, "model_agreement": { "agreement": 0.5, "matched": 1, "observed_permits": 1, "over_predicted": 1, "publishable": false, "under_predicted": 1 }, "netuid": 7, "permit_entry_cost_tao": 0.5, "permit_floor_cost_tao": 0.5, "permit_floor_units": 0.5, "permit_to_earning_multiple": 0.5, "registration_cost_tao": 0.5, "root_tao_to_clear_threshold": 0.5, "schema_version": 1, "stake_threshold_units": 0.5, "takes": { "distribution": [ 0.5 ], "max": 0.5, "median": 0.5, "median_earning": 0.5, "min": 0.5, "sample_size": 1 }, "tao_inflow_per_day": 0.5, "tao_weight": 0.5, "uids_above_threshold": 1, "validator_slots_open": 1 } ], "schema_version": 1, "sort": "example", "stake_threshold_units": 0.5, "tao_weight": 0.5, "total": 1 }, "meta": { "artifact_path": "example", "cache": "short", "contract_version": "2026-06-29.1", "generated_at": "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}