---
title: "GET /api/v1/profiles"
method: GET
path: "/api/v1/profiles"
tags: ["profiles", "subnets"]
---

# GET /api/v1/profiles

`GET /api/v1/profiles`

## Request

- Base URL: `https://api.metagraph.sh`
- URL: `https://api.metagraph.sh/api/v1/profiles`
- Auth: none required

List public-safe subnet profiles and completeness scores.

## Query parameters

- `netuid` integer
- `subnet_type` 'root' | 'application'
- `curation_level` 'native' | 'candidate-discovered' | 'community-seeded' | 'machine-verified' | 'maintainer-reviewed' | 'adapter-backed'
- `review_state` string
- `confidence` 'low' | 'medium' | 'high'
- `profile_level` 'directory-only' | 'identity-partial' | 'identity-complete' | 'operational' | 'adapter-backed'
- `q` string
- `fields` string
- `limit` integer
- `cursor` integer
- `page_snapshot` string
- `sort` 'candidate_count' | 'completeness_score' | 'curation_level' | 'interface_count' | 'missing_critical_count' | 'name' | 'netuid' | 'operational_interface_count' | 'profile_level' | 'review_state'
- `order` 'asc' | 'desc'
- `format` 'json' | 'csv'

## Response `200`

Canonical artifact wrapped in the Metagraphed API envelope, or the transformed list as text/csv when CSV is requested.

