Subnet Health
Last updated
Fetch health detail for one subnet.
Path Parameters
The subnet's numeric id on the Bittensor network, as used by the chain itself.
0 <= valueQuery Parameters
Value in
- "archive"
- "dashboard"
- "data-artifact"
- "docs"
- "example"
- "openapi"
- "repo-registry"
- "sdk"
- "source-repo"
- "sse"
- "subnet-api"
- "subtensor-rpc"
- "subtensor-wss"
- "website"
Restrict the result to rows whose field equals this value. Matched exactly (case-insensitively), not searched for as a substring — an unmatched value yields an empty result rather than an error.
length <= 100Value in
- "ok"
- "degraded"
- "failed"
- "unknown"
Value in
- "auth-required"
- "content-mismatch"
- "dead"
- "live"
- "rate-limited"
- "redirected"
- "timeout"
- "transient"
- "unsupported"
- "unsafe"
- "wrong-chain"
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.
^[\s,]*[A-Za-z_][A-Za-z0-9_]*(\s*,[\s,]*[A-Za-z_][A-Za-z0-9_]*)*[\s,]*$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.
1 <= value <= 1000Row 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.
0 <= valueField 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
- "classification"
- "kind"
- "last_checked"
- "last_ok"
- "latency_ms"
- "netuid"
- "provider"
- "status"
- "status_code"
- "surface_id"
- "verified_at"
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"
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/subnets/1/health"{ "data": { "contract_version": "2026-06-29.1", "generated_at": "2026-06-01T00:00:00.000Z", "health_source": "probe-derived", "name": "Example Subnet", "netuid": 7, "operational_observed_at": "2026-06-01T00:00:00.000Z", "schema_version": 1, "slug": "example-subnet", "summary": { "avg_latency_ms": 120, "degraded_count": 1, "failed_count": 1, "last_checked": "2026-06-01T00:00:00.000Z", "last_ok": "2026-06-01T00:00:00.000Z", "latency_sample_count": 120, "name": "Example Subnet", "netuid": 7, "ok_count": 1, "slug": "example-subnet", "status": "ok", "surface_count": 1, "unknown_count": 1 }, "surfaces": [ { "kind": "archive", "netuid": 7, "observed_by": "live-cron-prober", "provider": "example-provider", "status": "ok", "surface_id": "example", "url": "https://api.metagraph.sh/example" } ] }, "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}