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
Column to rank the result by; pair with order for direction. Options are per-tool; see this parameter's enum. Defaults to earning_floor_cost_tao.
"earning_floor_cost_tao"Value in
- "earning_floor_cost_tao"
- "permit_floor_cost_tao"
- "permit_to_earning_multiple"
- "tao_inflow_per_day"
- "validator_headroom"
Maximum number of rows to return in one page (at most 512). 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 50.
1 <= value <= 51250Number 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 <= 512Filter to subnets whose emission gate is currently open (true) or closed (false).
Filter to subnets where the alpha injection cap is currently binding (true) or not (false).
Response 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", "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}