- object
  - `data` object, required
    - `contract_version` string
    - `generated_at` string, required
    - `notes` union: Public-safe notes; may be a string or a string list depending on the adapter.
      - string
      - string[]
    - `profiles` SubnetProfile[], required
      - `candidate_count` integer, required
      - `categories` string[], required
      - `completeness` object, required
        - `confidence` 'low' | 'medium' | 'high', required
        - `gap_reasons` string[], required
        - `identity_level` 'none' | 'directory' | 'partial' | 'complete', required
        - `identity_surface_count` integer, required
        - `missing_critical_count` integer, required
        - `missing_identity` SurfaceKind[], required
        - `missing_operational` SurfaceKind[], required
        - `missing_required` SurfaceKind[], required
        - `profile_level` 'directory-only' | 'identity-partial' | 'identity-complete' | 'operational' | 'adapter-backed', required
        - `score` integer, required
      - `completeness_score` integer, required
      - `confidence` 'low' | 'medium' | 'high', required
      - `curation_level` 'native' | 'candidate-discovered' | 'community-seeded' | 'machine-verified' | 'maintainer-reviewed' | 'adapter-backed', required
      - `derived_categories` string[], required
      - `derived_description` string, nullable
      - `endpoint_count` integer, required
      - `gap_reasons` string[], required
      - `github_commits_weekly` object[], nullable
        - `count` integer, required
        - `week` string, date-time, required
      - `github_languages` object, nullable
      - `github_last_push_at` string, date-time, nullable
      - `github_releases` object[], nullable
        - `name` string, nullable, required
        - `prerelease` boolean, required
        - `published_at` string, date-time, required
        - `tag` string, required
        - `url` string, required
      - `github_stars` integer, nullable
      - `github_unreachable` boolean
      - `identity_evidence` SubnetProfileIdentityEvidence, required
        - `candidate_identity_count` integer, required
        - `curated_identity_count` integer, required
        - `curated_identity_kinds` SurfaceKind[], required
        - `live_candidate_identity_kinds` SurfaceKind[], required
        - `native_contact_present` boolean, required
        - `native_description_present` boolean, required
        - `native_identity_count` integer, required
        - `native_identity_kinds` SurfaceKind[], required
        - `needs_promotion_kinds` SurfaceKind[], required
        - `stale_candidate_identity_kinds` SurfaceKind[], required
        - `unverified_candidate_identity_kinds` SurfaceKind[], required
      - `identity_level` 'none' | 'directory' | 'partial' | 'complete', required
      - `identity_surface_count` integer, required
      - `injection_scrubbed` boolean
      - `integration_readiness` integer
      - `interface_count` integer
      - `lineage` object, nullable
        - `also_on` object[]
          - `matched_by` 'github_repo' | 'chain_name'
          - `name` string, nullable
          - `netuid` integer
          - `network` string
        - `graduated_from_testnet` boolean
      - `missing_critical_count` integer, required
      - `missing_identity` SurfaceKind[], required
      - `missing_operational` SurfaceKind[], required
      - `missing_required` SurfaceKind[], required
      - `monitored_endpoint_count` integer, required
      - `name` string, required
      - `native_identity` object, nullable, required
        - `additional` string, nullable, required
        - `contact_present` boolean, required
        - `description` string, nullable, required
        - `discord` string, nullable, required
        - `discord_url` string, uri, nullable, required
        - `github_url` string, uri, nullable, required
        - `logo_url` string, uri, nullable, required
        - `source` string, required
        - `subnet_name` string, nullable, required
        - `website_url` string, uri, nullable, required
      - `native_name` string, nullable
      - `native_name_quality` 'chain' | 'placeholder' | 'empty'
      - `netuid` integer, required
      - `operational_interface_count` integer
      - `operational_interface_kinds` SurfaceKind[], required
      - `primary_app_surface` object, nullable, required
        - `id` string, required
        - `key` string
        - `kind` 'archive' | 'dashboard' | 'data-artifact' | 'docs' | 'example' | 'openapi' | 'repo-registry' | 'sdk' | 'source-repo' | 'sse' | 'subnet-api' | 'subtensor-rpc' | 'subtensor-wss' | 'website', required
        - `name` string, required
        - `provider` string, required
        - `url` string, uri, required
      - `primary_links` object, required
        - `dashboard_url` string, uri, nullable, required
        - `docs_url` string, uri, nullable, required
        - `source_repo` string, uri, nullable, required
        - `website_url` string, uri, nullable, required
      - `profile_level` 'directory-only' | 'identity-partial' | 'identity-complete' | 'operational' | 'adapter-backed', required
      - `project_name` string, required
      - `provenance` object, required
        - `curation_level` 'native' | 'candidate-discovered' | 'community-seeded' | 'machine-verified' | 'maintainer-reviewed' | 'adapter-backed', required
        - `identity_source` string, required
        - `interface_source_count` integer, required
        - `review_state` 'unreviewed' | 'machine-generated' | 'maintainer-reviewed' | 'needs-review' | 'stale', required
        - `reviewed_at` string, nullable, required
        - `source_urls` string[], required
      - `readiness` IntegrationReadiness
        - `components` object, required
          - `active_lifecycle` boolean
          - `auth_clarity` boolean
          - `callable_now` boolean
          - `documented` boolean
          - `has_callable_api` boolean
          - `has_candidate_api` boolean
          - `has_public_docs` boolean
          - `has_source_repo` boolean
          - `profile_complete` boolean
        - `readiness_tier` 'buildable' | 'emerging' | 'identity-only' | 'dormant', required
        - `readiness_verified` boolean
        - `readiness_version` integer, required
        - `score` integer, required
      - `review_state` 'unreviewed' | 'machine-generated' | 'maintainer-reviewed' | 'needs-review' | 'stale', required
      - `slug` string, required
      - `status` 'active' | 'inactive' | 'unknown', required
      - `subnet_type` 'root' | 'application', required
      - `suggested_submission_kinds` SurfaceKind[], required
      - `supported_interface_kinds` SurfaceKind[], required
      - `surface_count` integer, required
      - `symbol` string, nullable
      - `team` string, nullable, required
    - `schema_version` 1, required
    - `summary` object, required
      - `average_completeness_score` integer, required
      - `by_confidence` object, required
      - `by_identity_level` object, required
      - `by_profile_level` object, required
      - `identity_promotion_candidate_count` integer, required
      - `native_identity_count` integer, required
      - `native_identity_unpromoted_count` integer, required
      - `profile_count` integer, required
  - `meta` ResponseMeta, required
    - `artifact_path` string
    - `cache` 'short' | 'standard' | 'static'
    - `catalog_paging` object
      - `reason` 'catalog_changed' | 'catalog_budget_exceeded' | 'catalog_unavailable', required
    - `contract_version` string, required
    - `generated_at` string, nullable: Deterministic build content marker (epoch by default); not a wall clock. Use published_at for human-facing freshness.
    - `observed_through` string, date-time, nullable: How far the tier that answered this request has observed at all. A payload reporting no activity at or before this time is a measured absence; one whose subject is newer is outside coverage, not empty. Null when the horizon is unreadable.
    - `pagination` PaginationMeta
      - `collection` string, required
      - `cursor` integer, required
      - `limit` integer, required
      - `next_cursor` integer, nullable, required
      - `order` 'asc' | 'desc'
      - `returned` integer, required
      - `snapshot` string: Present only for page_snapshot paging. Echo as page_snapshot on subsequent pages; a changed collection or query requires a restart.
      - `sort` string, nullable
      - `total` integer, required
    - `published_at` string, date-time, nullable: Real publish time from the KV latest pointer, distinct from generated_at. Null before the first publish or when the control KV is unbound.
    - `source` string
    - `stale_contract` object: Present ONLY when the served artifact was built under an older contract than the live one (serve-time drift, #1001) — the body may predate a schema change. Mirrored on the x-metagraph-stale-contract response header for monitoring.
      - `built_under` string, required: Contract version the served artifact was built under.
      - `live` string, required: Current (live) contract version the Worker is running.
  - `ok` true, required
  - `schema_version` 1, required

## Other responses

- `304`: ETag matched and the cached response is still valid.
- `400`: Query parameters were malformed or unsupported.
- `404`: Artifact or API route was not found.
- `405`: HTTP method is not supported.
- `500`: Unexpected backend error.

---

[API](https://skmtc.dev/metagraph/apis/metagraphed-api.md) · [All operations](https://skmtc.dev/metagraph/apis/metagraphed-api/llms.txt) · [OpenAPI document](https://skmtc.dev/metagraph/apis/metagraphed-api/revisions/e29036024bb1?raw)
