Skip to main content
API referenceSubnets

Subnets By Network

Last updated

GET
/api/v1/{network}/subnets

Network-scoped form of /api/v1/subnets — prefix the route with a network to choose which chain answers it. mainnet/finney return the same data as the unprefixed path; testnet/test return testnet data.

Path Parameters

network*string

Network to address. mainnet and finney are the same network, as are testnet and test.

Value in

  • "finney"
  • "mainnet"
  • "test"
  • "testnet"

Query Parameters

netuid?integer

Subnet id (netuid). 0 is the root subnet -- a stake-allocation construct rather than a running subnet. It IS present in the registry collections, but it is excluded from application-subnet counts, and stake on it is denominated in TAO rather than in a subnet alpha token, so its economics are not directly comparable to a running subnet's.

Range0 <= value <= 65535
netuids?string

Comma-separated subnet ids to restrict the result to, e.g. 1,7,64. At most 128 ids, each 0-65535. Unknown ids match nothing rather than erroring.

Match^\d{1,5}(,\d{1,5}){0,127}$
Lengthlength <= 767
coverage_level?string

Value in

  • "native-only"
  • "manifested"
  • "probed"
curation_level?string

Value in

  • "native"
  • "candidate-discovered"
  • "community-seeded"
  • "machine-verified"
  • "maintainer-reviewed"
  • "adapter-backed"
domain?string

Value in

  • "agents"
  • "compute"
  • "data"
  • "finance"
  • "inference"
  • "media"
  • "prediction"
  • "privacy"
  • "robotics"
  • "science"
  • "search"
  • "security"
  • "storage"
  • "training"
status?string

Value in

  • "active"
  • "inactive"
subnet_type?string

Value in

  • "root"
  • "application"
q?string

Free-text search query, matched case-insensitively against the collection's indexed text fields. Whitespace-separated terms narrow the result (AND), and an empty or whitespace-only value is treated as no filter rather than as a search matching nothing.

Lengthlength <= 200
min_block?number

Inclusive lower bound: only rows at or above this value are returned.

max_block?number

Inclusive upper bound: only rows at or below this value are returned.

min_candidate_count?number

Inclusive lower bound: only rows at or above this value are returned.

max_candidate_count?number

Inclusive upper bound: only rows at or below this value are returned.

min_integration_readiness?number

Inclusive lower bound: only rows at or above this value are returned.

max_integration_readiness?number

Inclusive upper bound: only rows at or below this value are returned.

min_mechanism_count?number

Inclusive lower bound: only rows at or above this value are returned.

max_mechanism_count?number

Inclusive upper bound: only rows at or below this value are returned.

min_participant_count?number

Inclusive lower bound: only rows at or above this value are returned.

max_participant_count?number

Inclusive upper bound: only rows at or below this value are returned.

min_probed_surface_count?number

Inclusive lower bound: only rows at or above this value are returned.

max_probed_surface_count?number

Inclusive upper bound: only rows at or below this value are returned.

min_surface_count?number

Inclusive lower bound: only rows at or above this value are returned.

max_surface_count?number

Inclusive upper bound: only rows at or below this value are returned.

min_tempo?number

Inclusive lower bound: only rows at or above this value are returned.

max_tempo?number

Inclusive upper bound: only rows at or below this value are returned.

fields?string

Comma-separated allow-list projecting the response's primary row collection down to just these fields. A response carrying several collections projects only the primary one -- the others keep their full shape. An unrecognised field is a 400 invalid_query naming both the field and the collection it was resolved against, rather than being ignored.

Match^[\s,]*[A-Za-z_][A-Za-z0-9_]*(\s*,[\s,]*[A-Za-z_][A-Za-z0-9_]*)*[\s,]*$
limit?integer

Maximum number of rows to return in one page (at most 1000). 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, every matching row is returned.

Range1 <= value <= 1000
cursor?integer

Row offset to resume from — the numeric position of the first row to return, not an opaque token. Rows inserted since the previous page shift it, so prefer the keyset cursor where a tool offers one.

Range0 <= value
sort?string

Field to sort by — the bare field name only (e.g. sort=total_stake_alpha). Pair with the separate order parameter to choose direction; a combined field:desc token is NOT supported.

Value in

  • "block"
  • "candidate_count"
  • "coverage_level"
  • "curation_level"
  • "integration_readiness"
  • "mechanism_count"
  • "name"
  • "netuid"
  • "participant_count"
  • "probed_surface_count"
  • "status"
  • "subnet_type"
  • "surface_count"
  • "tempo"
order?string

Sort direction for sort: asc or desc (default desc). This is a separate parameter from sort — e.g. ?sort=emission_share&order=desc.

Value in

  • "asc"
  • "desc"
format?string

Response format override. Use csv to download the transformed list 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/finney/subnets"
{  "data": {    "captured_at": "2026-06-01T00:00:00.000Z",    "contract_version": "2026-06-29.1",    "generated_at": "2026-06-01T00:00:00.000Z",    "native_snapshot_captured_at": "2026-06-01T00:00:00.000Z",    "network": "finney",    "notes": "Example description.",    "schema_version": 1,    "source": {      "identity_storage": "example",      "kind": "example",      "method": "GET",      "package": "example",      "rpc_family": "example",      "version": "2026-06-29.1"    },    "subnets": [      {        "coverage_level": "native-only",        "curation_level": "native",        "name": "Example Subnet",        "netuid": 7,        "slug": "example-subnet",        "status": "active",        "subnet_type": "root",        "surface_count": 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}