Profiles
Last updated
List public-safe subnet profiles and completeness scores.
Query Parameters
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.
0 <= value <= 65535Value in
- "root"
- "application"
Value in
- "native"
- "candidate-discovered"
- "community-seeded"
- "machine-verified"
- "maintainer-reviewed"
- "adapter-backed"
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
- "low"
- "medium"
- "high"
Value in
- "directory-only"
- "identity-partial"
- "identity-complete"
- "operational"
- "adapter-backed"
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.
length <= 200Comma-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
- "candidate_count"
- "completeness_score"
- "curation_level"
- "interface_count"
- "missing_critical_count"
- "name"
- "netuid"
- "operational_interface_count"
- "profile_level"
- "review_state"
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 format override. Use csv to download the transformed list as text/csv; json keeps the default response envelope.
"json"Value in
- "json"
- "csv"
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/profiles"{ "data": { "contract_version": "2026-06-29.1", "generated_at": "2026-06-01T00:00:00.000Z", "notes": "Example description.", "profiles": [ { "candidate_count": 1, "categories": [ "example" ], "completeness": { "confidence": "low", "gap_reasons": [ "example" ], "identity_level": "none", "identity_surface_count": 1, "missing_critical_count": 1, "missing_identity": [ "archive" ], "missing_operational": [ "archive" ], "missing_required": [ "archive" ], "profile_level": "directory-only", "score": 100 }, "completeness_score": 100, "confidence": "low", "curation_level": "native", "derived_categories": [ "example" ], "endpoint_count": 1, "gap_reasons": [ "example" ], "identity_evidence": { "candidate_identity_count": 1, "curated_identity_count": 1, "curated_identity_kinds": [ "archive" ], "live_candidate_identity_kinds": [ "archive" ], "native_contact_present": false, "native_description_present": false, "native_identity_count": 1, "native_identity_kinds": [ "archive" ], "needs_promotion_kinds": [ "archive" ], "stale_candidate_identity_kinds": [ "archive" ], "unverified_candidate_identity_kinds": [ "archive" ] }, "identity_level": "none", "identity_surface_count": 1, "missing_critical_count": 1, "missing_identity": [ "archive" ], "missing_operational": [ "archive" ], "missing_required": [ "archive" ], "monitored_endpoint_count": 1, "name": "Example Subnet", "native_identity": { "additional": "example", "contact_present": false, "description": "Example description.", "discord": "example", "discord_url": "https://api.metagraph.sh/example", "github_url": "https://api.metagraph.sh/example", "logo_url": "https://api.metagraph.sh/example", "source": "live-cron-prober", "subnet_name": "Example Subnet", "website_url": "https://api.metagraph.sh/example" }, "netuid": 7, "operational_interface_kinds": [ "archive" ], "primary_app_surface": { "id": "example", "kind": "archive", "name": "Example Subnet", "provider": "example-provider", "url": "https://api.metagraph.sh/example" }, "primary_links": { "dashboard_url": "https://api.metagraph.sh/example", "docs_url": "https://api.metagraph.sh/example", "source_repo": "https://api.metagraph.sh/example", "website_url": "https://api.metagraph.sh/example" }, "profile_level": "directory-only", "project_name": "example", "provenance": { "curation_level": "native", "identity_source": "live-cron-prober", "interface_source_count": 1, "review_state": "unreviewed", "reviewed_at": "2026-06-01T00:00:00.000Z", "source_urls": [ "https://api.metagraph.sh/example" ] }, "review_state": "unreviewed", "slug": "example-subnet", "status": "active", "subnet_type": "root", "suggested_submission_kinds": [ "archive" ], "supported_interface_kinds": [ "archive" ], "surface_count": 1, "team": "example" } ], "schema_version": 1, "summary": { "average_completeness_score": 100, "by_confidence": {}, "by_identity_level": {}, "by_profile_level": {}, "identity_promotion_candidate_count": 1, "native_identity_count": 1, "native_identity_unpromoted_count": 1, "profile_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}