{"ok":true,"schema_version":1,"data":{"artifact_contracts":[{"contract_version":"2026-07-03.2","id":"contracts","path":"/metagraph/contracts.json","retirement":null,"schema_ref":"#/components/schemas/ContractsArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"providers","path":"/metagraph/providers.json","retirement":null,"schema_ref":"#/components/schemas/ProvidersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"provider-detail","path":"/metagraph/providers/{slug}.json","retirement":null,"schema_ref":"#/components/schemas/ProviderArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"provider-endpoints","path":"/metagraph/providers/{slug}/endpoints.json","retirement":null,"schema_ref":"#/components/schemas/ProviderEndpointsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"api-index","path":"/metagraph/api-index.json","retirement":null,"schema_ref":"#/components/schemas/ApiIndexArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"openapi","path":"/metagraph/openapi.json","retirement":null,"schema_ref":"#/components/schemas/OpenApiArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"type-definitions","path":"/metagraph/types.d.ts","retirement":null,"schema_ref":null,"status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"changelog","path":"/metagraph/changelog.json","retirement":null,"schema_ref":"#/components/schemas/ChangelogArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnets","path":"/metagraph/subnets.json","retirement":null,"schema_ref":"#/components/schemas/SubnetsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"metagraph-latest","path":"/metagraph/metagraph/latest.json","retirement":null,"schema_ref":"#/components/schemas/SubnetsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-detail","path":"/metagraph/subnets/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-overview","path":"/metagraph/overview/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetOverviewArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"profiles","path":"/metagraph/profiles.json","retirement":null,"schema_ref":"#/components/schemas/SubnetProfilesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"profile-detail","path":"/metagraph/profiles/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetProfileArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"surfaces","path":"/metagraph/surfaces.json","retirement":null,"schema_ref":"#/components/schemas/SurfacesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"surface-aliases","path":"/metagraph/surface-aliases.json","retirement":null,"schema_ref":"#/components/schemas/SurfaceAliasesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"surfaces-subnet","path":"/metagraph/surfaces/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetSurfacesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"endpoints","path":"/metagraph/endpoints.json","retirement":null,"schema_ref":"#/components/schemas/EndpointsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"endpoints-subnet","path":"/metagraph/endpoints/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetEndpointsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"candidates","path":"/metagraph/candidates.json","retirement":null,"schema_ref":"#/components/schemas/CandidatesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"candidates-subnet","path":"/metagraph/candidates/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetCandidatesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-queue","path":"/metagraph/review-queue.json","retirement":null,"schema_ref":"#/components/schemas/ReviewQueueArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"search","path":"/metagraph/search.json","retirement":null,"schema_ref":"#/components/schemas/SearchArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"search-index","path":"/metagraph/search-index.json","retirement":null,"schema_ref":"#/components/schemas/SearchIndexArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"coverage","path":"/metagraph/coverage.json","retirement":null,"schema_ref":"#/components/schemas/CoverageArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"coverage-depth","path":"/metagraph/coverage-depth.json","retirement":null,"schema_ref":"#/components/schemas/CoverageDepthArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"economics","path":"/metagraph/economics.json","retirement":null,"schema_ref":"#/components/schemas/EconomicsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"ask","path":"/metagraph/ai/ask.json","retirement":null,"schema_ref":"#/components/schemas/AskArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"search-semantic","path":"/metagraph/ai/search-semantic.json","retirement":null,"schema_ref":"#/components/schemas/SemanticSearchArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"surface-verify","path":"/metagraph/surfaces/{surface_id}/verify.json","retirement":null,"schema_ref":"#/components/schemas/SurfaceVerifyArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"emission-pipeline","path":"/metagraph/chain/emission-pipeline.json","retirement":null,"schema_ref":"#/components/schemas/EmissionPipelineArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"economics-trends","path":"/metagraph/economics/trends.json","retirement":null,"schema_ref":"#/components/schemas/EconomicsTrendsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"registry-summary","path":"/metagraph/registry-summary.json","retirement":null,"schema_ref":"#/components/schemas/RegistrySummaryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"lineage","path":"/metagraph/lineage.json","retirement":null,"schema_ref":"#/components/schemas/LineageArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"fixtures-index","path":"/metagraph/fixtures.json","retirement":null,"schema_ref":"#/components/schemas/FixturesIndexArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"agent-resources","path":"/metagraph/agent-resources.json","retirement":null,"schema_ref":"#/components/schemas/AgentResourcesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"fixture-detail","path":"/metagraph/fixtures/{surface_id}.json","retirement":null,"schema_ref":"#/components/schemas/FixtureArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"curation","path":"/metagraph/curation.json","retirement":null,"schema_ref":"#/components/schemas/CurationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"gaps","path":"/metagraph/gaps.json","retirement":null,"schema_ref":"#/components/schemas/GapsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"verification","path":"/metagraph/verification/latest.json","retirement":null,"schema_ref":"#/components/schemas/VerificationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"verification-subnet","path":"/metagraph/verification/subnets/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetVerificationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"freshness","path":"/metagraph/freshness.json","retirement":null,"schema_ref":"#/components/schemas/FreshnessArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"source-health","path":"/metagraph/source-health.json","retirement":null,"schema_ref":"#/components/schemas/SourceHealthArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"source-snapshots","path":"/metagraph/source-snapshots.json","retirement":null,"schema_ref":"#/components/schemas/SourceSnapshotsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"evidence-ledger","path":"/metagraph/evidence-ledger.json","retirement":null,"schema_ref":"#/components/schemas/EvidenceLedgerArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"evidence-subnet","path":"/metagraph/evidence/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetEvidenceArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-latest","path":"/metagraph/health/latest.json","retirement":{"code":"retired_artifact","http_status":410,"message":"Current-state health artifacts are retired; use the live API health endpoints instead."},"schema_ref":"#/components/schemas/HealthLatestArtifact","status":"retired","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-summary","path":"/metagraph/health/summary.json","retirement":{"code":"retired_artifact","http_status":410,"message":"Current-state health artifacts are retired; use the live API health endpoints instead."},"schema_ref":"#/components/schemas/HealthSummaryArtifact","status":"retired","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-history","path":"/metagraph/health/history/{date}.json","retirement":null,"schema_ref":"#/components/schemas/HealthHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-subnet","path":"/metagraph/health/subnets/{netuid}.json","retirement":{"code":"retired_artifact","http_status":410,"message":"Current-state health artifacts are retired; use the live API health endpoints instead."},"schema_ref":"#/components/schemas/HealthSubnetArtifact","status":"retired","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-badge","path":"/metagraph/health/badges/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/HealthBadgeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-trends","path":"/metagraph/health/trends/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/HealthTrendsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-trends-bulk","path":"/metagraph/health/trends.json","retirement":null,"schema_ref":"#/components/schemas/BulkHealthTrendsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-percentiles","path":"/metagraph/health/percentiles/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/HealthPercentilesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"health-incidents","path":"/metagraph/health/incidents/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/HealthIncidentsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-trajectory","path":"/metagraph/subnets/{netuid}/trajectory.json","retirement":null,"schema_ref":"#/components/schemas/SubnetTrajectoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-concentration","path":"/metagraph/subnets/{netuid}/concentration.json","retirement":null,"schema_ref":"#/components/schemas/SubnetConcentrationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-performance","path":"/metagraph/subnets/{netuid}/performance.json","retirement":null,"schema_ref":"#/components/schemas/SubnetPerformanceArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-idle-stake","path":"/metagraph/subnets/{netuid}/idle-stake.json","retirement":null,"schema_ref":"#/components/schemas/SubnetIdleStakeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-performance-history","path":"/metagraph/subnets/{netuid}/performance/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetPerformanceHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-concentration-history","path":"/metagraph/subnets/{netuid}/concentration/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetConcentrationHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-turnover","path":"/metagraph/subnets/{netuid}/turnover.json","retirement":null,"schema_ref":"#/components/schemas/SubnetTurnoverArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-weights","path":"/metagraph/subnets/{netuid}/weights.json","retirement":null,"schema_ref":"#/components/schemas/SubnetWeightsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-weight-setters","path":"/metagraph/subnets/{netuid}/weights/setters.json","retirement":null,"schema_ref":"#/components/schemas/SubnetWeightSettersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-serving","path":"/metagraph/subnets/{netuid}/serving.json","retirement":null,"schema_ref":"#/components/schemas/SubnetServingArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-prometheus","path":"/metagraph/subnets/{netuid}/prometheus.json","retirement":null,"schema_ref":"#/components/schemas/SubnetPrometheusArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-stake-transfers","path":"/metagraph/subnets/{netuid}/stake-transfers.json","retirement":null,"schema_ref":"#/components/schemas/SubnetStakeTransfersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-stake-moves","path":"/metagraph/subnets/{netuid}/stake-moves.json","retirement":null,"schema_ref":"#/components/schemas/SubnetStakeMovesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-registrations","path":"/metagraph/subnets/{netuid}/registrations.json","retirement":null,"schema_ref":"#/components/schemas/SubnetRegistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-axon-removals","path":"/metagraph/subnets/{netuid}/axon-removals.json","retirement":null,"schema_ref":"#/components/schemas/SubnetAxonRemovalsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-deregistrations","path":"/metagraph/subnets/{netuid}/deregistrations.json","retirement":null,"schema_ref":"#/components/schemas/SubnetDeregistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-stake-flow","path":"/metagraph/subnets/{netuid}/stake-flow.json","retirement":null,"schema_ref":"#/components/schemas/SubnetStakeFlowArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-stake-quote","path":"/metagraph/subnets/{netuid}/stake-quote.json","retirement":null,"schema_ref":"#/components/schemas/SubnetStakeQuoteArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-validator-economics","path":"/metagraph/subnets/{netuid}/validator-economics.json","retirement":null,"schema_ref":"#/components/schemas/SubnetValidatorEconomicsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-validator-economics-history","path":"/metagraph/subnets/{netuid}/validator-economics-history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetValidatorEconomicsHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"validator-economics-ranking","path":"/metagraph/validators/economics.json","retirement":null,"schema_ref":"#/components/schemas/ValidatorEconomicsRankingArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-alpha-volume","path":"/metagraph/subnets/{netuid}/volume.json","retirement":null,"schema_ref":"#/components/schemas/SubnetAlphaVolumeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-ohlc","path":"/metagraph/subnets/{netuid}/ohlc.json","retirement":null,"schema_ref":"#/components/schemas/SubnetOhlcArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-movers","path":"/metagraph/subnets/movers.json","retirement":null,"schema_ref":"#/components/schemas/SubnetMoversArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"global-validators","path":"/metagraph/validators.json","retirement":null,"schema_ref":"#/components/schemas/GlobalValidatorsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"accounts-list","path":"/metagraph/accounts.json","retirement":null,"schema_ref":"#/components/schemas/AccountsListArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"top-holders","path":"/metagraph/top-holders.json","retirement":null,"schema_ref":"#/components/schemas/TopHoldersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"validator-detail","path":"/metagraph/validators/{hotkey}.json","retirement":null,"schema_ref":"#/components/schemas/ValidatorDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"validator-nominators","path":"/metagraph/validators/{hotkey}/nominators.json","retirement":null,"schema_ref":"#/components/schemas/ValidatorNominatorsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"validator-history","path":"/metagraph/validators/{hotkey}/history.json","retirement":null,"schema_ref":"#/components/schemas/ValidatorHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-metagraph","path":"/metagraph/subnets/{netuid}/metagraph.json","retirement":null,"schema_ref":"#/components/schemas/SubnetMetagraphArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-neuron","path":"/metagraph/subnets/{netuid}/neurons/{uid}.json","retirement":null,"schema_ref":"#/components/schemas/NeuronDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-hyperparameters","path":"/metagraph/subnets/{netuid}/hyperparameters.json","retirement":null,"schema_ref":"#/components/schemas/SubnetHyperparametersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-hyperparameters-history","path":"/metagraph/subnets/{netuid}/hyperparameters/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetHyperparamsHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-validators","path":"/metagraph/subnets/{netuid}/validators.json","retirement":null,"schema_ref":"#/components/schemas/SubnetValidatorsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-yield","path":"/metagraph/subnets/{netuid}/yield.json","retirement":null,"schema_ref":"#/components/schemas/SubnetYieldArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-yield-history","path":"/metagraph/subnets/{netuid}/yield/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetYieldHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-events","path":"/metagraph/subnets/{netuid}/events.json","retirement":null,"schema_ref":"#/components/schemas/SubnetEventsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-event-summary","path":"/metagraph/subnets/{netuid}/event-summary.json","retirement":null,"schema_ref":"#/components/schemas/SubnetEventSummaryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-neuron-history","path":"/metagraph/subnets/{netuid}/neurons/{uid}/history.json","retirement":null,"schema_ref":"#/components/schemas/NeuronHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-history","path":"/metagraph/subnets/{netuid}/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-identity-history","path":"/metagraph/subnets/{netuid}/identity-history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetIdentityHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-summary","path":"/metagraph/accounts/{ss58}.json","retirement":null,"schema_ref":"#/components/schemas/AccountSummaryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-entities","path":"/metagraph/accounts/{ss58}/entities.json","retirement":null,"schema_ref":"#/components/schemas/AccountEntitiesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-events","path":"/metagraph/accounts/{ss58}/events.json","retirement":null,"schema_ref":"#/components/schemas/AccountEventsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-history","path":"/metagraph/accounts/{ss58}/history.json","retirement":null,"schema_ref":"#/components/schemas/AccountHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-extrinsics","path":"/metagraph/accounts/{ss58}/extrinsics.json","retirement":null,"schema_ref":"#/components/schemas/AccountExtrinsicsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-transfers","path":"/metagraph/accounts/{ss58}/transfers.json","retirement":null,"schema_ref":"#/components/schemas/AccountTransfersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-counterparties","path":"/metagraph/accounts/{ss58}/counterparties.json","retirement":null,"schema_ref":"#/components/schemas/AccountCounterpartiesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-stake-flow","path":"/metagraph/accounts/{ss58}/stake-flow.json","retirement":null,"schema_ref":"#/components/schemas/AccountStakeFlowArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-stake-moves","path":"/metagraph/accounts/{ss58}/stake-moves.json","retirement":null,"schema_ref":"#/components/schemas/AccountStakeMovesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-deregistrations","path":"/metagraph/accounts/{ss58}/deregistrations.json","retirement":null,"schema_ref":"#/components/schemas/AccountDeregistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-prometheus","path":"/metagraph/accounts/{ss58}/prometheus.json","retirement":null,"schema_ref":"#/components/schemas/AccountPrometheusArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-axon-removals","path":"/metagraph/accounts/{ss58}/axon-removals.json","retirement":null,"schema_ref":"#/components/schemas/AccountAxonRemovalsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-serving","path":"/metagraph/accounts/{ss58}/serving.json","retirement":null,"schema_ref":"#/components/schemas/AccountServingArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-weight-setters","path":"/metagraph/accounts/{ss58}/weight-setters.json","retirement":null,"schema_ref":"#/components/schemas/AccountWeightSettersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-registrations","path":"/metagraph/accounts/{ss58}/registrations.json","retirement":null,"schema_ref":"#/components/schemas/AccountRegistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-subnets","path":"/metagraph/accounts/{ss58}/subnets.json","retirement":null,"schema_ref":"#/components/schemas/AccountSubnetsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-portfolio","path":"/metagraph/accounts/{ss58}/portfolio.json","retirement":null,"schema_ref":"#/components/schemas/AccountPortfolioArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-positions","path":"/metagraph/accounts/{ss58}/positions.json","retirement":null,"schema_ref":"#/components/schemas/AccountPositionsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-subnet-position-history","path":"/metagraph/accounts/{ss58}/subnets/{netuid}/history.json","retirement":null,"schema_ref":"#/components/schemas/AccountPositionHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-identity","path":"/metagraph/accounts/{ss58}/identity.json","retirement":null,"schema_ref":"#/components/schemas/AccountIdentityArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-identity-history","path":"/metagraph/accounts/{ss58}/identity-history.json","retirement":null,"schema_ref":"#/components/schemas/AccountIdentityHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-balance","path":"/metagraph/accounts/{ss58}/balance.json","retirement":null,"schema_ref":"#/components/schemas/AccountBalanceArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-root-claim","path":"/metagraph/accounts/{ss58}/root-claim.json","retirement":null,"schema_ref":"#/components/schemas/AccountRootClaimArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-children","path":"/metagraph/accounts/{ss58}/children.json","retirement":null,"schema_ref":"#/components/schemas/AccountChildrenArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"account-parents","path":"/metagraph/accounts/{ss58}/parents.json","retirement":null,"schema_ref":"#/components/schemas/AccountParentsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"evm-address-mapping","path":"/metagraph/evm/address/{h160}.json","retirement":null,"schema_ref":"#/components/schemas/EvmAddressMappingArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"sudo-key","path":"/metagraph/sudo/key.json","retirement":null,"schema_ref":"#/components/schemas/SudoKeyArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"network-parameters","path":"/metagraph/network/parameters.json","retirement":null,"schema_ref":"#/components/schemas/NetworkParametersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"randomness","path":"/metagraph/network/randomness.json","retirement":null,"schema_ref":"#/components/schemas/RandomnessArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-recycled","path":"/metagraph/subnets/{netuid}/recycled.json","retirement":null,"schema_ref":"#/components/schemas/SubnetRecycledArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-burn","path":"/metagraph/subnets/{netuid}/burn.json","retirement":null,"schema_ref":"#/components/schemas/SubnetBurnArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-burn-history","path":"/metagraph/subnets/{netuid}/burn-history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetBurnHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-holders","path":"/metagraph/subnets/{netuid}/holders.json","retirement":null,"schema_ref":"#/components/schemas/SubnetHoldersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-holders","path":"/metagraph/chain/holders.json","retirement":null,"schema_ref":"#/components/schemas/ChainHoldersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-burn","path":"/metagraph/chain/burn.json","retirement":null,"schema_ref":"#/components/schemas/ChainBurnArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-ownership-history","path":"/metagraph/subnets/{netuid}/ownership-history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetOwnershipHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-conviction","path":"/metagraph/subnets/{netuid}/conviction.json","retirement":null,"schema_ref":"#/components/schemas/SubnetConvictionArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-lease","path":"/metagraph/subnets/{netuid}/lease.json","retirement":null,"schema_ref":"#/components/schemas/SubnetLeaseArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"crowdloans","path":"/metagraph/crowdloans.json","retirement":null,"schema_ref":"#/components/schemas/CrowdloansArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"crowdloan-detail","path":"/metagraph/crowdloans/{crowdloan_id}.json","retirement":null,"schema_ref":"#/components/schemas/CrowdloanDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-lease-history","path":"/metagraph/subnets/{netuid}/lease/history.json","retirement":null,"schema_ref":"#/components/schemas/SubnetLeaseHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"blocks-feed","path":"/metagraph/blocks.json","retirement":null,"schema_ref":"#/components/schemas/BlocksFeedArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"blocks-summary","path":"/metagraph/blocks/summary.json","retirement":null,"schema_ref":"#/components/schemas/BlocksSummaryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"block-detail","path":"/metagraph/blocks/{ref}.json","retirement":null,"schema_ref":"#/components/schemas/BlockDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"block-extrinsics","path":"/metagraph/blocks/{ref}/extrinsics.json","retirement":null,"schema_ref":"#/components/schemas/BlockExtrinsicsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"block-events","path":"/metagraph/blocks/{ref}/events.json","retirement":null,"schema_ref":"#/components/schemas/BlockEventsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-events-feed","path":"/metagraph/chain-events.json","retirement":null,"schema_ref":"#/components/schemas/ChainEventsFeedArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"block-chain-events","path":"/metagraph/blocks/{ref}/chain-events.json","retirement":null,"schema_ref":"#/components/schemas/BlockChainEventsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-events-stats","path":"/metagraph/chain-events/stats.json","retirement":null,"schema_ref":"#/components/schemas/ChainEventsStatsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"extrinsics-feed","path":"/metagraph/extrinsics.json","retirement":null,"schema_ref":"#/components/schemas/ExtrinsicsFeedArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"extrinsic-detail","path":"/metagraph/extrinsics/{hash}.json","retirement":null,"schema_ref":"#/components/schemas/ExtrinsicDetailArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"sudo-calls","path":"/metagraph/sudo.json","retirement":null,"schema_ref":"#/components/schemas/ExtrinsicsFeedArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"governance-config-changes","path":"/metagraph/governance/config-changes.json","retirement":null,"schema_ref":"#/components/schemas/ExtrinsicsFeedArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"network-capabilities","path":"/metagraph/networks.json","retirement":null,"schema_ref":"#/components/schemas/NetworkCapabilitiesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"runtime-versions","path":"/metagraph/runtime.json","retirement":null,"schema_ref":"#/components/schemas/RuntimeVersionsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-activity","path":"/metagraph/chain/activity.json","retirement":null,"schema_ref":"#/components/schemas/ChainActivityArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-calls","path":"/metagraph/chain/calls.json","retirement":null,"schema_ref":"#/components/schemas/ChainCallsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-signers","path":"/metagraph/chain/signers.json","retirement":null,"schema_ref":"#/components/schemas/ChainSignersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-transfers","path":"/metagraph/chain/transfers.json","retirement":null,"schema_ref":"#/components/schemas/ChainTransfersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-transfer-pairs","path":"/metagraph/chain/transfer-pairs.json","retirement":null,"schema_ref":"#/components/schemas/ChainTransferPairsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-stake-flow","path":"/metagraph/chain/stake-flow.json","retirement":null,"schema_ref":"#/components/schemas/ChainStakeFlowArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-alpha-volume","path":"/metagraph/chain/alpha-volume.json","retirement":null,"schema_ref":"#/components/schemas/ChainAlphaVolumeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-weights","path":"/metagraph/chain/weights.json","retirement":null,"schema_ref":"#/components/schemas/ChainWeightsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-weight-setters","path":"/metagraph/chain/weights/setters.json","retirement":null,"schema_ref":"#/components/schemas/ChainWeightSettersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-serving","path":"/metagraph/chain/serving.json","retirement":null,"schema_ref":"#/components/schemas/ChainServingArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-axon-removals","path":"/metagraph/chain/axon-removals.json","retirement":null,"schema_ref":"#/components/schemas/ChainAxonRemovalsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-prometheus","path":"/metagraph/chain/prometheus.json","retirement":null,"schema_ref":"#/components/schemas/ChainPrometheusArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-registrations","path":"/metagraph/chain/registrations.json","retirement":null,"schema_ref":"#/components/schemas/ChainRegistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-deregistrations","path":"/metagraph/chain/deregistrations.json","retirement":null,"schema_ref":"#/components/schemas/ChainDeregistrationsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-stake-transfers","path":"/metagraph/chain/stake-transfers.json","retirement":null,"schema_ref":"#/components/schemas/ChainStakeTransfersArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-stake-moves","path":"/metagraph/chain/stake-moves.json","retirement":null,"schema_ref":"#/components/schemas/ChainStakeMovesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-fees","path":"/metagraph/chain/fees.json","retirement":null,"schema_ref":"#/components/schemas/ChainFeesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-concentration","path":"/metagraph/chain/concentration.json","retirement":null,"schema_ref":"#/components/schemas/ChainConcentrationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-performance","path":"/metagraph/chain/performance.json","retirement":null,"schema_ref":"#/components/schemas/ChainPerformanceArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-idle-stake","path":"/metagraph/chain/idle-stake.json","retirement":null,"schema_ref":"#/components/schemas/ChainIdleStakeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-identity-history","path":"/metagraph/chain/identity-history.json","retirement":null,"schema_ref":"#/components/schemas/ChainIdentityHistoryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"self-health","path":"/metagraph/self-health.json","retirement":null,"schema_ref":"#/components/schemas/SelfHealthArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-yield","path":"/metagraph/chain/yield.json","retirement":null,"schema_ref":"#/components/schemas/ChainYieldArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"chain-turnover","path":"/metagraph/chain/turnover.json","retirement":null,"schema_ref":"#/components/schemas/ChainTurnoverArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-uptime","path":"/metagraph/subnets/{netuid}/uptime.json","retirement":null,"schema_ref":"#/components/schemas/UptimeArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"global-incidents","path":"/metagraph/incidents.json","retirement":null,"schema_ref":"#/components/schemas/GlobalIncidentsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"registry-leaderboards","path":"/metagraph/registry/leaderboards.json","retirement":null,"schema_ref":"#/components/schemas/RegistryLeaderboardsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"compare","path":"/metagraph/compare.json","retirement":null,"schema_ref":"#/components/schemas/CompareArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"compare-validators","path":"/metagraph/compare/validators.json","retirement":null,"schema_ref":"#/components/schemas/CompareValidatorsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"domains","path":"/metagraph/domains.json","retirement":null,"schema_ref":"#/components/schemas/DomainsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"domain-summary","path":"/metagraph/domains/{tag}/summary.json","retirement":null,"schema_ref":"#/components/schemas/DomainSummaryArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"rpc-usage","path":"/metagraph/rpc/usage.json","retirement":null,"schema_ref":"#/components/schemas/RpcUsageArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"rpc-endpoints","path":"/metagraph/rpc-endpoints.json","retirement":null,"schema_ref":"#/components/schemas/RpcEndpointsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"rpc-pools","path":"/metagraph/rpc/pools.json","retirement":null,"schema_ref":"#/components/schemas/RpcPoolsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"endpoint-pools","path":"/metagraph/endpoint-pools.json","retirement":null,"schema_ref":"#/components/schemas/EndpointPoolsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"endpoint-incidents","path":"/metagraph/endpoint-incidents.json","retirement":null,"schema_ref":"#/components/schemas/EndpointIncidentsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"operational-surfaces","path":"/metagraph/operational-surfaces.json","retirement":null,"schema_ref":"#/components/schemas/OperationalSurfacesArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"agent-catalog","path":"/metagraph/agent-catalog.json","retirement":null,"schema_ref":"#/components/schemas/AgentCatalogArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"agent-catalog-subnet","path":"/metagraph/agent-catalog/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/AgentCatalogSubnetArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"schema-drift","path":"/metagraph/schema-drift.json","retirement":null,"schema_ref":"#/components/schemas/SchemaDriftArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"schema-index","path":"/metagraph/schemas/index.json","retirement":null,"schema_ref":"#/components/schemas/SchemaIndexArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"schema-snapshot","path":"/metagraph/schemas/{surface_id}.json","retirement":null,"schema_ref":"#/components/schemas/JsonObject","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"adapter","path":"/metagraph/adapters/{slug}.json","retirement":null,"schema_ref":"#/components/schemas/AdapterArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"r2-manifest","path":"/metagraph/r2-manifest.json","retirement":null,"schema_ref":"#/components/schemas/R2ManifestArtifact","status":"live","storage_tier":"dual"},{"contract_version":"2026-07-03.2","id":"review-curation","path":"/metagraph/review/curation.json","retirement":null,"schema_ref":"#/components/schemas/ReviewCurationArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-gap-priorities","path":"/metagraph/review/gap-priorities.json","retirement":null,"schema_ref":"#/components/schemas/ReviewGapPrioritiesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"subnet-gaps","path":"/metagraph/review/gaps/{netuid}.json","retirement":null,"schema_ref":"#/components/schemas/SubnetGapsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-profile-completeness","path":"/metagraph/review/profile-completeness.json","retirement":null,"schema_ref":"#/components/schemas/ReviewProfileCompletenessArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-adapter-candidates","path":"/metagraph/review/adapter-candidates.json","retirement":null,"schema_ref":"#/components/schemas/ReviewAdapterCandidatesArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-enrichment-queue","path":"/metagraph/review/enrichment-queue.json","retirement":null,"schema_ref":"#/components/schemas/ReviewEnrichmentQueueArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-enrichment-evidence","path":"/metagraph/review/enrichment-evidence.json","retirement":null,"schema_ref":"#/components/schemas/ReviewEnrichmentEvidenceArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-enrichment-targets","path":"/metagraph/review/enrichment-targets.json","retirement":null,"schema_ref":"#/components/schemas/ReviewEnrichmentTargetsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"review-decisions","path":"/metagraph/review/maintainer-decisions.json","retirement":null,"schema_ref":"#/components/schemas/ReviewDecisionsArtifact","status":"live","storage_tier":"r2"},{"contract_version":"2026-07-03.2","id":"build-summary","path":"/metagraph/build-summary.json","retirement":null,"schema_ref":"#/components/schemas/BuildSummaryArtifact","status":"live","storage_tier":"r2"}],"base_path":"/api/v1","contract_version":"2026-07-03.2","feeds":[{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"The site-wide \"what changed\" feed: subnets, surfaces, and coverage added, removed, renamed, or updated in the metagraphed registry, plus Bittensor runtime upgrade activity (#8702). Served as RSS 2.0, Atom 1.0, or JSON Feed 1.1 — append `.rss`/`.atom`/`.json`, or negotiate with the `Accept` header on the bare path. Use `?tag=upgrade` to narrow to runtime upgrades alone.","formats":["rss","atom","json"],"id":"feed-registry","kind":"registry","method":"GET","path":"/api/v1/feeds/registry","path_parameters":[],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]},{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"Operational incidents across Bittensor subnet surfaces — probe-detected downtime only, never hand-authored. Same three serializations and window/tag filters as the registry feed.","formats":["rss","atom","json"],"id":"feed-incidents","kind":"incidents","method":"GET","path":"/api/v1/feeds/incidents","path_parameters":[],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]},{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"Ranked subnet enrichment targets: missing surfaces, contributor lanes, and the recommended next action for each. The contributor-facing view of registry coverage debt.","formats":["rss","atom","json"],"id":"feed-gaps","kind":"gaps","method":"GET","path":"/api/v1/feeds/gaps","path_parameters":[],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]},{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"Bittensor runtime upgrade activity (#8702): subtensor releases, observed mainnet/testnet spec-version changes, and BIT documents. Reports observed states only — the foundation publishes no deploy schedule, so this feed carries what has happened and never when something will.","formats":["rss","atom","json"],"id":"feed-upgrades","kind":"upgrades","method":"GET","path":"/api/v1/feeds/upgrades","path_parameters":[],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]},{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"A personal watchlist feed built entirely from the URL: `?ids=s7,s64` selects subnets by netuid. Registry changes and incidents for the named entities only. There is no server-side subscription — anyone holding the URL sees which entities it tracks, so treat it as unlisted rather than private.","formats":["rss","atom","json"],"id":"feed-watch","kind":"watch","method":"GET","path":"/api/v1/feeds/watch","path_parameters":[],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}},{"description":"Comma-separated kind-prefixed entities: `s<netuid>` (subnet), `v<hotkey>` (validator), `a<ss58>` (account). Up to 50 per URL (WATCH_MAX_IDS in src/feeds.ts; more is a 413). Validator/account ids are accepted and counted toward that cap but produce no items yet — no change-tracking source exists for them.","name":"ids","schema":{"type":"string"}}]},{"content_types":["application/rss+xml","application/atom+xml","application/feed+json"],"description":"One subnet's combined feed: its registry changes and its surface incidents, merged chronologically. The per-subnet counterpart to the registry and incidents feeds.","formats":["rss","atom","json"],"id":"feed-subnet","kind":"subnet","method":"GET","path":"/api/v1/feeds/subnets/{netuid}","path_parameters":[{"description":"Subnet netuid.","name":"netuid","schema":{"minimum":0,"type":"integer"}}],"public":true,"query_parameters":[{"description":"Return only items carrying this tag (e.g. `upgrade`, `incident`, `subnet`). Exact match against the item's `tags` array.","name":"tag","schema":{"type":"string"}},{"description":"Inclusive lower bound on item timestamps, as an ISO-8601 date (`2026-06-01`, a whole UTC day) or date-time with an explicit offset. Malformed values are a 400, never silently ignored.","name":"since","schema":{"type":"string"}},{"description":"Inclusive upper bound, same format as `since`. A bare date covers the whole named UTC day.","name":"until","schema":{"type":"string"}},{"description":"Maximum items to return (1-50). Defaults to 50.","name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]}],"generated_at":"2026-08-05T09:59:06.676Z","networks":{"aliases":["finney","local","mainnet","test","testnet"],"data_aliases":["finney","mainnet","test","testnet"],"default":"mainnet","mainnet_only_route_count":86,"note":"Omit the network segment for mainnet. `finney` aliases `mainnet` and `test` aliases `testnet`. `local` is served but hosts no registry data — it returns a setup pointer for a self-run node.","path_form":"/api/v1/{network}/..."},"openapi_url":"/metagraph/openapi.json","primary_domain":"api.metagraph.sh","response_envelope":{"error_schema_ref":"#/components/schemas/ErrorEnvelope","fields":["ok","data","meta","error"],"notes":"Worker API routes wrap canonical /metagraph artifacts without changing artifact truth.","schema_version":1,"success_schema_ref":"#/components/schemas/SuccessEnvelope"},"routes":[{"artifact_path":"/metagraph/api-index.json","cache":"standard","description":"List backend API routes and response envelope metadata.","id":"api-index","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets.json","cache":"standard","description":"List active Finney subnets.","id":"subnets","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets","public":true,"query_collection":"subnets","query_filter_names":["netuid","netuids","coverage_level","curation_level","domain","status","subnet_type"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"netuids","schema":{"maxLength":767,"pattern":"^\\d{1,5}(,\\d{1,5}){0,127}$","type":"string"}},{"name":"coverage_level","schema":{"enum":["native-only","manifested","probed"],"type":"string"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"domain","schema":{"enum":["agents","compute","data","finance","inference","media","prediction","privacy","robotics","science","search","security","storage","training"],"type":"string"}},{"name":"status","schema":{"enum":["active","inactive"],"type":"string"}},{"name":"subnet_type","schema":{"enum":["root","application"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"min_block","schema":{"type":"number"}},{"name":"max_block","schema":{"type":"number"}},{"name":"min_candidate_count","schema":{"type":"number"}},{"name":"max_candidate_count","schema":{"type":"number"}},{"name":"min_integration_readiness","schema":{"type":"number"}},{"name":"max_integration_readiness","schema":{"type":"number"}},{"name":"min_mechanism_count","schema":{"type":"number"}},{"name":"max_mechanism_count","schema":{"type":"number"}},{"name":"min_participant_count","schema":{"type":"number"}},{"name":"max_participant_count","schema":{"type":"number"}},{"name":"min_probed_surface_count","schema":{"type":"number"}},{"name":"max_probed_surface_count","schema":{"type":"number"}},{"name":"min_surface_count","schema":{"type":"number"}},{"name":"max_surface_count","schema":{"type":"number"}},{"name":"min_tempo","schema":{"type":"number"}},{"name":"max_tempo","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["block","candidate_count","coverage_level","curation_level","integration_readiness","mechanism_count","name","netuid","participant_count","probed_surface_count","status","subnet_type","surface_count","tempo"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}.json","cache":"standard","description":"Fetch per-subnet detail.","id":"subnet-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/profiles.json","cache":"standard","description":"List public-safe subnet profiles and completeness scores.","id":"profiles","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/profiles","public":true,"query_collection":"profiles","query_filter_names":["netuid","subnet_type","curation_level","review_state","confidence","profile_level"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"subnet_type","schema":{"enum":["root","application"],"type":"string"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"review_state","schema":{"maxLength":100,"type":"string"}},{"name":"confidence","schema":{"enum":["low","medium","high"],"type":"string"}},{"name":"profile_level","schema":{"enum":["directory-only","identity-partial","identity-complete","operational","adapter-backed"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["candidate_count","completeness_score","curation_level","interface_count","missing_critical_count","name","netuid","operational_interface_count","profile_level","review_state"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/profiles/{netuid}.json","cache":"standard","description":"Fetch public-safe profile detail for one subnet.","id":"subnet-profile","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/profile","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/overview/{netuid}.json","cache":"standard","description":"Fetch a composed overview (profile + health + curation + gaps + counts) for one subnet.","id":"subnet-overview","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/overview","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/agent-catalog.json","cache":"standard","description":"List subnets exposing callable services for AI agents (compact capability index).","id":"agent-catalog","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/agent-catalog","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/agent-catalog/{netuid}.json","cache":"standard","description":"Fetch the callable-services catalog for one subnet (each service with its schema + health).","id":"agent-catalog-subnet","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/agent-catalog/{netuid}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/surfaces.json","cache":"standard","description":"List curated public surfaces.","id":"surfaces","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/surfaces","public":true,"query_collection":"curated-surfaces","query_filter_names":["netuid","kind","provider","id","auth_required","public_safe","rate_limited"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"auth_required","schema":{"enum":["true","false"],"type":"string"}},{"name":"public_safe","schema":{"enum":["true","false"],"type":"string"}},{"name":"rate_limited","schema":{"enum":["true","false"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["id","kind","name","netuid","provider"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/surfaces/{netuid}.json","cache":"standard","description":"List curated public surfaces for one subnet.","id":"subnet-surfaces","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/surfaces","public":true,"query_collection":"curated-surfaces","query_filter_names":["kind","provider","id","auth_required","public_safe","rate_limited"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"auth_required","schema":{"enum":["true","false"],"type":"string"}},{"name":"public_safe","schema":{"enum":["true","false"],"type":"string"}},{"name":"rate_limited","schema":{"enum":["true","false"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["id","kind","name","netuid","provider"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/endpoints.json","cache":"short","description":"List generalized endpoint resources and monitored public surfaces.","id":"endpoints","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/endpoints","public":true,"query_collection":"endpoints","query_filter_names":["kind","layer","netuid","pool_eligible","provider","publication_state","status"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"layer","schema":{"enum":["bittensor-base","data-provider","docs-provider","subnet-app"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"pool_eligible","schema":{"enum":["true","false"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"publication_state","schema":{"enum":["candidate","verified","monitored","pool-eligible","disabled","rejected"],"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"min_latency_ms","schema":{"type":"number"}},{"name":"max_latency_ms","schema":{"type":"number"}},{"name":"min_score","schema":{"type":"number"}},{"name":"max_score","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["kind","last_checked","latency_ms","layer","netuid","pool_eligible","provider","publication_state","score","status"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/endpoints/{netuid}.json","cache":"short","description":"List generalized endpoint resources for one subnet.","id":"subnet-endpoints","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/endpoints","public":true,"query_collection":"endpoints","query_filter_names":["kind","layer","pool_eligible","provider","publication_state","status"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"layer","schema":{"enum":["bittensor-base","data-provider","docs-provider","subnet-app"],"type":"string"}},{"name":"pool_eligible","schema":{"enum":["true","false"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"publication_state","schema":{"enum":["candidate","verified","monitored","pool-eligible","disabled","rejected"],"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"min_latency_ms","schema":{"type":"number"}},{"name":"max_latency_ms","schema":{"type":"number"}},{"name":"min_score","schema":{"type":"number"}},{"name":"max_score","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["kind","last_checked","latency_ms","layer","netuid","pool_eligible","provider","publication_state","score","status"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/candidates.json","cache":"standard","description":"List unpromoted candidate surfaces.","id":"candidates","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/candidates","public":true,"query_collection":"candidates","query_filter_names":["netuid","kind","provider","state","id","confidence"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"state","schema":{"enum":["schema-invalid","schema-valid","maintainer-review","verified","stale","rejected"],"type":"string"}},{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"confidence","schema":{"enum":["low","medium","high"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["confidence","id","kind","name","netuid","provider","state"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/candidates/{netuid}.json","cache":"standard","description":"List unpromoted candidate surfaces for one subnet.","id":"subnet-candidates","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/candidates","public":true,"query_collection":"candidates","query_filter_names":["kind","provider","state","id","confidence"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"state","schema":{"enum":["schema-invalid","schema-valid","maintainer-review","verified","stale","rejected"],"type":"string"}},{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"confidence","schema":{"enum":["low","medium","high"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["confidence","id","kind","name","netuid","provider","state"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/providers.json","cache":"standard","description":"List providers and sources.","id":"providers","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/providers","public":true,"query_collection":"providers","query_filter_names":["id","kind","authority"],"query_parameters":[{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"kind","schema":{"enum":["data-provider","docs-provider","infrastructure-provider","registry","subnet-team"],"type":"string"}},{"name":"authority","schema":{"enum":["community","official","provider-claimed","registry-observed"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["authority","id","kind","name"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/providers/{slug}.json","cache":"standard","description":"Fetch per-provider detail.","id":"provider-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/providers/{slug}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/providers/{slug}/endpoints.json","cache":"short","description":"List endpoint resources for one provider or operator.","id":"provider-endpoints","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/providers/{slug}/endpoints","public":true,"query_collection":"endpoints","query_filter_names":["kind","layer","netuid","pool_eligible","publication_state","status"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"layer","schema":{"enum":["bittensor-base","data-provider","docs-provider","subnet-app"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"pool_eligible","schema":{"enum":["true","false"],"type":"string"}},{"name":"publication_state","schema":{"enum":["candidate","verified","monitored","pool-eligible","disabled","rejected"],"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"min_latency_ms","schema":{"type":"number"}},{"name":"max_latency_ms","schema":{"type":"number"}},{"name":"min_score","schema":{"type":"number"}},{"name":"max_score","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["kind","last_checked","latency_ms","layer","netuid","pool_eligible","provider","publication_state","score","status"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/coverage.json","cache":"standard","description":"Fetch registry coverage summary.","id":"coverage","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/coverage","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/coverage-depth.json","cache":"standard","description":"Fetch the machine-usable coverage depth scorecard and ranked enrichment queue.","id":"coverage-depth","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/coverage-depth","public":true,"query_collection":"coverage-depth","query_filter_names":["netuid","tier","agent_status","blocker_level"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"tier","schema":{"enum":["agent-ready","machine-usable","candidate-review","needs-evidence","hard-blocked","missing-interface"],"type":"string"}},{"name":"agent_status","schema":{"enum":["callable","base-layer","candidate","needs-evidence","blocked"],"type":"string"}},{"name":"blocker_level","schema":{"enum":["none","hard-blocked","needs-review","missing-data"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["agent_status","blocker_level","name","netuid","priority_score","score","tier"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/economics.json","cache":"standard","description":"List per-subnet validator and economic metrics (counts, stake, registration cost, alpha price, alpha market-cap proxy, alpha FDV proxy, emission share, and registration block height). Default order is emission share descending — note that `emission_share` is the STAGE-1 PRICE SHARE of the v440 emission pipeline (alpha_price / sum of alpha_price), NOT the share of TAO a subnet receives: spec 440 separates the two by MinerBurned reweighting, the Hill emission gate, the SubnetEmissionEnabled filter, the alpha injection cap, and the liquidity balancer. See /api/v1/network/parameters for the gate parameters and docs/computed-metrics-methodology.md for the eight-stage decomposition. Filter by netuid/registration_allowed, search by name/slug, and sort with `sort=<field>&order=asc|desc` — the two are separate parameters (e.g. `?sort=alpha_market_cap_tao&order=desc` or `?sort=block&order=asc`), NOT a combined `field:desc` token.","id":"economics","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/economics","public":true,"query_collection":"economics","query_filter_names":["netuid","registration_allowed"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"registration_allowed","schema":{"enum":["true","false"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["alpha_fdv_tao","alpha_market_cap_tao","alpha_price_change_1d","alpha_price_change_1h","alpha_price_change_1m","alpha_price_change_7d","alpha_price_tao","block","emission_share","max_stake_alpha","max_uids","max_validators","miner_count","miner_readiness","name","netuid","open_slots","registration_cost_tao","subnet_volume_tao","total_stake_alpha","validator_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/ai/ask.json","cache":"short","description":"Ask a natural-language question about the registry and get a grounded answer with citations. POST a JSON body `{ question }`; the answer carries inline [n] markers resolved by `citations`, each naming the surface it came from, so every claim is traceable to a registered surface rather than to the model. Use this when the question is exploratory (\"which subnets expose a public inference API?\"); use /api/v1/search/semantic when you want the ranked matches themselves rather than prose. Mirrored by the `ask` MCP tool. Served live (no static file); 503 ai_unavailable where no AI binding is configured.","id":"ask","mainnet_only":true,"method":"POST","networks":["mainnet"],"path":"/api/v1/ask","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/ai/search-semantic.json","cache":"short","description":"Search the registry by MEANING rather than by keyword: ?q= is embedded and ranked by cosine similarity, so it finds surfaces whose text never contains your terms. The complement to /api/v1/search, which is lexical -- reach for that one when you know the exact name. Each result carries its score, type, netuid/slug, title/subtitle, URL, categories, and service kinds; `model` names the embedding model. ?limit caps the list. Mirrored by the `semantic_search` MCP tool. Served live (no static file); 503 ai_unavailable where no AI binding is configured.","id":"search-semantic","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/search/semantic","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"q","schema":{"type":"string"}},{"name":"limit","schema":{"type":"string"}}]},{"artifact_path":"/metagraph/surfaces/{surface_id}/verify.json","cache":"short","description":"Probe ONE registered surface right now and report whether it is actually callable. Catalog-resolved, not arbitrary URL fetching: name a surface the registry knows and the Worker probes the URL it has on file, echoing the resolved identity (surface_key, netuid, kind, url, provider, auth_required) beside the verdict (status, classification, callable) and its evidence (latency_ms, status_code, error). `from_cache` says whether this was a fresh probe. Use it as the last step before integrating, after list_subnet_apis/get_api_schema. Mirrored by the `verify_integration` MCP tool. Served live (no static file); 404 surface_not_found when no catalogued surface matches.","id":"surface-verify","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/surfaces/{surface_id}/verify","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/emission-pipeline.json","cache":"short","description":"Fetch the v440 emission pipeline decomposed per subnet (#8744): stage 1's price share, MinerBurned, the post-burn weighted share, the post-Hill-gate share, SubnetEmissionEnabled, the final share of block emission actually received, the gate's give-or-take (`gate_delta`), `distance_to_bar` measured against the WEIGHTED share (theta is computed over the post-burn distribution, so comparing stage 1 to it answers a question the gate does not ask), and the TAO split -- `tao_in_emission` (pool liquidity injection) vs `excess_tao` (chain buys), their `tao_total`, and `liquidity_fraction`. Plus the network aggregate and the issuance-derived block emission. EVERY SHARE IS RECONSTRUCTED, NOT READ: the chain publishes the inputs, not the decomposition. `field_sources` gives each field its kind (measured|reconstructed) and, for measurements, the storage item behind it; every value is pinned to `chain_state.block`; and the four pipeline identities are evaluated on the rows being served, so `verification.verified: false` means the response is not defensible and must not be used. `emission_enabled` is published rather than inferred because a deeply gated ENABLED subnet and a disabled one both read `final_share: 0`. The two TAO channels are point samples at that block -- measured across 14 consecutive blocks they move a few rao and `liquidity_fraction` varies by ~1e-5, so no rollup exists or is needed. ?netuid filters the subnet list and deliberately leaves the aggregate network-wide. Served live (no static file); 503 when the capture carries no pinned block, because an unverifiable decomposition is worse than none.","id":"emission-pipeline","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/emission-pipeline","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/economics/trends.json","cache":"short","description":"Fetch the network-wide economics time series (#1307): per UTC day across all subnets — total stake, stake-weighted + median alpha price, total validator/miner counts, and mean emission share — aggregated live from the daily subnet_snapshots D1 rollup. `mean_emission_share` averages the stage-1 price share, so it inherits the same caveat: `emission_share` is the STAGE-1 PRICE SHARE of the v440 emission pipeline (alpha_price / sum of alpha_price), NOT the share of TAO a subnet receives: spec 440 separates the two by MinerBurned reweighting, the Hill emission gate, the SubnetEmissionEnabled filter, the alpha injection cap, and the liquidity balancer. See /api/v1/network/parameters for the gate parameters and docs/computed-metrics-methodology.md for the eight-stage decomposition. The rollup is the same source the per-subnet /trajectory reads. ?window=7d|30d|90d|1y|all (default 30d). Pass ?format=csv to download the per-day series as CSV. Served live (no static file); day_count:0 / days:[] when the rollup is cold.","id":"economics-trends","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/economics/trends","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/registry-summary.json","cache":"standard","description":"Fetch the registry-wide summary (completeness, top subnets, level counts, latest changes).","id":"registry-summary","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/registry/summary","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/lineage.json","cache":"standard","description":"Fetch maintainer-approved cross-network subnet lineage (graduated subnets + the deploying-soon testnet pipeline).","id":"lineage","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/lineage","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/fixtures.json","cache":"standard","description":"Fetch the index of captured live request/response fixtures (which surfaces carry a sanitized sample). Fetch one with GET /api/v1/fixtures/{surface_id}, get_fixture, or GET /metagraph/fixtures/{surface_id}.json.","id":"fixtures","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/fixtures","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/fixtures/{surface_id}.json","cache":"standard","description":"Fetch one captured, sanitized live request/response fixture by surface id.","id":"fixture-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/fixtures/{surface_id}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/agent-resources.json","cache":"standard","description":"Fetch the AI-resources index: the copyable agent (/agent.md), the MCP server + its tools, the skill, llms.txt, OpenAPI, and the agent-facing APIs.","id":"agent-resources","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/agent-resources","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/curation.json","cache":"standard","description":"Fetch curation states by subnet.","id":"curation","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/curation","public":true,"query_collection":"curation","query_filter_names":["netuid","coverage_level","curation_level"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"coverage_level","schema":{"enum":["native-only","manifested","probed"],"type":"string"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["coverage_level","curation_level","name","netuid"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/gaps.json","cache":"standard","description":"Fetch interface gap report.","id":"gaps","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/gaps","public":true,"query_collection":"gaps","query_filter_names":["netuid","coverage_level","curation_level"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"coverage_level","schema":{"enum":["native-only","manifested","probed"],"type":"string"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["coverage_level","curation_level","gap_count","name","netuid"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/review/gap-priorities.json","cache":"standard","description":"Fetch contributor-targeted subnet gap priorities.","id":"review-gaps","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/gaps","public":true,"query_collection":"review-gap-priorities","query_filter_names":["netuid","curation_level","missing_kinds","review_state"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"missing_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"review_state","schema":{"maxLength":100,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["candidate_count","curation_level","missing_kinds","name","netuid","priority_score","surface_count","verified_candidate_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/review/gaps/{netuid}.json","cache":"standard","description":"Fetch interface gap priorities and enrichment queue for one subnet.","id":"subnet-gaps","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/gaps","public":true,"query_collection":"review-gap-priorities","query_filter_names":["curation_level","missing_kinds","review_state"],"query_parameters":[{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"missing_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"review_state","schema":{"maxLength":100,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["candidate_count","curation_level","missing_kinds","name","netuid","priority_score","surface_count","verified_candidate_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/review/profile-completeness.json","cache":"standard","description":"Fetch profile completeness gaps for contributor targeting.","id":"review-profile-completeness","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/profile-completeness","public":true,"query_collection":"profile-completeness","query_filter_names":["netuid","profile_level","confidence","identity_level","identity_promotion_kinds","native_name_quality"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"profile_level","schema":{"enum":["directory-only","identity-partial","identity-complete","operational","adapter-backed"],"type":"string"}},{"name":"confidence","schema":{"enum":["low","medium","high"],"type":"string"}},{"name":"identity_level","schema":{"enum":["none","directory","partial","complete"],"type":"string"}},{"name":"identity_promotion_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"native_name_quality","schema":{"enum":["chain","placeholder","empty"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["candidate_count","completeness_score","identity_level","identity_promotion_kind_count","identity_surface_count","live_identity_candidate_kind_count","missing_critical_count","name","native_identity_signal_count","native_name_quality","netuid","priority_score","profile_level","stale_identity_candidate_kind_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/review/adapter-candidates.json","cache":"standard","description":"Fetch subnets worth deeper adapter work.","id":"review-adapter-candidates","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/adapter-candidates","public":true,"query_collection":"adapter-candidates","query_filter_names":["netuid","curation_level","candidate_api_kinds","operational_kinds","reason_codes","recommended_adapter_kind"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"candidate_api_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"operational_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"reason_codes","schema":{"maxLength":100,"type":"string"}},{"name":"recommended_adapter_kind","schema":{"enum":["custom-adapter","data-artifact-adapter","generic-openapi-or-custom","stream-adapter"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["candidate_api_count","candidate_api_kinds","curation_level","name","netuid","operational_kinds","operational_surface_count","priority_score","recommended_adapter_kind"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/review/enrichment-queue.json","cache":"standard","description":"Fetch the prioritized all-subnet enrichment queue.","id":"review-enrichment-queue","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/enrichment-queue","public":true,"query_collection":"enrichment-queue","query_filter_names":["curation_level","direct_submission_kinds","evidence_action","identity_level","lane","missing_kinds","netuid","profile_level","reason_codes","review_state","manual_review_required"],"query_parameters":[{"name":"curation_level","schema":{"enum":["native","candidate-discovered","community-seeded","machine-verified","maintainer-reviewed","adapter-backed"],"type":"string"}},{"name":"direct_submission_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"evidence_action","schema":{"enum":["submit-new-evidence","verify-existing-evidence","replace-stale-evidence","review-existing-evidence","maintainer-review-existing-evidence","monitor"],"type":"string"}},{"name":"identity_level","schema":{"enum":["none","directory","partial","complete"],"type":"string"}},{"name":"lane","schema":{"enum":["direct-submission","maintainer-review","adapter-candidate","monitoring-followup","baseline-monitoring"],"type":"string"}},{"name":"missing_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"profile_level","schema":{"enum":["directory-only","identity-partial","identity-complete","operational","adapter-backed"],"type":"string"}},{"name":"reason_codes","schema":{"maxLength":100,"type":"string"}},{"name":"review_state","schema":{"maxLength":100,"type":"string"}},{"name":"manual_review_required","schema":{"enum":["true","false"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["adapter_score","candidate_count","completeness_score","curation_level","endpoint_count","evidence_action","identity_level","identity_surface_count","lane","name","netuid","operational_interface_count","priority_score","profile_level","review_state","stale_candidate_count","surface_count","verified_candidate_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}},{"description":"Response format override. Use `csv` to download the transformed list as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/review/enrichment-evidence.json","cache":"standard","description":"Fetch detailed candidate evidence behind the enrichment queue.","id":"review-enrichment-evidence","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/enrichment-evidence","public":true,"query_collection":"enrichment-evidence","query_filter_names":["direct_submission_kinds","evidence_action","lane","missing_kinds","netuid"],"query_parameters":[{"name":"direct_submission_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"evidence_action","schema":{"enum":["submit-new-evidence","verify-existing-evidence","replace-stale-evidence","review-existing-evidence","maintainer-review-existing-evidence","monitor"],"type":"string"}},{"name":"lane","schema":{"enum":["direct-submission","maintainer-review","adapter-candidate","monitoring-followup","baseline-monitoring"],"type":"string"}},{"name":"missing_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["evidence_action","lane","name","netuid","priority_score"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/review/enrichment-targets.json","cache":"standard","description":"Fetch contributor-ready enrichment targets grouped by missing surface kind and review route.","id":"review-enrichment-targets","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/review/enrichment-targets","public":true,"query_collection":"enrichment-targets","query_filter_names":["auto_review_candidate","evidence_action","identity_level","kind","lane","manual_review_required","missing_kinds","netuid","profile_level","reason_codes","submission_route","target_action","target_type"],"query_parameters":[{"name":"auto_review_candidate","schema":{"enum":["true","false"],"type":"string"}},{"name":"evidence_action","schema":{"enum":["submit-new-evidence","verify-existing-evidence","replace-stale-evidence","review-existing-evidence","maintainer-review-existing-evidence","monitor"],"type":"string"}},{"name":"identity_level","schema":{"enum":["none","directory","partial","complete"],"type":"string"}},{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"lane","schema":{"enum":["direct-submission","maintainer-review","adapter-candidate","monitoring-followup","baseline-monitoring"],"type":"string"}},{"name":"manual_review_required","schema":{"enum":["true","false"],"type":"string"}},{"name":"missing_kinds","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"profile_level","schema":{"enum":["directory-only","identity-partial","identity-complete","operational","adapter-backed"],"type":"string"}},{"name":"reason_codes","schema":{"maxLength":100,"type":"string"}},{"name":"submission_route","schema":{"enum":["direct-candidate-pr","adapter-request","maintainer-review","status-report"],"type":"string"}},{"name":"target_action","schema":{"enum":["submit-new-candidate","replace-stale-candidate","verify-existing-candidate","review-existing-candidate","adapter-review","maintainer-review","monitoring-followup"],"type":"string"}},{"name":"target_type","schema":{"enum":["surface-candidate","adapter-review","maintainer-review","monitoring-followup"],"type":"string"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["auto_review_candidate","evidence_action","identity_level","kind","lane","manual_review_required","name","netuid","priority_score","profile_level","submission_route","target_action","target_type"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/health/summary.json","cache":"short","description":"Fetch global health summary.","id":"health","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/health","public":true,"query_collection":"health-subnets","query_filter_names":["netuid","status"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["avg_latency_ms","degraded_count","failed_count","last_checked","last_ok","name","netuid","ok_count","status","surface_count","unknown_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/health/history/{date}.json","cache":"short","description":"Fetch compact daily health history.","id":"health-history","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/health/history/{date}","public":true,"query_collection":"health-surfaces","query_filter_names":["netuid","kind","provider","status","classification"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"classification","schema":{"enum":["auth-required","content-mismatch","dead","live","rate-limited","redirected","timeout","transient","unsupported","unsafe","wrong-chain"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["classification","kind","last_checked","last_ok","latency_ms","netuid","provider","status","status_code","surface_id","verified_at"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/health/subnets/{netuid}.json","cache":"short","description":"Fetch health detail for one subnet.","id":"subnet-health","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/health","public":true,"query_collection":"health-surfaces","query_filter_names":["kind","provider","status","classification"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"classification","schema":{"enum":["auth-required","content-mismatch","dead","live","rate-limited","redirected","timeout","transient","unsupported","unsafe","wrong-chain"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["classification","kind","last_checked","last_ok","latency_ms","netuid","provider","status","status_code","surface_id","verified_at"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/health/trends.json","cache":"short","description":"Fetch compact 7d/30d daily uptime and latency trends for all subnets (computed live from D1).","id":"health-trends-bulk","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/health/trends","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/health/trends/{netuid}.json","cache":"short","description":"Fetch 7d/30d uptime and success-only latency trends (mean + p50/p95/p99 tail + healthy-sample count) per operational surface for one subnet (computed live from D1).","id":"subnet-health-trends","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/health/trends","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/health/percentiles/{netuid}.json","cache":"short","description":"Fetch latency percentiles (p50/p95/p99) per operational surface for one subnet over a 7d or 30d window (computed live from D1).","id":"subnet-health-percentiles","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/health/percentiles","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/health/incidents/{netuid}.json","cache":"short","description":"Fetch SLA (uptime ratio) and reconstructed downtime incidents per operational surface for one subnet over a 7d or 30d window (computed live from D1).","id":"subnet-health-incidents","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/health/incidents","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/trajectory.json","cache":"short","description":"Fetch the week-over-week structural trajectory (completeness + surface/endpoint counts) for one subnet from daily snapshots (computed live from D1). Pass ?format=csv to download the per-day series as CSV.","id":"subnet-trajectory","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/trajectory","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/concentration.json","cache":"short","description":"Fetch stake & emission concentration metrics (Gini, HHI, Nakamoto coefficient, top-percentile shares, entropy) for one subnet across per-UID, per-entity (coldkeys collapsed), and validator-only consensus-power lenses (computed live from the neurons D1 tier).","id":"subnet-concentration","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/concentration","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/performance.json","cache":"short","description":"Fetch reward-distribution & score-spread metrics for one subnet: reward concentration (Gini, HHI, Nakamoto coefficient, top-percentile shares, entropy) for incentive across all neurons and dividends across validators, plus the p10–p90 spread of the 0–1 trust, consensus, and validator_trust scores (computed live from the neurons D1 tier). The reward-flow companion to /concentration.","id":"subnet-performance","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/performance","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/idle-stake.json","cache":"short","description":"Fetch stake delegated to a hotkey currently earning zero dividends for one subnet — dividends are the only stream delegated stake ever receives in dTAO, so this covers both no-permit and zero-weight-output hotkeys alike (computed live from the neurons D1 tier).","id":"subnet-idle-stake","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/idle-stake","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/performance/history.json","cache":"short","description":"Fetch the per-day reward-flow & trust trend for one subnet over a 7d/30d/90d window: the incentive/dividends reward concentration (Gini, Nakamoto coefficient, top-10% share) plus the mean & median of the 0–1 trust, consensus, and validator_trust scores (computed live from the neuron_daily D1 rollup). The reward-flow twin of /concentration/history. Pass ?format=csv to download the per-day series as CSV.","id":"subnet-performance-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/performance/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/concentration/history.json","cache":"short","description":"Fetch the per-day stake & emission concentration trend (Gini, Nakamoto coefficient, top-10% share) for one subnet over a 7d/30d/90d window (computed live from the neuron_daily D1 rollup). Pass ?format=csv to download the per-day series as CSV.","id":"subnet-concentration-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/concentration/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/turnover.json","cache":"short","description":"Fetch validator-set & registration turnover (churn) for one subnet between a window's start and end snapshots — validators entered/exited + retention, UID deregistrations, and a 0-100 stability score. Add ?changes=true to include the entered/exited validator hotkeys and UID reassignment detail (computed live from the neuron_daily D1 rollup).","id":"subnet-turnover","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/turnover","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}},{"name":"changes","schema":{"enum":["true"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/weights.json","cache":"short","description":"Fetch validator weight-setting activity for one subnet over a 7d or 30d window: the distinct weight-setting validators, the WeightsSet event count, and the average updates per validator, computed live from the account_events WeightsSet stream. The per-subnet drill-in of GET /api/v1/chain/weights (which ranks only the top-N subnets and cannot be queried by netuid). Schema-stable zeroed card when the subnet has no WeightsSet events in the window.","id":"subnet-weights","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/weights","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/weights/setters.json","cache":"short","description":"Fetch the per-subnet weight-setter leaderboard over a 7d or 30d window: the individual validators behind /weights ranked by activity, each with its WeightsSet count, its share of the subnet's total weight-setting, and when it first and last set weights in the window, computed live from the account_events WeightsSet stream. The setter-level drill-in of GET /api/v1/subnets/{netuid}/weights (which reports only the aggregate and never names the setters). Schema-stable empty leaderboard when the subnet has no WeightsSet events in the window.","id":"subnet-weight-setters","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/weights/setters","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/serving.json","cache":"short","description":"Fetch axon-serving announcement activity for one subnet over a 7d or 30d window: the distinct servers (hotkeys), the AxonServed event count, and the average announcements per server, computed live from the account_events AxonServed stream. The per-subnet drill-in of GET /api/v1/chain/serving (which ranks only the top-N subnets and cannot be queried by netuid). Schema-stable zeroed card when the subnet has no AxonServed events in the window.","id":"subnet-serving","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/serving","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/prometheus.json","cache":"short","description":"Fetch Prometheus-endpoint serving activity for one subnet over a 7d or 30d window: the distinct exporters (hotkeys), the PrometheusServed event count, and the average announcements per exporter, read from the account_events PrometheusServed stream, which carries 0 of the 18,041 PrometheusServed events the chain emitted — an empty card is marked `degraded` rather than published as a measured zero. The per-subnet drill-in of GET /api/v1/chain/prometheus (which ranks only the top-N subnets and cannot be queried by netuid) and the telemetry-endpoint sibling of GET /api/v1/subnets/{netuid}/serving (axon endpoints). The zeroed card carries a `degraded` block whenever it is empty.","id":"subnet-prometheus","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/prometheus","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/stake-transfers.json","cache":"short","description":"Fetch stake-transfer activity for one subnet over a 7d or 30d window: the distinct senders (accounts), the StakeTransferred event count, and the average transfers per sender, computed live from the account_events StakeTransferred stream. The per-subnet drill-in of GET /api/v1/chain/stake-transfers (which ranks only the top-N subnets and cannot be queried by netuid) and the between-coldkeys sibling of GET /api/v1/subnets/{netuid}/stake-moves (within-account re-delegation churn) — transfer_stake relocates staked alpha from one account to another on the same hotkey (origin leg only), so it moves ownership, not net capital. Schema-stable zeroed card when the subnet has no StakeTransferred events in the window.","id":"subnet-stake-transfers","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/stake-transfers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/stake-moves.json","cache":"short","description":"Fetch stake-movement (re-delegation) activity for one subnet over a 7d or 30d window: the distinct movers (accounts), the StakeMoved event count, and the average movements per mover, computed live from the account_events StakeMoved stream. The per-subnet drill-in of GET /api/v1/chain/stake-moves (which ranks only the top-N subnets and cannot be queried by netuid) and the re-delegation-churn sibling of GET /api/v1/subnets/{netuid}/stake-flow (net capital flow) — move_stake relocates stake between hotkeys/subnets without unstaking, so it is churn, not flow. Schema-stable zeroed card when the subnet has no StakeMoved events in the window.","id":"subnet-stake-moves","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/stake-moves","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/registrations.json","cache":"short","description":"Fetch neuron-registration activity for one subnet over a 7d or 30d window: the distinct registrants (hotkeys), the NeuronRegistered event count, and the average registrations per registrant, computed live from the account_events NeuronRegistered stream. Raw registration demand — the account_events companion to the neuron_daily validator-set churn in GET /api/v1/subnets/{netuid}/turnover (net snapshot change, not raw event volume). Schema-stable zeroed card when the subnet has no NeuronRegistered events in the window.","id":"subnet-registrations","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/registrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/axon-removals.json","cache":"short","description":"Fetch axon-removal activity for one subnet over a 7d or 30d window: the distinct removers (hotkeys), the AxonInfoRemoved event count, and the average removals per remover, read from the account_events AxonInfoRemoved stream, which the runtime has never populated — an empty card is marked `degraded` rather than published as a measured zero. Raw axon-teardown activity — the removal-side companion to the AxonServed announcements in GET /api/v1/subnets/{netuid}/serving (which counts axon announcements, not teardowns). The zeroed card carries a `degraded` block whenever it is empty.","id":"subnet-axon-removals","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/axon-removals","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/deregistrations.json","cache":"short","description":"Fetch neuron-deregistration activity for one subnet over a 7d or 30d window: the distinct deregistered hotkeys, the NeuronDeregistered event count, and the average deregistrations per hotkey, DERIVED from UID reuse in the NeuronRegistered stream (NeuronDeregistered has never been emitted by the runtime). Raw deregistration/eviction activity — the exit-side companion to the NeuronRegistered demand in GET /api/v1/subnets/{netuid}/registrations and the account_events companion to the neuron_daily churn in GET /api/v1/subnets/{netuid}/turnover (net snapshot change, not raw event volume). The card carries a `derivation` block stating how many window registrations had no observable previous holder, and a `degraded` block when nothing derived it.","id":"subnet-deregistrations","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/deregistrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/stake-flow.json","cache":"short","description":"Fetch net stake flow for one subnet over a recent window: total TAO staked (StakeAdded) vs unstaked (StakeRemoved), the net flow, and the stake/unstake event counts, summed live from the account_events stream. ?direction=all|in|out filters to inflow (StakeAdded) or outflow (StakeRemoved) only; omitted defaults to all. Windows (7d/30d/90d) are bounded by the account_events retention.","id":"subnet-stake-flow","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/stake-flow","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"direction","schema":{"enum":["all","in","out"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/volume.json","cache":"short","description":"Fetch the rolling 24h buy/sell alpha volume for one subnet: unsigned totals (never netted) in both alpha and TAO for StakeAdded (buy) vs StakeRemoved (sell), plus event counts, summed live from the same account_events stream as GET /api/v1/subnets/{netuid}/stake-flow. Also returns a buy/sell sentiment indicator derived from the alpha totals: net_volume_alpha, a bounded sentiment_ratio, and a bullish/bearish/neutral label. Fixed 24h window, no query params — a canonical market-depth figure, not OHLC/price data.","id":"subnet-alpha-volume","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/volume","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/ohlc.json","cache":"short","description":"Fetch open/high/low/close/volume candles for one subnet's alpha price, bucketed by ?interval= (1h or 1d, default 1h) from the same account_events StakeAdded/StakeRemoved stream as GET /api/v1/subnets/{netuid}/volume — each row is one executed trade, price = amount_tao / alpha_amount. Open/high/low/close are the first/max/min/last trade price in the bucket; volume_alpha/volume_tao are summed amounts. ?days= bounds the lookback window (default 90, max 365). Empty buckets are omitted (a gap, not a synthesized flat candle). The root subnet (netuid 0) has no AMM pool — 1:1 TAO, no price impact — so it returns an empty candle array with root_excluded:true rather than a meaningless flat-line series.","id":"subnet-ohlc","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/ohlc","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"interval","schema":{"enum":["1h","1d"],"type":"string"}},{"name":"days","schema":{"maximum":365,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/stake-quote.json","cache":"short","description":"Fetch a read-only constant-product stake/unstake slippage quote for one subnet: the expected alpha/TAO out, spot vs effective price (TAO per alpha), and price-impact percent for a swap of ?amount= in ?direction=stake|unstake (default stake), computed live from the subnet's economics-tier AMM pool reserves (tao_in_pool_tao, alpha_in_pool). Pure math — no chain write, no custody — mirroring the chain's own constant-product swap and its InsufficientLiquidity guard: an amount over 1000× the relevant reserve is rejected with 422. The root subnet (netuid 0) has no AMM and returns a 1:1, zero-impact quote.","id":"subnet-stake-quote","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/stake-quote","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"amount","schema":{"exclusiveMinimum":0,"type":"number"}},{"name":"direction","schema":{"enum":["stake","unstake"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/validator-economics.json","cache":"short","description":"Fetch what it costs to become a validator on one subnet and whether a permit there earns: the permit floor and the earning floor (which differ by a median of ~7x — a permit is not income), the TAO to reach each priced against live AMM pool reserves plus the registration burn, how many validator slots are open, the commission (take) distribution across permit-holders, whether the emission gate is open and the daily TAO inflow, and the live StakeThreshold/TaoWeight the floors were computed against. Permitted, active and earning are returned as three separate counts because they are three different sets. Root stake counts toward the threshold on every registered subnet at once, so root_tao_to_clear_threshold is the cross-subnet alternative to the per-subnet alpha costs. Read-only and derived — no chain write, no custody; every derived field is nullable and degrades with a stated reason rather than a confident zero.","id":"subnet-validator-economics","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/validator-economics","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/validator-economics-history.json","cache":"short","description":"Fetch whether validating on one subnet is getting cheaper or more expensive: a daily series of the observed permit floor and earning floor in alpha, the validator set composition as three separate counts, and the emission-gate state with daily TAO inflow, over a 7d/30d/90d window (default 30d), newest first. A floor that has doubled means the subnet is filling up and entering now buys a contested position; a falling earning floor means it is emptying out — the same snapshot value, opposite decisions. Set-composition drift is what usually explains a floor change, which is why both ship together. TAO cost is deliberately excluded: a historical cost needs the pool reserves as they were, and reconstructing one from today's reserves would be wrong.","id":"subnet-validator-economics-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/validator-economics/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/validators/economics.json","cache":"short","description":"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.","id":"validator-economics-ranking","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/validators/economics","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"sort","schema":{"type":"string"}},{"name":"limit","schema":{"maximum":512,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"maximum":512,"minimum":0,"type":"integer"}},{"name":"emission_gate_open","schema":{"type":"boolean"}},{"name":"cap_binding","schema":{"type":"boolean"}}]},{"artifact_path":"/metagraph/subnets/movers.json","cache":"short","description":"Fetch the cross-subnet momentum leaderboard: every subnet ranked by its change in stake, emission, validator, and neuron count between the window's start and end neuron_daily snapshots, with start/end values, deltas, percentage changes, and each subnet's share of network stake/emission at the end. A network block totals stake/emission/validators across all subnets with gainer/loser/unchanged counts. Sort by stake (default), emission, validators, or neurons; limit caps the list (default 20, max 100). Computed live from the neuron_daily D1 rollup.","id":"subnet-movers","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/movers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"sort","schema":{"enum":["stake","emission","validators","neurons"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/validators.json","cache":"short","description":"Fetch the network-wide validator/operator leaderboard: validator-permit identities grouped across all current subnet memberships, with trust metrics, cross-subnet stake/emission totals, stake dominance, and top membership rows. Sort by subnet_count (default), uid_count, avg_validator_trust, max_validator_trust, total_stake, total_emission, or stake_dominance; limit caps the list (default 20, max 2000). Computed live from the neurons D1 tier.","id":"global-validators","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/validators","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"sort","schema":{"enum":["avg_validator_trust","max_validator_trust","stake_dominance","subnet_count","total_emission","total_stake","uid_count"],"type":"string"}},{"name":"limit","schema":{"maximum":2000,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts.json","cache":"short","description":"Fetch the site-wide accounts leaderboard: every currently-registered hotkey (miners included, not just validator_permit=1 ones) grouped across all current subnet memberships, with cross-subnet stake/emission totals, stake dominance, a validator/miner UID breakdown, and top membership rows. Sort by total_stake (default), total_emission, subnet_count, uid_count, validator_count, stake_dominance, or last_active; limit caps the list (default 20, max 100). Computed live from the neurons D1 tier. No 'Free'/spendable-balance or 'Total' column — no balance-tracking tier exists to source them from account_events/neurons.","id":"accounts-list","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"sort","schema":{"enum":["total_stake","total_emission","subnet_count","uid_count","validator_count","stake_dominance","last_active"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/top-holders.json","cache":"short","description":"Fetch the balance-based top-holder leaderboard: every account (coldkey) with a nonzero free balance and/or delegated stake position, with free/delegated/total TAO columns matching the taostats-style Account/Free/Delegated/Total benchmark /api/v1/accounts explicitly cannot derive. Sort by total_tao (default), free_tao, delegated_tao, or cross-subnet stake flow over a window (net_flow_7d, net_flow_30d, net_flow_90d, #6886/#6887); limit caps the list (default 20, max 100). free_tao is sourced from a direct System::Account chain-state scan (not event-reconstructed, so it can't drift); delegated_tao is this account's own stake positions across every hotkey/subnet, VALUED IN TAO: every position is non-root and therefore denominated in its subnet's alpha token, so each is multiplied by that netuid's alpha_price_tao from the latest daily subnet_snapshots row before summing (#8803) -- a DAILY cadence, so the price can lag up to ~24h behind the live economics tier, and a netuid with no usable price is excluded from the sum rather than counted as zero. total_tao adds it to free_tao, which is valid because both are TAO; net_flow_* is StakeAdded minus StakeRemoved over the window -- a negative value is a real net outflow, not a missing value -- and null-valued rows sort last on the net_flow_* keys. TWO TIERS, SELECTED BY SORT (#9469/#9502). The net_flow_* sorts are LIVE: the top-holders-flow projection lane recomputes all three windows daily from chain.account_events, so captured_at advances and the ranking is a real one. The same lane composes the three holdings sorts from D1 -- free_tao from account_balances, delegated_tao by valuing each nominator_positions row as share_fraction x hotkey_alpha.total_alpha x that netuid's alpha_price_tao (#9502 captured the pool totals; neurons.stake_tao covers only hotkeys holding a UID on that exact subnet, 22.8% of position rows, so recomputing from it would drop real top holders out of the ranking), and total_tao as free + delegated ranked across the FULL tables rather than summed over the other two sorts' capped rows, since the top of a sum is not contained in the union of the tops of its addends. A holdings sort is served live ONLY while its producer's most recent pass is recorded COMPLETE: ranking over a partially-loaded ledger returns the largest values PRESENT rather than the largest that EXIST, which is a well-formed leaderboard quietly missing real top holders, and for the pool ledger a missing total silently UNDERPRICES rather than dropping a row. While an input is unproven that sort DECLINES and answers from a fixed materialization taken 2026-08-02 whose captured_at and last_updated do not advance -- an account that has moved TAO since is misreported and one first funded since is absent, so read that ranking as historical and use GET /api/v1/accounts/{ss58}/balance for the live per-account balance. Which sorts are currently live is a property of the artifact, not a fixed list. On a net_flow_*-sorted page the three holdings columns are null rather than zero, because a zero would assert an empty wallet.","id":"top-holders","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/accounts/top-holders","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"sort","schema":{"enum":["total_tao","free_tao","delegated_tao"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/validators/{hotkey}.json","cache":"short","description":"Fetch cross-subnet detail for one validator identity: its validator_permit=1 rows aggregated across every subnet it operates in — cross-subnet totals (stake, emission, avg/max trust) plus a full per-subnet performance table. Computed live from the neurons D1 tier. Cold/absent hotkey (no validator-permit rows) returns a zeroed aggregate with an empty subnets array, never a 404.","id":"validator-detail","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/validators/{hotkey}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/validators/{hotkey}/nominators.json","cache":"short","description":"Fetch the nominator list for one validator: who has staked to it (across every subnet it operates in) over a 7d/30d/90d window, each with staked/unstaked/net/gross TAO and last activity, ranked by net_staked (default), gross_staked, or last_activity. ?coldkey= narrows to one nominator's own flow (exact match). Summed live from the account_events StakeAdded/StakeRemoved stream. Cold/absent hotkey returns an empty list, never a 404.","id":"validator-nominators","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/validators/{hotkey}/nominators","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"sort","schema":{"enum":["net_staked","gross_staked","last_activity"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"coldkey","schema":{"type":"string"}}]},{"artifact_path":"/metagraph/validators/{hotkey}/history.json","cache":"short","description":"Fetch cross-subnet staked-over-time + rewards-per-1000-TAO history for one validator: one point per day, summed across every subnet it operates in that day (stake/emission totals, subnet count, and a normalized reward rate), computed live from the neuron_daily D1 rollup tier. ?window=7d|30d|90d|1y|all.","id":"validator-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/validators/{hotkey}/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/metagraph.json","cache":"short","description":"Fetch the per-UID metagraph (stake, trust, consensus, incentive, dividends, emission, validator_permit, rank, axon) for one subnet, computed live from the neurons D1 tier. Add ?validator_permit=true for validators only. Narrow each row to the columns you need with ?fields=uid,hotkey — a comma-separated list of Neuron field names, validated against the published Neuron schema; an unsupported name is a 400. The full response is 256 rows x 17 fields (~95 KB on subnet 1), and ?fields=uid,hotkey is ~18 KB. CSV keeps its own fixed column set.","id":"subnet-metagraph","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/metagraph","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"validator_permit","schema":{"enum":["true"],"type":"string"}},{"name":"fields","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/neurons/{uid}.json","cache":"short","description":"Fetch a single neuron's metagraph state by UID, computed live from the neurons D1 tier. Narrow the row with ?fields=uid,hotkey — a comma-separated list of Neuron field names, validated against the published Neuron schema; an unsupported name is a 400.","id":"subnet-neuron","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/neurons/{uid}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"fields","schema":{"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/hyperparameters.json","cache":"short","description":"Fetch one subnet's consensus, economic, and governance hyperparameters (kappa, weight/activity settings, burn cost, liquid alpha, commit-reveal, yuma version, and more), refreshed daily and computed live from the subnet_hyperparams D1 tier.","id":"subnet-hyperparameters","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/hyperparameters","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/hyperparameters/history.json","cache":"short","description":"Fetch the append-only hyperparameter-change timeline for one subnet (#4309): each entry is a subnet_hyperparams snapshot recorded when any hyperparameter changed. Forward-only (no pre-feature history). Newest first; ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging. Pass ?format=csv to download the page as CSV.","id":"subnet-hyperparameters-history","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/hyperparameters/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/validators.json","cache":"short","description":"Fetch the validators (validator_permit) of one subnet ranked by stake, computed live from the neurons D1 tier. Narrow each row to the columns you need with ?fields=hotkey,stake_tao — a comma-separated list of Neuron field names, validated against the published Neuron schema; an unsupported name is a 400. CSV keeps its own fixed column set.","id":"subnet-validators","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/validators","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"fields","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/yield.json","cache":"short","description":"Fetch the per-UID emission yield (emission/stake return rate) for one subnet over the current metagraph snapshot, ranked high to low with a distribution summary (subnet aggregate yield, mean, p25/median/p75/p90 percentiles), a validator/miner split, and a per-UID above/below-median label, computed live from the neurons D1 tier. Pass ?format=csv to download the ranked neuron rows as CSV.","id":"subnet-yield","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/yield","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/yield/history.json","cache":"short","description":"Fetch the per-day emission-yield distribution trend for one subnet over a 7d/30d/90d window: the subnet-wide return plus the mean, median, and p25/p75/p90 of the per-UID emission-per-stake yields, one point per day (computed live from the neuron_daily D1 rollup). The time-series companion to /yield and the return-rate twin of /concentration/history. Pass ?format=csv to download the per-day series as CSV.","id":"subnet-yield-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/yield/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/events.json","cache":"short","description":"Fetch the first-party chain-event stream for one subnet (registrations, stake, weights, axon, delegation, lifecycle, transfers), newest first, from the account_events D1 tier filtered by netuid. Optional ?kind= filter and ?block_start/?block_end (block-height range); ?limit (<=1000) / ?offset. Pass ?format=csv to download the page as CSV.","id":"subnet-events","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/events","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"kind","schema":{"type":"string"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/event-summary.json","cache":"short","description":"Fetch a windowed event summary for one subnet: account_events counts by kind and coarse category, distinct hotkey/coldkey counts, TAO/alpha sums where applicable, first/last evidence bounds, plus a newest-first evidence slice. ?window=7d|30d|90d (default 30d); ?limit caps recent_events (default 10, max 50). Computed live from the account_events D1 tier.","id":"subnet-event-summary","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/event-summary","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"limit","schema":{"maximum":50,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/neurons/{uid}/history.json","cache":"short","description":"Fetch a UID's per-day metagraph history (stake, trust, consensus, incentive, dividends, emission, rank over time), computed live from the neuron_daily D1 rollup tier. ?window=7d|30d|90d|1y|all.","id":"subnet-neuron-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/neurons/{uid}/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/history.json","cache":"short","description":"Fetch a subnet's per-day aggregate history (neuron/validator counts + stake/emission totals) for sparklines, computed live from the neuron_daily D1 rollup tier. ?window=7d|30d|90d|1y|all.","id":"subnet-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/identity-history.json","cache":"short","description":"Fetch the append-only on-chain identity timeline for one subnet (#1647): each entry is a SubnetIdentitiesV3 snapshot recorded when any tracked field changed. Newest first; ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging. Pass ?format=csv to download the page as CSV. Served from the frozen lakehouse export of subnet_identity_history -- no D1 table backs this route, and the export stops where the capture did, so observed_at on each entry says how current it is.","id":"subnet-identity-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/identity-history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}.json","cache":"short","description":"Fetch a cross-subnet activity summary for one account (hotkey or coldkey): chain-event aggregates joined to its current subnet registrations + stake. Computed live from the account_events lakehouse and the neurons tier -- the same rows /accounts/{ss58}/events and /accounts/{ss58}/subnets serve, so the three cannot disagree. A tier that exists and cannot answer declines with a typed 503 (account_summary_unavailable) rather than an all-zero card, which is indistinguishable from an account with no history.","id":"account-summary","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/entities.json","cache":"short","description":"Fetch one address's community-contributed entity labels plus every subnet-ownership tie it has via the chain_events SubnetOwnerChanged stream (#6737-#6740) — either side of an automatic conviction-contest transfer. Only tracks transfers, not genesis ownership.","id":"account-entities","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/entities","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/events.json","cache":"short","description":"Fetch the paginated first-party chain-event history for one account (hotkey or coldkey), newest first. Optional ?kind= filter, ?netuid= to scope to one subnet, and ?block_start/?block_end (block-height range); ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging (#1851). Pass ?format=csv to download the page as CSV.","id":"account-events","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/events","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"kind","schema":{"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/history.json","cache":"short","description":"Fetch the durable per-day activity series for one account, newest day first, from the hotkey-keyed account_events_daily rollup (#1854). An ss58 with no hotkey activity returns zero days, since the rollup is hotkey-attributed (unlike /events, which matches the hotkey or coldkey). ?netuid filters to one subnet; ?from / ?to are YYYY-MM-DD bounds; ?limit (<=1000) / ?offset.","id":"account-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"from","schema":{"format":"date","type":"string"}},{"name":"to","schema":{"format":"date","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/extrinsics.json","cache":"short","description":"Fetch the extrinsics this account signed (matched by signer), newest first, computed live from the extrinsics D1 tier. Optional ?block_start/?block_end (block-height range); ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging. Pass ?format=csv to download the page as CSV.","id":"account-extrinsics","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/extrinsics","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/transfers.json","cache":"short","description":"Fetch the native-TAO Balances.Transfer feed for one account, newest first, computed live from the account_events D1 tier. ?direction=all|sent|received; optional ?block_start/?block_end (block-height range); ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging. Pass ?format=csv to download the page as CSV.","id":"account-transfers","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/transfers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"direction","schema":{"enum":["all","sent","received"],"type":"string"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/counterparties.json","cache":"short","description":"Fetch the per-counterparty fund-flow rollup for one account — or, with ?counterparty=<ss58>, pair-level native-TAO transfer evidence for one relationship — computed live from the account_events D1 tier. ?counterparty switches the route from ranked list mode into relationship drilldown mode; ?limit is 1-100, default 20 in list mode, and default 50 when ?counterparty is present. Pass ?format=csv to download the list-mode leaderboard as CSV; it's rejected alongside ?counterparty since the drilldown returns a single composite object, not rows.","id":"account-counterparties","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/counterparties","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"counterparty","schema":{"description":"Optional second SS58 address: switch from the ranked counterparties list to one relationship drilldown (fund-flow totals plus recent transfer evidence). Must differ from ss58.","pattern":"^[1-9A-HJ-NP-Za-km-z]{47,48}$","type":"string"}},{"name":"limit","schema":{"description":"Max counterparties to return in list mode (default 20), or max transfer evidence rows in relationship drilldown mode when ?counterparty is present (default 50).","maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/stake-flow.json","cache":"short","description":"Fetch one account's StakeAdded vs StakeRemoved flow per subnet over a recent window (7d/30d/90d): per-subnet net and gross flow with a direction label (accumulating/exiting/churning/idle), plus account totals, an HHI concentration of where the flow is focused, and the dominant subnet — summed live from the account_events D1 tier. ?direction=all|in|out filters to inflow (StakeAdded) or outflow (StakeRemoved) only; omitted defaults to all.","id":"account-stake-flow","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/stake-flow","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"direction","schema":{"enum":["all","in","out"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/stake-moves.json","cache":"short","description":"Fetch one account's stake-movement (re-delegation) footprint per subnet over a recent window (7d/30d/90d): each subnet's StakeMoved count with the first and last movement timestamps and the alpha price on the day of the most recent move (from the daily subnet_snapshots rollup), plus account totals, an HHI concentration of where its re-delegation churn is focused, and the dominant subnet — summed live from the account_events D1 tier. The account-level companion to GET /api/v1/chain/stake-moves and GET /api/v1/subnets/{netuid}/stake-moves, distinct from net capital flow in GET /api/v1/accounts/{ss58}/stake-flow.","id":"account-stake-moves","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/stake-moves","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/deregistrations.json","cache":"short","description":"Fetch one account's neuron-deregistration footprint per subnet over a recent window (7d/30d/90d): each subnet's NeuronDeregistered eviction count with the first and last eviction timestamps, plus account totals, an HHI concentration of where its deregistration activity is focused, and the dominant subnet — DERIVED from UID reuse (the slots where this account was the PREVIOUS holder); NeuronDeregistered has never been emitted by the runtime, the payload's `derivation` block states the lower bound, and `degraded` marks an answer nothing derived. The eviction-side complement to GET /api/v1/accounts/{ss58}/registrations and the account-level companion to GET /api/v1/chain/deregistrations, distinct from GET /api/v1/accounts/{ss58}/subnets (current registration state).","id":"account-deregistrations","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/deregistrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/prometheus.json","cache":"short","description":"Fetch one account's Prometheus-endpoint serving footprint per subnet over a recent window (7d/30d/90d): each subnet's PrometheusServed announcement count with the first and last announcement timestamps, plus account totals, an HHI concentration of where its telemetry activity is focused, and the dominant subnet — read from the account_events PrometheusServed stream, which carries 0 of the 18,041 PrometheusServed events the chain emitted; an empty footprint is marked `degraded` rather than published as a measured zero. Operational activity (announcing a Prometheus telemetry endpoint); the telemetry sibling of GET /api/v1/accounts/{ss58}/serving and the account-level companion to GET /api/v1/chain/prometheus, orthogonal to GET /api/v1/accounts/{ss58}/subnets (registration state).","id":"account-prometheus","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/prometheus","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/axon-removals.json","cache":"short","description":"Fetch one account's axon-removal footprint per subnet over a recent window (7d/30d/90d): each subnet's AxonInfoRemoved count with the first and last removal timestamps, plus account totals, an HHI concentration of where its teardown activity is focused, and the dominant subnet — read from the account_events AxonInfoRemoved stream, which the runtime has never populated; an empty footprint is marked `degraded` rather than published as a measured zero. The teardown-side complement to GET /api/v1/accounts/{ss58}/serving (axon announcements) and the account-level companion to GET /api/v1/chain/axon-removals, orthogonal to GET /api/v1/accounts/{ss58}/subnets (registration state).","id":"account-axon-removals","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/axon-removals","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/serving.json","cache":"short","description":"Fetch one account's axon-serving footprint per subnet over a recent window (7d/30d/90d): each subnet's AxonServed announcement count with the first and last announcement timestamps, plus account totals, an HHI concentration of where its serving activity is focused, and the dominant subnet — summed live from the account_events D1 tier. Operational activity (announcing an axon endpoint); the account-level companion to GET /api/v1/chain/serving, orthogonal to GET /api/v1/accounts/{ss58}/subnets (registration state) and GET /api/v1/accounts/{ss58}/registrations (registration events).","id":"account-serving","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/serving","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/weight-setters.json","cache":"short","description":"Fetch one account's (validator's) weight-setting footprint per subnet over a recent window (7d/30d): each subnet's WeightsSet count with the first and last set timestamps, plus account totals, an HHI concentration of where its weight-setting activity is focused, and the dominant subnet — summed live from the account_events D1 tier. Keyed on the hotkey (the validator submitting weights); the account-level companion to GET /api/v1/chain/weights/setters and GET /api/v1/subnets/{netuid}/weights/setters.","id":"account-weight-setters","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/weight-setters","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/registrations.json","cache":"short","description":"Fetch one account's neuron-registration footprint per subnet over a recent window (7d/30d/90d): each subnet's NeuronRegistered count with the first and last registration timestamps, plus account totals, an HHI concentration of where its registration activity is focused, and the dominant subnet — summed live from the account_events D1 tier. Windowed registration events including re-registrations after a deregistration; the account-level companion to GET /api/v1/chain/registrations, distinct from GET /api/v1/accounts/{ss58}/subnets (current registration state).","id":"account-registrations","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/registrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/subnets.json","cache":"short","description":"Fetch the subnets where an account's hotkey is currently registered (its cross-subnet footprint), computed live from the neurons D1 tier.","id":"account-subnets","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/subnets","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/portfolio.json","cache":"short","description":"Fetch a wallet's cross-subnet neuron portfolio: each position's economics (stake, emission, rank, trust, incentive, dividends, role) and yield, plus aggregates (totals, subnet/validator counts, overall return, stake concentration). Richer than /subnets; computed live from the neurons D1 tier.","id":"account-portfolio","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/portfolio","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/positions.json","cache":"short","description":"Fetch this account's reconstructed nominator-side positions: what it holds delegated across every hotkey/subnet, distinct from /portfolio's hotkey-scoped view. Computed live from nominator_positions joined against the neurons D1 tier. Root (netuid 0) stake is not covered.","id":"account-positions","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/positions","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/subnets/{netuid}/history.json","cache":"short","description":"Fetch one wallet's position on one subnet over time (the 'Alpha Holdings chart'): one point per snapshot_date with the position's economics (stake, emission, rank, trust, incentive, dividends, coldkey, role) and yield, computed live from the account_position_daily D1 rollup tier. ?window=7d|30d|90d|1y|all.","id":"account-subnet-position-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/subnets/{netuid}/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d","1y","all"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/identity.json","cache":"short","description":"Fetch the latest-only personal chain identity for one account (epic #4301/5.4), computed live from the account_identity D1 tier. has_identity is false for the common case of an account that never called set_identity.","id":"account-identity","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/identity","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/identity-history.json","cache":"short","description":"Fetch the append-only diff-tracking timeline for one account's personal chain identity (epic #4301/5.2): each entry is a snapshot recorded when any tracked field changed. Newest first; ?limit (<=1000) / ?offset, or ?cursor= for stable keyset paging. Pass ?format=csv to download the page as CSV.","id":"account-identity-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/accounts/{ss58}/identity-history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/accounts/{ss58}/balance.json","cache":"short","description":"Fetch the live TAO balance (free + reserved, in TAO) for one account, queried from the finney RPC at request time with 60s KV cache. Returns 400 on invalid ss58; balance_tao is null on RPC failure (200, consistent with blocks/extrinsics null-on-miss).","id":"account-balance","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/accounts/{ss58}/balance","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/root-claim.json","cache":"short","description":"Fetch the live root-claim current state for one Finney ss58 account (#7229) — RootClaimType setting, per-hotkey RootClaimable rates, RootClaimed cumulative watermarks, and RootClaimableThreshold — queried from the finney RPC at request time with 120s KV cache. Returns 400 on invalid ss58; claim_type/hotkeys are null on RPC failure. Read-only display only; never submits claim_root or any other extrinsic.","id":"account-root-claim","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/accounts/{ss58}/root-claim","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/children.json","cache":"short","description":"Fetch the live child-hotkey delegation graph for one account (#6723, part of the child-hotkey delegation epic #6721) — every child hotkey this account currently delegates stake-weight to, per subnet, queried from the chain's own ChildKeys storage map at request time with 120s KV cache. subnets is null on RPC failure, distinct from a confirmed empty graph.","id":"account-children","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/accounts/{ss58}/children","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/accounts/{ss58}/parents.json","cache":"short","description":"Fetch the live parent-hotkey delegation graph for one account (#6723, part of epic #6721) — every hotkey currently delegating stake-weight to this account, per subnet, queried from the chain's own ParentKeys storage map at request time with 120s KV cache. subnets is null on RPC failure, distinct from a confirmed empty graph.","id":"account-parents","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/accounts/{ss58}/parents","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/evm/address/{h160}.json","cache":"short","description":"Fetch the live H160 -> SS58 address mapping for one EVM address (#6725/#6728), via the AddressMapping EVM precompile's addressMapping(address), queried from the finney RPC at request time with 1h KV cache. ss58 is null on RPC failure.","id":"evm-address-mapping","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/evm/address/{h160}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/sudo/key.json","cache":"short","description":"Fetch the current Sudo::Key holder, queried from the finney RPC at request time with 1h KV cache (re-scoped from the original Senate/Council membership framing — subtensor has no such pallet, #4310). hotkey is null on RPC failure or an unset sudo key. `field_sources` marks hotkey measured and names the storage item behind it (Sudo.Key).","id":"sudo-key","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/sudo/key","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/network/parameters.json","cache":"short","description":"Fetch live global Subtensor protocol/governance parameters (#6343) — TaoWeight, StakeThreshold, PendingChildKeyCooldown — queried from the finney RPC at request time with 300s KV cache. Each field is independently null on its own RPC failure. READ `field_sources` BEFORE CITING ANY VALUE HERE: it labels every field measured (with the storage item behind it) or reconstructed (our arithmetic), and three are reconstructed. `block_emission_tao` and `block_emission_halvings` are derived from TotalIssuance, never read from the `BlockEmission` storage item, which is stale at 1.0 TAO (#8747). `emission_gate_exponent_effective` is the runtime default (3) whenever the storage item is unset, which is its current state on finney — that 3 comes from our source tree, not from chain.","id":"network-parameters","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/network/parameters","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/network/randomness.json","cache":"short","description":"Fetch the live drand randomness-beacon status (#6730/#6731) — LastStoredRound, OldestStoredRound — queried from the finney RPC at request time with 30s KV cache. A current-state snapshot, not a history feed. Each field is independently null on its own RPC failure. `field_sources` marks the two rounds measured (Drand.LastStoredRound / Drand.OldestStoredRound) and `stored_round_span` reconstructed — it is our subtraction of them, not a retention window the beacon publishes.","id":"randomness","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/network/randomness","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/recycled.json","cache":"short","description":"Fetch the live cumulative TAO recycled for registration on one subnet, queried from the chain's own RAORecycledForRegistration storage map at request time with 600s KV cache. recycled_tao is null on RPC failure; a subnet with zero registrations reads back a real 0.","id":"subnet-recycled","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/recycled","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/burn.json","cache":"short","description":"Fetch the live current registration/burn cost for one subnet (#6321) — the dynamic price between the static min_burn_tao/max_burn_tao bounds already in /subnets/{netuid}/hyperparameters, queried from the chain's own Burn storage map at request time with 120s KV cache. burn_tao is null on RPC failure; a subnet with a genuinely zero burn cost reads back a real 0.","id":"subnet-burn","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/burn","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/burn-history.json","cache":"short","description":"Fetch one subnet's registration-cost series. One subnet's registration-cost series (#9402) — how SubtensorModule.Burn has moved, captured every 15 minutes into D1 from the same single-call chain read /chain/burn uses. The live routes answer 'what does it cost'; this answers 'is it getting more expensive', which is the question an operator deciding where and WHEN to register actually has. ?window=24h|7d|30d|90d (default 7d), newest first, bounded. change_tao/change_pct describe the movement across the RETURNED window and are null when there is nothing to compare against — a single point has no change, and a change from a zero base has no percentage. A subnet with no recorded prices returns an empty series, never a 404.","id":"subnet-burn-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/burn/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["24h","7d","30d","90d"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/holders.json","cache":"short","description":"Fetch who owns one subnet's alpha (#9557) — the top coldkeys by alpha held on that netuid, with each holder's share of the subnet total, how many hotkeys they hold it through, and whole-subnet aggregates (distinct holder count, total measured alpha, top5/top10/top20 concentration). The reverse index of /accounts/{ss58}/positions, which reads the same ledger one coldkey (one account) at a time. Distinct from /subnets/{netuid}/concentration, which computes its scalars off neurons.stake_tao and therefore sees REGISTERED UIDs only: this reads nominator_positions, keyed on (coldkey, hotkey, netuid) whether or not the hotkey holds a UID on the subnet, so alpha staked to UNREGISTERED hotkeys is included — on netuid 74, 92 hotkeys carry positions and 10 are registered there, which is the part no other public source reaches without a full-chain map scan. Valued as share_fraction x hotkey_alpha.total_alpha against ONE proven pool pass, and ranked in ALPHA rather than TAO: within a single subnet alpha is already a common unit, so there is no subnet_snapshots price join and none of its up-to-24h staleness — multiply by the subnet's alpha_price_tao for TAO. limit caps the returned rows (default 20, max 100); holder_count, total_alpha and the three concentration shares are computed across the FULL holder set and then sliced, never over the capped rows, because the top of a sum is not contained in the union of the tops of its addends. TWO STATES DECLINE rather than answer, both with holders:[] plus a degraded.reason and NULL counts: pool_totals_unproven while no hotkey_alpha pass is recorded complete (a partially loaded pool ledger silently UNDERPRICES holders rather than visibly dropping them, so the ranking would be plausible and wrong), and root_not_in_alpha_map for netuid 0, which SubtensorModule::Alpha does not cover at all. A zero in any count is therefore a measured zero, never a decline. Mainnet-only: neither source table carries a network dimension.","id":"subnet-holders","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/holders","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/chain/holders.json","cache":"short","description":"Fetch every subnet ranked by alpha-ownership concentration. Every subnet ranked by how concentrated its alpha OWNERSHIP is (#9607) — per subnet: the distinct holder count, the measured alpha total, top1/top5/top10/top20 shares, and the largest holder's coldkey (an ss58 address). The cross-subnet companion to /subnets/{netuid}/holders, which answers this one subnet at a time and so costs 129 requests to compare the network. DISTINCT FROM /chain/concentration, which computes Gini/HHI/Nakamoto off neurons.stake_tao and therefore sees REGISTERED UIDs only — on netuid 74 that is 10 of the 92 hotkeys actually carrying positions. This reads the position ledger, so alpha parked on hotkeys holding no UID is measured rather than invisible, and the two routes disagree by design. ALPHA IS NEVER SUMMED ACROSS SUBNETS: each subnet's alpha is a different token, so total_alpha is reported per subnet and the network rollup carries only dimension-free facts — subnets measured, how many have a single account holding a majority, how many have exactly one holder, and the MEDIAN of the top-1 shares. A cross-subnet total requires pricing each subnet's alpha through its own alpha_price_tao first, which is what /accounts/top-holders does. ?sort=top1_share (default), top5_share, top10_share, top20_share, holder_count or total_alpha; a subnet whose share could not be computed sorts LAST rather than reading as the least concentrated. limit caps the returned subnets (default 20, max 512) and the max sits above the subnet count so ranking the whole network is one request. DECLINES rather than answering while the hotkey_alpha pool ledger has no complete pass — an empty subnets array with degraded.reason pool_totals_unproven and a NULL subnet_count, never a zero one. Mainnet-only: neither source table carries a network dimension.","id":"chain-holders","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/holders","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"sort","schema":{"enum":["top1_share","top5_share","top10_share","top20_share","holder_count","total_alpha"],"type":"string"}},{"name":"limit","schema":{"maximum":512,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/chain/burn.json","cache":"short","description":"Fetch every subnet's live registration/burn cost in one response, ranked cheapest-first (#9399). Every subnet's live registration/burn cost in ONE response, ranked cheapest-first (#9399). The cross-subnet companion to /subnets/{netuid}/burn, which answers the same question one subnet at a time — 129 requests to compare them all. Served from a single chain read: Burn is an Identity-hashed map, so every key is derivable from its netuid and state_queryStorageAt returns them together. 120s KV cache, matching the per-subnet route (burn moves within minutes during registration bursts). A subnet whose burn is a genuine 0 is included, not dropped. subnet_count is what the chain reports exists (TotalNetworks) and read_count is how many were actually read — a gap between them means the read was partial. NOTE: there is no separate validator-permit price; permits are granted by the StakeThreshold, not purchased.","id":"chain-burn","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/burn","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/ownership-history.json","cache":"short","description":"Fetch every ownership transfer one subnet has undergone (#6637, part of the conviction/ownership-contest tracker epic #4302) — see docs/conviction-lock-mechanism.md for the on-chain mechanism: a permissionless, conviction-weighted contest that runs continuously for every subnet, where ownership transfers automatically once a challenger's rolled conviction overtakes the incumbent owner's (no vote, no owner cooperation required). Two sources, labelled per record by `source`: `chain-event` records are decoded from the chain_events SubnetOwnerChanged stream and carry the block that emitted them, while `owner-observation` records are inferred from two consecutive owner captures, so their observed_at is when the change was NOTICED and block_number is null. Both are needed because a subnet's owning account can change without that event ever being emitted. observed_through reports how far the observation source covers this subnet at all. Served live from the all-events tier (ADR 0013), falling to the R2 lakehouse reader when that tier cannot answer, no static file. A subnet that has never changed hands returns an empty ownership_changes array, not an error — that's the common case.","id":"subnet-ownership-history","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/ownership-history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/conviction.json","cache":"short","description":"Fetch the live per-subnet conviction leaderboard (#6638, part of the conviction/ownership-contest tracker epic #4302) — who currently holds the most rolled conviction, i.e. how close the subnet is to an automatic ownership flip. Companion to /ownership-history (that's the event log of past flips; this is the current standings). Rolls the current lock state forward using the CURRENT live-queried unlock_rate/maturity_rate — never a hardcoded figure, both are independently governance-adjustable and confirmed to differ from each other. Read from chain storage at request time, no static file. A subnet with no active challengers/owner lock returns an empty leaderboard, not an error — that's the common case.","id":"subnet-conviction","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/conviction","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/lease.json","cache":"short","description":"Fetch the live subnet-lease state (#6719, part of the subnet-leasing/crowdloan-tracking epic #6717) — whether a subnet is currently under a lease and, if so, its terms + accumulated-but-undistributed alpha dividends, queried from the chain's own SubnetUidToLeaseId/SubnetLeases/AccumulatedLeaseDividends storage maps at request time with 120s KV cache. leased is null (not false) on RPC failure, distinct from a confirmed no-lease (leased:false).","id":"subnet-lease","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/lease","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/crowdloans.json","cache":"short","description":"List every crowdloan the chain has ever opened (#8696), with its terms and how much it raised, queried from the Crowdloan pallet's own NextCrowdloanId/Crowdloans storage at request time with 120s KV cache. Not paginated: the collection is bounded by NextCrowdloanId and fetched in one batched storage read. A dissolved crowdloan is omitted, so crowdloan_count can be lower than next_crowdloan_id. Every crowdloan on finney today is finalized, so this is a record of completed raises rather than a feed of open ones — read `finalized` and `end` rather than assuming liveness.","id":"crowdloans","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/crowdloans","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/crowdloans/{crowdloan_id}.json","cache":"short","description":"Fetch one crowdloan's live state (#8696) from the Crowdloan pallet's Crowdloans storage map at request time with 120s KV cache. exists is null (not false) on RPC failure, distinct from a confirmed-absent id (exists:false) — an id can be legitimately absent because dissolve removes the record while NextCrowdloanId keeps counting.","id":"crowdloan-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/crowdloans/{crowdloan_id}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/subnets/{netuid}/lease/history.json","cache":"short","description":"Fetch every SubnetLeaseCreated/SubnetLeaseTerminated event one subnet has had (#6719, part of epic #6717), decoded from the account_events stream #6718 started capturing. Served live from the chain_events lakehouse table, no static file. A subnet that has never been leased returns an empty lease_events array, not an error — that's the common case.","id":"subnet-lease-history","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/lease/history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/blocks.json","cache":"short","description":"Fetch the recent-block feed (newest first) for the block explorer; ?limit (<=100) / ?offset, or ?cursor= for stable keyset paging under head-of-chain inserts (#1851). A conjunctive (AND-ed) filter set (#1991) narrows the feed: ?author=<ss58>, ?spec_version=<n>, ?from / ?to (observed_at epoch-ms), ?block_start / ?block_end (height range), ?min_extrinsics / ?min_events (non-empty blocks). Pass ?format=csv to download the filtered block rows as CSV. Computed live from the first-party blocks D1 tier (#1345).","id":"blocks-feed","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"name":"author","schema":{"type":"string"}},{"name":"spec_version","schema":{"minimum":0,"type":"integer"}},{"name":"from","schema":{"minimum":0,"type":"integer"}},{"name":"to","schema":{"minimum":0,"type":"integer"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"min_extrinsics","schema":{"minimum":0,"type":"integer"}},{"name":"min_events","schema":{"minimum":0,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/blocks/summary.json","cache":"short","description":"Fetch block-production analytics over recent blocks: inter-block time distribution, extrinsic/event throughput, block-author decentralization (concentration over each author's block count), and the spec-version spread. Precomputed by a cron from that network's decoded blocks; schema-stable zeroed card when the projection is cold.","id":"blocks-summary","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks/summary","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/blocks/{ref}.json","cache":"short","description":"Fetch per-block detail by numeric block_number or 0x block_hash. Computed live from the first-party blocks D1 tier (#1345); 200 with block:null when cold/unknown.","id":"block-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks/{ref}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/blocks/{ref}/extrinsics.json","cache":"short","description":"Fetch the extrinsics in one block (by numeric block_number or 0x block_hash), in natural order; ?limit (<=100) / ?offset. Computed live from the first-party extrinsics D1 tier (#1845); 200 with extrinsics:[] when cold/unknown.","id":"block-extrinsics","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks/{ref}/extrinsics","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/blocks/{ref}/events.json","cache":"short","description":"Fetch the ACCOUNT-ATTRIBUTED events in one block (by numeric block_number or 0x block_hash), in natural order; ?limit (<=1000) / ?offset. This is the curated account_events projection -- a deliberate SUBSET of /api/v1/blocks/{ref}/chain-events (the complete pallet-level stream the block header's event_count counts), narrower by design rather than by loss. 200 with events:[] when cold/unknown.","id":"block-events","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks/{ref}/events","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/chain-events.json","cache":"short","description":"Fetch the recent all-events feed (newest first) from the chain_events lakehouse table — every raw pallet.method event, distinct from the curated account-attributed stream. ?pallet / ?method narrow by event id (1-64 ASCII identifier chars); ?block (+ optional ?extrinsic) scopes to one block or extrinsic; ?cursor is the lossless block_number.event_index keyset cursor and ?before is the legacy block_number-only cursor; ?limit caps the page (<=200, default 50). Pass ?format=csv to download the page as CSV. Each page reads one bounded block window below its ceiling, so a short page still carries a continuation rather than ending the feed. Served live, no static file.","id":"chain-events-feed","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain-events","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"pallet","schema":{"maxLength":64,"type":"string"}},{"name":"method","schema":{"maxLength":64,"type":"string"}},{"name":"block","schema":{"minimum":0,"type":"integer"}},{"name":"extrinsic","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"description":"Opaque block_number.event_index cursor returned as next_cursor; both parts are non-negative safe integers.","maxLength":33,"pattern":"^\\d+\\.\\d+$","type":"string"}},{"name":"before","schema":{"minimum":0,"type":"integer"}},{"name":"limit","schema":{"maximum":200,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain-events/stats.json","cache":"short","description":"Fetch the chain-activity aggregate — the pallet.method event distribution over the most recent N blocks the decode lane has published — from the chain_events lakehouse table. ?blocks sets the window (default 1000, capped 5000); activity is ordered by count descending (top 100). Backs the get_chain_activity MCP tool. Served live, no static file.","id":"chain-events-stats","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain-events/stats","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"blocks","schema":{"maximum":5000,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/blocks/{ref}/chain-events.json","cache":"short","description":"Fetch EVERY raw pallet-level event in one block (by numeric block_number; event_index ascending), served live from the live-follow hot tier above the decode seam and the chain_events lakehouse at or below it (no static file). This is the complete stream, so its count matches the block header's own event_count; /api/v1/blocks/{ref}/events is deliberately a SUBSET of it -- the curated account-attributed projection, which is smaller by design and not a loss. A block neither tier can read declines with a typed 503 (block_detail_unavailable) rather than an empty list, because count:0 is indistinguishable from a block that emitted nothing.","id":"block-chain-events","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/blocks/{ref}/chain-events","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/extrinsics.json","cache":"short","description":"Fetch the recent-extrinsic feed (newest first) for the block explorer; ?limit (<=100) / ?offset (or ?cursor= for stable keyset paging, #1851) and a conjunctive filter set (#1846): ?block=<n>, ?signer=, ?call_module=, ?call_function=, ?call_hash= (0x-prefixed 64-hex-char decoded call hash, requires ?call_module= to keep the JSON scan scoped — matches a Multisig approval chain's linked calls, #4322), ?success=true|false, ?block_start/?block_end (block range), ?from/?to (observed_at epoch-ms range). Pass ?format=csv to download the filtered extrinsic rows as CSV. Computed live from the first-party extrinsics D1 tier (#1345).","id":"extrinsics-feed","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/extrinsics","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"name":"block","schema":{"minimum":0,"type":"integer"}},{"name":"signer","schema":{"type":"string"}},{"name":"call_module","schema":{"type":"string"}},{"name":"call_function","schema":{"type":"string"}},{"description":"Requires call_module so the decoded call-args JSON scan stays scoped.","name":"call_hash","schema":{"pattern":"^0x[0-9a-fA-F]{64}$","type":"string"}},{"name":"success","schema":{"enum":["true","false"],"type":"string"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"from","schema":{"minimum":0,"type":"integer"}},{"name":"to","schema":{"minimum":0,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/extrinsics/{hash}.json","cache":"short","description":"Fetch per-extrinsic detail by 0x extrinsic_hash OR the composite <block_number>-<extrinsic_index> id (the guaranteed-present identifier, since the hash is best-effort/nullable). Computed live from the first-party extrinsics D1 tier (#1345/#1848); 200 with extrinsic:null when cold/unknown/malformed.","id":"extrinsic-detail","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/extrinsics/{hash}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/sudo.json","cache":"short","description":"Fetch the root-origin (Sudo pallet) call table, newest first — subtensor has no Council/Senate, so this is the extrinsics feed hardcoded to call_module='Sudo'. ?limit (<=100) / ?offset (or ?cursor= for stable keyset paging) and a conjunctive filter set: ?block=<n>, ?call_function=, ?success=true|false, ?block_start/?block_end (block range), ?from/?to (observed_at epoch-ms range). Pass ?format=csv to download the filtered rows as CSV. Computed live from the first-party extrinsics D1 tier (#4310/2.2).","id":"sudo-calls","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/sudo","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"name":"block","schema":{"minimum":0,"type":"integer"}},{"name":"call_function","schema":{"type":"string"}},{"name":"success","schema":{"enum":["true","false"],"type":"string"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"from","schema":{"minimum":0,"type":"integer"}},{"name":"to","schema":{"minimum":0,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/governance/config-changes.json","cache":"short","description":"Fetch subtensor's own root-origin hyperparameter/network-config change feed, newest first — the extrinsics feed hardcoded to call_module='AdminUtils' (re-scoped from the original Council/Senate framing; subtensor has no such pallet). ?limit (<=100) / ?offset (or ?cursor= for stable keyset paging) and a conjunctive filter set: ?block=<n>, ?call_function= (e.g. sudo_set_tempo), ?success=true|false, ?block_start/?block_end (block range), ?from/?to (observed_at epoch-ms range). Pass ?format=csv to download the filtered rows as CSV. Computed live from the first-party extrinsics D1 tier (#4310/2.3).","id":"governance-config-changes","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/governance/config-changes","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"offset","schema":{"minimum":0,"type":"integer"}},{"name":"cursor","schema":{"type":"string"}},{"name":"block","schema":{"minimum":0,"type":"integer"}},{"name":"call_function","schema":{"type":"string"}},{"name":"success","schema":{"enum":["true","false"],"type":"string"}},{"name":"block_start","schema":{"minimum":0,"type":"integer"}},{"name":"block_end","schema":{"minimum":0,"type":"integer"}},{"name":"from","schema":{"minimum":0,"type":"integer"}},{"name":"to","schema":{"minimum":0,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/networks.json","cache":"short","description":"List every addressable network and what it actually serves. For each network: its canonical id, chain name, every accepted alias, and the route families it serves, does not serve, or serves partially. Answers \"can I get chain data on testnet?\" without making a request that fails. Reachable under every network prefix (/api/v1/networks, /api/v1/testnet/networks, /api/v1/local/networks) and identical on all of them — it is the one route that never 404s on any network, because it is how you find out what does.","id":"network-capabilities","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/networks","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/runtime.json","cache":"short","description":"Fetch the spec-version transition timeline — the earliest known block at each distinct runtime spec_version, ascending by block_number. A single aggregate over the whole retained blocks window, nothing to filter or paginate. Every block from genesis to head carries a spec_version reading, so coverage_from_block/coverage_from_at and coverage_gaps describe a complete timeline rather than bounding a partial one. Computed live from the first-party blocks tier (#4316/3.1, #9265). The `current` block (#8702) adds the forward-looking half: live mainnet/testnet spec versions, the latest subtensor release, and a derived pending_upgrade state of none / testnet_soaking / released_undeployed / unknown. Every field is independently null on its own upstream failure, and a missing reading yields \"unknown\" rather than \"none\" — the two are opposite answers. No deploy date is predicted anywhere in the payload: the foundation publishes no schedule. Pass ?format=csv to download the transition timeline as CSV (the current_spec_version + coverage_from_* rollup and the `current` block stay JSON-only).","id":"runtime-versions","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/runtime","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"description":"Response format override. Use `csv` to download the transition timeline as text/csv; `json` (default) keeps the response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/activity.json","cache":"short","description":"Fetch daily network-activity aggregates (extrinsic/event/block counts, success rate, unique signers) over a 7d or 30d window, newest day first. Computed live from the first-party chain D1 tiers (#1987); schema-stable day_count:0/days:[] when the store is cold.","id":"chain-activity","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/activity","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"description":"Response format override. Use `csv` to download the daily activity series as text/csv; `json` (default) keeps the response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/calls.json","cache":"short","description":"Fetch the extrinsic call-mix breakdown (count + share per call_module, or call_module/call_function with group_by=module_function) over a 7d or 30d window, optionally scoped to one pallet with ?call_module=. When scoped, total_extrinsics and share use the scoped module denominator. Computed live from the first-party extrinsics D1 tier (#1989); schema-stable call_count:0/calls:[] when cold.","id":"chain-calls","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/calls","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"group_by","schema":{"enum":["module","module_function"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"call_module","schema":{"maxLength":100,"type":"string"}},{"description":"Response format override. Use `csv` to download the call-mix rows as text/csv; `json` (default) keeps the response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/signers.json","cache":"short","description":"Fetch the windowed most-active-account leaderboard (signers ranked by ?sort=tx_count or ?sort=total_fee_tao, with total fees/tips + newest signed block) over a 7d or 30d window, optionally scoped to one pallet with ?call_module=. Computed live from the first-party extrinsics D1 tier (#1990); schema-stable signer_count:0/signers:[] when cold.","id":"chain-signers","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/signers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"sort","schema":{"enum":["tx_count","total_fee_tao"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"call_module","schema":{"maxLength":100,"type":"string"}},{"description":"Response format override. Use `csv` to download the signer leaderboard as text/csv; `json` (default) keeps the response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/transfers.json","cache":"short","description":"Fetch network-wide native-TAO transfer analytics over a 7d or 30d window: total Balances.Transfer volume + count, distinct senders/receivers, the top senders and receivers ranked by volume (?limit, <=100), and the top senders' share of total volume. Computed live from the account_events Transfer feed; schema-stable zeros + empty leaderboards when cold. Pass ?format=csv to download the top senders and receivers as one CSV tagged by a `direction` column (the totals + top_sender_share stay JSON-only).","id":"chain-transfers","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/transfers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/transfer-pairs.json","cache":"short","description":"Fetch network-wide directed native-TAO transfer-pair analytics over a 7d or 30d window: total pairable Balances.Transfer volume + count, unique sender/receiver pairs, returned pair count, top-pair share, and top sender -> receiver pairs ranked by ?sort=volume or ?sort=count (?limit, <=100). Computed live from the account_events Transfer feed; schema-stable zeros + an empty pairs list when cold. Pass ?format=csv to download the ranked pairs as CSV (the totals + top_pair_share stay JSON-only).","id":"chain-transfer-pairs","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/transfer-pairs","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"sort","schema":{"enum":["volume","count"],"type":"string"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/stake-flow.json","cache":"short","description":"Fetch network-wide cross-subnet capital flow over a 7d or 30d window: every subnet that moved stake in the window ranked by net StakeAdded minus StakeRemoved TAO (subnets with no stake events in the window are excluded) (biggest net inflow first, ?limit <=100), with per-subnet staked/unstaked/net/gross totals and a direction label, a network rollup, and a distribution (count, mean, min, p25, median, p75, p90, max) of the per-subnet net flow. Computed live from the account_events stake stream; schema-stable zeros + empty leaderboard when cold.","id":"chain-stake-flow","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/stake-flow","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the per-subnet capital-flow leaderboard as text/csv; `json` (default) keeps the response envelope (which also carries the network rollup + net-flow distribution).","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/alpha-volume.json","cache":"short","description":"Fetch the network-wide rolling 24h buy/sell alpha-volume leaderboard: every subnet that had StakeAdded (buy) or StakeRemoved (sell) volume in the last 24h (subnets with no volume are excluded) ranked by total_volume_tao (biggest market activity first, ?limit <=100), each with the same buy/sell/total volume + sentiment scorecard as GET /api/v1/subnets/{netuid}/volume, plus a network rollup (with its own net/gross sentiment reading) and a distribution (count, mean, min, p25, median, p75, p90, max) of the per-subnet total volume. Computed live from the account_events stream; schema-stable zeros + empty leaderboard when cold. Fixed 24h window (no ?window= param), matching the per-subnet route's own framing.","id":"chain-alpha-volume","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/alpha-volume","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/weights.json","cache":"short","description":"Fetch network-wide validator weight-setting activity over a 7d or 30d window across the subnets with observed weight-setting activity (subnets with no WeightsSet events are absent): a per-subnet leaderboard (distinct weight-setting validators, WeightsSet event count, and average updates per validator) ranked by total events, a network rollup with the true distinct setter count (a validator setting weights on several subnets counts once) and total events, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet update intensity. `limit` caps the leaderboard (default 20, max 100). Computed live from the account_events WeightsSet stream; schema-stable empty block when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-weights","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/weights","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/weights/setters.json","cache":"short","description":"Fetch the network-wide weight-setter leaderboard over a 7d or 30d window: the individual validators driving consensus across every subnet ranked by activity, each with its total WeightsSet count (summed across every subnet it operates on), its share of the network total, and its first/last set time. `limit` caps the returned page (default 20, max 100); `distinct_setters` always reports the true network-wide total regardless of `limit`. The network-wide companion to GET /api/v1/subnets/{netuid}/weights/setters. Computed live from the account_events WeightsSet stream; schema-stable empty leaderboard when cold. Pass ?format=csv to download the leaderboard as CSV.","id":"chain-weight-setters","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/weights/setters","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/serving.json","cache":"short","description":"Fetch network-wide axon-serving announcement activity over a 7d or 30d window across the subnets with observed serving activity (subnets with no AxonServed events are absent): a per-subnet leaderboard (AxonServed event count, distinct servers, and average announcements per server) ranked by total announcements, a network rollup with the true distinct server count (a hotkey announcing on several subnets counts once) and total announcements, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-announcement intensity. `limit` caps the leaderboard (default 20, max 100). Computed live from the account_events AxonServed stream; schema-stable empty block when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-serving","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/serving","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/axon-removals.json","cache":"short","description":"Fetch network-wide axon-removal activity over a 7d or 30d window across the subnets with observed removal activity (subnets with no AxonInfoRemoved events are absent): a per-subnet leaderboard (AxonInfoRemoved event count, distinct removers, and average removals per remover) ranked by total removals, a network rollup with the true distinct remover count (a hotkey removing an axon on several subnets counts once) and total removals, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-teardown intensity. `limit` caps the leaderboard (default 20, max 100). The teardown-side companion to the axon-announcement GET /api/v1/chain/serving and the network-wide companion to GET /api/v1/subnets/{netuid}/axon-removals. Read from the account_events AxonInfoRemoved stream, which the runtime has never populated; an empty block is marked `degraded` rather than published as a measured zero. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-axon-removals","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/axon-removals","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/prometheus.json","cache":"short","description":"Fetch network-wide Prometheus-endpoint serving activity over a 7d or 30d window across the subnets with observed telemetry activity (subnets with no PrometheusServed events are absent): a per-subnet leaderboard (PrometheusServed event count, distinct exporters, and average announcements per exporter) ranked by total announcements, a network rollup with the true distinct exporter count (a hotkey announcing on several subnets counts once) and total announcements, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-announcement intensity. `limit` caps the leaderboard (default 20, max 100). The telemetry-endpoint companion to the axon-endpoint GET /api/v1/chain/serving — which subnets run observability infrastructure. Read from the account_events PrometheusServed stream, which carries 0 of the 18,041 PrometheusServed events the chain emitted; an empty block is marked `degraded` rather than published as a measured zero. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-prometheus","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/prometheus","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/registrations.json","cache":"short","description":"Fetch network-wide neuron-registration activity over a 7d or 30d window across the subnets with observed registration activity (subnets with no NeuronRegistered events are absent): a per-subnet leaderboard (NeuronRegistered event count, distinct registrants, and average registrations per registrant) ranked by total registrations, a network rollup with the true distinct registrant count (a hotkey registering on several subnets counts once) and total registrations, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-registration intensity. `limit` caps the leaderboard (default 20, max 100). Raw registration demand — the account_events companion to the neuron_daily validator-set churn in GET /api/v1/chain/turnover. Computed live from the account_events NeuronRegistered stream; schema-stable empty block when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-registrations","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/registrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/deregistrations.json","cache":"short","description":"Fetch network-wide neuron-deregistration activity over a 7d or 30d window across the subnets with observed deregistration activity (subnets with no NeuronDeregistered events are absent): a per-subnet leaderboard (NeuronDeregistered event count, distinct deregistered hotkeys, and average deregistrations per hotkey) ranked by total deregistrations, a network rollup with the true distinct hotkey count (a hotkey deregistered on several subnets counts once) and total deregistrations, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-deregistration intensity. `limit` caps the leaderboard (default 20, max 100). Raw deregistration/eviction activity — the exit-side companion to GET /api/v1/chain/registrations and the account_events companion to the neuron_daily validator-set churn in GET /api/v1/chain/turnover. DERIVED from UID reuse in the NeuronRegistered stream by a scheduled projection (NeuronDeregistered has never been emitted by the runtime); the payload's `derivation` block states how many window registrations had no observable previous holder, and `degraded` marks an answer nothing derived. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-deregistrations","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/deregistrations","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/stake-transfers.json","cache":"short","description":"Fetch network-wide stake-transfer activity over a 7d or 30d window across the subnets with observed transfer activity (subnets with no StakeTransferred events are absent): a per-subnet leaderboard (StakeTransferred event count, distinct senders, and average transfers per sender) ranked by total transfers, a network rollup with the true distinct sender count (an account transferring stake out of several subnets counts once) and total transfers, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet transfer intensity. `limit` caps the leaderboard (default 20, max 100). The between-coldkeys companion to the within-account re-delegation churn of GET /api/v1/chain/stake-moves — transfer_stake relocates staked alpha from one account to another on the same hotkey (origin leg only), so it moves ownership, not net capital. Computed live from the account_events StakeTransferred stream; schema-stable empty block when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-stake-transfers","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/stake-transfers","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/stake-moves.json","cache":"short","description":"Fetch network-wide stake-movement (re-delegation) activity over a 7d or 30d window across the subnets with observed movement activity (subnets with no StakeMoved events are absent): a per-subnet leaderboard (StakeMoved event count, distinct movers, and average movements per mover) ranked by total movements, a network rollup with the true distinct mover count (an account moving stake out of several subnets counts once) and total movements, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet re-move intensity. `limit` caps the leaderboard (default 20, max 100). The re-delegation-churn companion to the net-capital-flow GET /api/v1/chain/stake-flow — move_stake relocates stake between hotkeys/subnets without unstaking, so it is churn, not flow. Computed live from the account_events StakeMoved stream; schema-stable empty block when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + intensity distribution stay JSON-only).","id":"chain-stake-moves","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/stake-moves","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/fees.json","cache":"short","description":"Fetch fee/tip market analytics — a per-UTC-day fee series (totals, plus averages and exact ordered-offset medians computed over signed extrinsics only) plus a windowed top-fee-payer list — over a 7d or 30d window, optionally scoped to one pallet with ?call_module=. extrinsic_count counts every extrinsic including unsigned inherents; signed_extrinsic_count is the denominator for the averages/medians. Computed live from the first-party extrinsics D1 tier (#1988); schema-stable day_count:0 + empty lists when cold.","id":"chain-fees","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/chain/fees","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"name":"call_module","schema":{"maxLength":100,"type":"string"}},{"description":"Response format override. Use `csv` to download the daily fee series as text/csv; `json` (default) keeps the response envelope (which also carries top_fee_payers).","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/chain/concentration.json","cache":"short","description":"Fetch network-wide stake and emission concentration metrics (Gini, HHI, Nakamoto coefficient, top-percentile shares, entropy) aggregated across all subnets' neurons over three lenses (per-UID, per-entity with coldkeys collapsed across subnets into the network control distribution, and validator-only consensus power), computed live from the neurons D1 tier; schema-stable nulls when cold.","id":"chain-concentration","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/concentration","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/performance.json","cache":"short","description":"Fetch network-wide reward-distribution & score-spread metrics aggregated across all subnets' neurons: reward concentration (Gini, HHI, Nakamoto coefficient, top-percentile shares, entropy) for incentive across all neurons and dividends across validators, plus the p10–p90 spread of the 0–1 trust, consensus, and validator_trust scores, computed live from the neurons D1 tier; schema-stable nulls when cold.","id":"chain-performance","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/performance","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/idle-stake.json","cache":"short","description":"Fetch the network-wide idle-stake rollup: every subnet's own idle-stake scorecard (stake delegated to a currently-zero-dividends hotkey) ranked by idle_stake_alpha descending, plus the network total, computed live from the neurons D1 tier; schema-stable empty ranking when cold.","id":"chain-idle-stake","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/idle-stake","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/identity-history.json","cache":"short","description":"Fetch the network-wide recent subnet-identity-change feed (newest first) aggregated across all subnets: the most-recent SubnetIdentitiesV3 changes, each carrying the netuid it belongs to plus the same tracked identity fields as the per-subnet identity-history route, capped to ?limit (default 50, max 200) and reporting the distinct subnet_count the feed spans, computed from the frozen lakehouse export of subnet_identity_history; schema-stable empty feed when cold.","id":"chain-identity-history","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/identity-history","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"limit","schema":{"maximum":200,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/self-health.json","cache":"short","description":"metagraphed's OWN uptime: a verdict scoped strictly to our own components (api / site / publish) plus each one's trailing-90-day daily uptime ratios and latest probe state, served from the self_health_daily lakehouse rollup at /api/v1/self-health (no static file). Days with no probe rows are ABSENT, never zero-filled -- a gap means we weren't measuring, not that we were down. Never mixes in third-party subnet-surface health, which is what /api/v1/health covers. The per-component current_ok/http_status/latency_ms/checked_at/note fields are NULL for now, and null here means UNMEASURED, not down: the per-check ticks were written by the indexer box's self-health poller, the box is decommissioned, and only the daily rollup survived it. Synthesizing a current reading from the last frozen tick would state a probe we did not take.","id":"self-health","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/self-health","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/yield.json","cache":"short","description":"Fetch network-wide emission-yield (return rate) aggregated across all subnets' neurons: the aggregate network return (total emission / total stake), the same split by validator vs miner role, and the count/mean/median/min/max plus p10–p90 spread of the per-neuron emission/stake return, computed live from the neurons D1 tier; schema-stable nulls when cold.","id":"chain-yield","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/yield","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/chain/turnover.json","cache":"short","description":"Fetch network-wide validator-set turnover across all subnets between the window's start and end neuron_daily snapshots: a per-subnet leaderboard (validators entered, exited, Jaccard retention, and a 0-100 stability score) ranked by gross churn, a network rollup over the union of every subnet's validator hotkeys, and a distribution summary (count, mean, min, p25, median, p75, p90, max) of the per-subnet stability scores. Sort is fixed to most-volatile-first; limit caps the leaderboard (default 20, max 100). Computed live from the neuron_daily D1 rollup; schema-stable zeros when cold. Pass ?format=csv to download the per-subnet leaderboard as CSV (the network rollup + stability distribution stay JSON-only).","id":"chain-turnover","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/chain/turnover","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d","90d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Response format override. Use `csv` to download the route rows as text/csv; `json` keeps the default response envelope.","name":"format","schema":{"enum":["json","csv"],"type":"string"}}]},{"artifact_path":"/metagraph/subnets/{netuid}/uptime.json","cache":"short","description":"Fetch long-term daily uptime history per operational surface for one subnet over a 90d or 1y window (computed live from the surface_uptime_daily D1 rollup). Pass `min_samples` to drop low-sample day rows (daily probe count below the threshold, including zero-sample 'unknown' days) from the history.","id":"subnet-uptime","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/subnets/{netuid}/uptime","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["90d","1y"],"type":"string"}},{"name":"min_samples","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/registry/leaderboards.json","cache":"standard","description":"Fetch registry leaderboards computed live from D1 + registry projections + the economics tier. Operational boards: healthiest, fastest-rpc, most-complete, most-enriched, fastest-growing, most-reliable. Economic opportunity boards (for miners/validators): open-slots, cheapest-registration, highest-emission, validator-headroom, biggest-alpha-gain-1d, biggest-alpha-gain-7d. Omit `board` for all boards.","id":"registry-leaderboards","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/registry/leaderboards","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"board","schema":{"enum":["healthiest","fastest-rpc","most-complete","most-enriched","fastest-growing","most-reliable","open-slots","cheapest-registration","highest-emission","validator-headroom","biggest-alpha-gain-1d","biggest-alpha-gain-7d"],"type":"string"}},{"name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}]},{"artifact_path":"/metagraph/compare.json","cache":"standard","description":"Compare several subnets side by side across the registry structure (completeness + surface counts), the live economics tier, and the live per-subnet health rollup — one call, requested order. `netuids` is a required comma-separated list of 1-128 subnet ids; `dimensions` selects a subset of structure,economics,health (default all). Composed live (no static file); for choosing between subnets without N separate detail/economics/health fetches.","id":"compare","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/compare","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"netuids","schema":{"maxLength":767,"pattern":"^\\d{1,5}(,\\d{1,5}){0,127}$","type":"string"}},{"name":"dimensions","schema":{"type":"string"}}]},{"artifact_path":"/metagraph/compare/validators.json","cache":"standard","description":"Place several validators side by side for a stake/delegate decision: each hotkey's take rate, estimated APY, nominator count, on-chain identity, and cross-subnet stake/emission/trust aggregates. `hotkeys` is a required comma-separated list of 1-16 distinct SS58 validator addresses. `netuid` is an optional subnet context — when set, each validator also carries its membership row in that subnet (or null with no permit there). Composed live (no static file); the validator equivalent of /api/v1/compare.","id":"compare-validators","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/compare/validators","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"hotkeys","schema":{"maxLength":783,"pattern":"^[1-9A-HJ-NP-Za-km-z]{47,48}(,[1-9A-HJ-NP-Za-km-z]{47,48}){0,15}$","type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}}]},{"artifact_path":"/metagraph/domains.json","cache":"standard","description":"Fetch the per-domain rollup overview: every domain/capability tag in the existing 14-tag taxonomy, each with its member subnet count, total stake, total emission share (the sum of the stage-1 price shares, not TAO received), and within-domain emission concentration. Computed live from the subnets index + economics tier (no static file). The aggregation layer over the existing ?domain= filter on /api/v1/subnets.","id":"domains","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/domains","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/domains/{tag}/summary.json","cache":"standard","description":"Fetch one domain/capability tag's own rollup: member subnet count, total stake, total emission share (the sum of the stage-1 price shares, not TAO received), and within-domain emission concentration. `tag` must be one of the 14 fixed domain tags (the same enum ?domain= validates on /api/v1/subnets). Computed live from the subnets index + economics tier (no static file).","id":"domain-summary","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/domains/{tag}/summary","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/rpc/usage.json","cache":"short","description":"Fetch RPC reverse-proxy usage analytics — request volume, latency p50/p95, failover + error rate, cache-hit rate, per-endpoint distribution, and bounded time buckets for heatmaps — over a 7d or 30d window (computed live from D1 telemetry).","id":"rpc-usage","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/rpc/usage","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}}]},{"artifact_path":"/metagraph/freshness.json","cache":"short","description":"Fetch freshness and staleness state.","id":"freshness","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/freshness","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/source-health.json","cache":"short","description":"Fetch upstream source health.","id":"source-health","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/source-health","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/evidence-ledger.json","cache":"standard","description":"Fetch public evidence ledger.","id":"evidence","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/evidence","public":true,"query_collection":"claims","query_filter_names":[],"query_parameters":[{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["claim","source_url","subject","verified_at"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/evidence/{netuid}.json","cache":"standard","description":"Fetch public evidence ledger claims for one subnet.","id":"subnet-evidence","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/subnets/{netuid}/evidence","public":true,"query_collection":"claims","query_filter_names":[],"query_parameters":[{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["claim","source_url","subject","verified_at"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/changelog.json","cache":"short","description":"Fetch latest generated change summary.","id":"changelog","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/changelog","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/source-snapshots.json","cache":"standard","description":"Fetch source input hashes and counts.","id":"source-snapshots","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/source-snapshots","public":true,"query_collection":"sources","query_filter_names":[],"query_parameters":[{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["id","kind","path","record_count"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/rpc-endpoints.json","cache":"short","description":"Fetch Bittensor RPC endpoint status.","id":"rpc-endpoints","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/rpc/endpoints","public":true,"query_collection":"endpoints","query_filter_names":["kind","layer","netuid","pool_eligible","provider","publication_state","status"],"query_parameters":[{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"layer","schema":{"enum":["bittensor-base","data-provider","docs-provider","subnet-app"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"pool_eligible","schema":{"enum":["true","false"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"publication_state","schema":{"enum":["candidate","verified","monitored","pool-eligible","disabled","rejected"],"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"min_latency_ms","schema":{"type":"number"}},{"name":"max_latency_ms","schema":{"type":"number"}},{"name":"min_score","schema":{"type":"number"}},{"name":"max_score","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["kind","last_checked","latency_ms","layer","netuid","pool_eligible","provider","publication_state","score","status"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/rpc/pools.json","cache":"short","description":"Fetch endpoint pool scores.","id":"rpc-pools","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/rpc/pools","public":true,"query_collection":"rpc-pools","query_filter_names":["id","kind"],"query_parameters":[{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"kind","schema":{"enum":["subtensor-rpc","subtensor-wss","archive"],"type":"string"}},{"name":"min_eligible_count","schema":{"type":"number"}},{"name":"max_eligible_count","schema":{"type":"number"}},{"name":"min_endpoint_count","schema":{"type":"number"}},{"name":"max_endpoint_count","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["eligible_count","endpoint_count","id","kind"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/endpoint-pools.json","cache":"short","description":"Fetch generalized endpoint pool scores.","id":"endpoint-pools","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/endpoint-pools","public":true,"query_collection":"endpoint-pools","query_filter_names":["id","kind"],"query_parameters":[{"name":"id","schema":{"maxLength":100,"type":"string"}},{"name":"kind","schema":{"enum":["subtensor-rpc","subtensor-wss","archive"],"type":"string"}},{"name":"min_eligible_count","schema":{"type":"number"}},{"name":"max_eligible_count","schema":{"type":"number"}},{"name":"min_endpoint_count","schema":{"type":"number"}},{"name":"max_endpoint_count","schema":{"type":"number"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["eligible_count","endpoint_count","id","kind"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/endpoint-incidents.json","cache":"short","description":"Fetch probe-derived endpoint incidents.","id":"endpoint-incidents","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/endpoint-incidents","public":true,"query_collection":"endpoint-incidents","query_filter_names":["netuid","kind","provider","status","severity","state"],"query_parameters":[{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"kind","schema":{"enum":["archive","dashboard","data-artifact","docs","example","openapi","repo-registry","sdk","source-repo","sse","subnet-api","subtensor-rpc","subtensor-wss","website"],"type":"string"}},{"name":"provider","schema":{"maxLength":100,"type":"string"}},{"name":"status","schema":{"enum":["ok","degraded","failed","unknown"],"type":"string"}},{"name":"severity","schema":{"enum":["critical","warning","info"],"type":"string"}},{"name":"state","schema":{"enum":["active","resolved"],"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["detected_at","endpoint_id","kind","last_checked","netuid","provider","severity","state","status"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/incidents.json","cache":"short","description":"Fetch recent cross-subnet downtime incidents reconstructed from probe history over a 7d or 30d window (computed live from D1). Pair with /api/v1/health for the overall status summary.","id":"incidents","mainnet_only":true,"method":"GET","networks":["mainnet"],"path":"/api/v1/incidents","public":true,"query_collection":"incidents","query_filter_names":["netuid"],"query_parameters":[{"name":"window","schema":{"enum":["7d","30d"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["downtime_ms","incident_count","netuid","surface_id"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/schemas/index.json","cache":"standard","description":"Fetch captured schema index.","id":"schemas","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/schemas","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/adapters/{slug}.json","cache":"short","description":"Fetch adapter-backed public metrics.","id":"adapter","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/adapters/{slug}","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/search.json","cache":"standard","description":"Fetch compact search index.","id":"search","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/search","public":true,"query_collection":"documents","query_filter_names":["type","netuid"],"query_parameters":[{"name":"type","schema":{"enum":["subnet","surface","provider"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["netuid","slug","title","type"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/search-index.json","cache":"standard","description":"Fetch the slim search index — the same documents as /search without the per-document token blobs, for fast browser typeahead and listing.","id":"search-index","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/search-index","public":true,"query_collection":"documents","query_filter_names":["type","netuid"],"query_parameters":[{"name":"type","schema":{"enum":["subnet","surface","provider"],"type":"string"}},{"name":"netuid","schema":{"minimum":0,"type":"integer"}},{"name":"q","schema":{"maxLength":200,"type":"string"}},{"name":"fields","schema":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*(,[A-Za-z_][A-Za-z0-9_]*)*$","type":"string"}},{"name":"limit","schema":{"maximum":1000,"minimum":1,"type":"integer"}},{"name":"cursor","schema":{"minimum":0,"type":"integer"}},{"description":"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.","name":"sort","schema":{"enum":["netuid","slug","title","type"],"type":"string"}},{"description":"Sort direction for `sort`: `asc` or `desc` (default `desc`). This is a separate parameter from `sort` — e.g. `?sort=emission_share&order=desc`.","name":"order","schema":{"enum":["asc","desc"]}}]},{"artifact_path":"/metagraph/contracts.json","cache":"standard","description":"Fetch artifact contract metadata.","id":"contracts","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/contracts","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/openapi.json","cache":"standard","description":"Fetch OpenAPI 3.1 contract.","id":"openapi","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/openapi.json","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]},{"artifact_path":"/metagraph/build-summary.json","cache":"short","description":"Fetch generated build summary.","id":"build","mainnet_only":false,"method":"GET","networks":["finney","mainnet","test","testnet"],"path":"/api/v1/build","public":true,"query_collection":null,"query_filter_names":[],"query_parameters":[]}],"schema_version":1,"type_definitions_url":"/metagraph/types.d.ts"},"meta":{"artifact_path":"/metagraph/api-index.json","cache":"standard","contract_version":"2026-07-03.2","generated_at":"2026-08-05T09:59:06.676Z","published_at":"2026-08-05T09:59:06.676Z","source":"static-assets"}}