{"ok":true,"schema_version":1,"data":{"contract_version":"2026-07-03.2","generated_at":"2026-09-20T12:26:49.169Z","name":"ConnitoAI","netuid":102,"schema_version":1,"slug":"sn-102","surfaces":[{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-102-backprop-dashboard","key":"srf-81d5ee79deb156a5","kind":"dashboard","last_verified_at":null,"name":"ConnitoAI Backprop Finance dashboard","netuid":102,"notes":"Universal Backprop Finance dTAO subnet dashboard candidate. Third-party enrichment, not protocol authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"backprop-finance","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":true,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://backprop.finance/dtao/subnets/102-connitoai"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://backprop.finance/dtao/subnets/102-connitoai"},{"auth_required":false,"authority":"community","curation_level":"machine-verified","id":"sn-102-connito-blocks-until-next-phase","key":"srf-9513416c561ee2be","kind":"subnet-api","last_verified_at":"2026-09-20T04:31:09.312Z","name":"Connito phase countdown","netuid":102,"notes":"Public no-auth GET returning the training-cycle phase schedule (Distribute, Train, MinerCommit1/2, Submission block ranges). Documented in the subnet's own OpenAPI schema.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"jsonbored"},"source_urls":["https://cycle-api.connito.ai/blocks_until_next_phase"],"stale":false,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/blocks_until_next_phase"},{"auth_required":false,"authority":"community","curation_level":"machine-verified","id":"sn-102-connito-data-artifact","key":"srf-1db8fa8f44703ff9","kind":"data-artifact","last_verified_at":"2026-09-20T04:31:09.312Z","name":"ConnitoAI previous phase block ranges","netuid":102,"notes":"Public no-auth GET /previous_phase_blocks on cycle-api.connito.ai returning the block-height range of each named phase (Distribute, Train, MinerCommit1/2, Submission, Validate, Merge, ValidatorCommit1/2) in the prior training cycle. Documented in the subnet's own OpenAPI schema (already-registered sn-102-connito-phase-openapi surface); same cycle-api.connito.ai host as the existing /get_phase surface. Cloudflare WAF in front of cycle-api.connito.ai may challenge simple automated probes from datacenter IPs; the endpoint is on the official phase-oracle host queried by miners and validators.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"philluiz2323"},"source_urls":["https://cycle-api.connito.ai/openapi.json"],"stale":false,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/previous_phase_blocks"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-102-connito-init-peer-id","key":"srf-1ce803d9b629ab56","kind":"subnet-api","last_verified_at":null,"name":"Connito init peer ID","netuid":102,"notes":"Public no-auth GET returning the current initial peer ID list for the training swarm. Documented in the subnet's own OpenAPI schema.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"jsonbored"},"source_urls":["https://cycle-api.connito.ai/get_init_peer_id"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/get_init_peer_id"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-102-connito-phase-get-phase","key":"srf-c4487bb641ff5adc","kind":"subnet-api","last_verified_at":null,"name":"ConnitoAI SN Owner phase API","netuid":102,"notes":"Public no-auth GET /get_phase on cycle-api.connito.ai returning the current training-cycle phase JSON (block height, phase_name, cycle_length, blocks_remaining_in_phase). Default owner_url in official Connito CycleCfg (config.py) and hard-pinned in miner-config.md; documented in the SN Owner Phase API reference. Cloudflare WAF in front of cycle-api.connito.ai may challenge simple automated probes from datacenter IPs; the endpoint is the official phase oracle queried by miners and validators.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"bohdansolovie"},"source_urls":["https://cycle-api.connito.ai/openapi.json","https://github.com/Connito-AI/Connito/blob/master/connito/shared/config.py","https://connito.ai/docs/reference/sn-owner-api"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/get_phase"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-102-connito-phase-openapi","key":"srf-b4d9cb8d3d7823c2","kind":"openapi","last_verified_at":null,"name":"ConnitoAI SN Owner Phase API OpenAPI schema","netuid":102,"notes":"Machine-readable OpenAPI 3.x schema for the Connito SN102 SN Owner Phase Service (FastAPI title: Phase Service). Served at cycle-api.connito.ai; documents no-auth cycle-coordination routes such as GET /get_phase and GET /blocks_until_next_phase per the official SN Owner Phase API reference. Cloudflare WAF in front of cycle-api.connito.ai may challenge simple automated probes from datacenter IPs; miners and validators use this host as the locked owner_url in official configuration.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"bohdansolovie"},"schema_status":"machine-readable","schema_url":"https://cycle-api.connito.ai/openapi.json","source_urls":["https://github.com/Connito-AI/Connito/blob/master/connito/shared/config.py","https://github.com/Connito-AI/Connito/blob/master/docs/miner-faq/miner-config.md","https://connito.ai/docs/reference/sn-owner-api"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/openapi.json"},{"auth_required":false,"authority":"community","curation_level":"machine-verified","id":"sn-102-connito-phase-status","key":"srf-73db68d7b5ea23ce","kind":"subnet-api","last_verified_at":"2026-09-20T04:31:09.312Z","name":"Connito phase service status","netuid":102,"notes":"Public no-auth GET / on cycle-api.connito.ai returning a service-status payload with the static training-cycle configuration (cycle_length, ordered phases array with name/length per phase). Documented in the subnet's own OpenAPI schema. Distinct from /get_phase (the current live phase) and /blocks_until_next_phase (a countdown) -- this is the static cycle-shape definition plus a liveness message. Cloudflare WAF in front of cycle-api.connito.ai may challenge simple automated probes from datacenter IPs; the endpoint is on the official phase-oracle host queried by miners and validators.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"jsonbored"},"source_urls":["https://cycle-api.connito.ai/openapi.json"],"stale":false,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-102-connito-source","key":"srf-dc2bf947d9144410","kind":"source-repo","last_verified_at":"2026-07-16T00:00:00.000Z","name":"ConnitoAI source repository","netuid":102,"notes":"Official ConnitoAI source repository.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"connito","public_safe":true,"source_urls":["https://github.com/Connito-AI/Connito"],"stale":false,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://github.com/Connito-AI/Connito"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-102-connito-validator-whitelist","key":"srf-0f1afd19b8e9e50e","kind":"subnet-api","last_verified_at":null,"name":"Connito validator whitelist","netuid":102,"notes":"Public no-auth GET returning the current list of whitelisted validator hotkeys. Documented in the subnet's own OpenAPI schema.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"connito","public_safe":true,"review":{"state":"community-submitted","submitted_by":"jsonbored"},"source_urls":["https://cycle-api.connito.ai/get_validator_whitelist"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://cycle-api.connito.ai/get_validator_whitelist"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-102-connito-website","key":"srf-ed3b257dcd2bce15","kind":"website","last_verified_at":"2026-07-16T00:00:00.000Z","name":"ConnitoAI website","netuid":102,"notes":"Official ConnitoAI website.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"connito","public_safe":true,"source_urls":["https://github.com/Connito-AI/Connito"],"stale":false,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://connito.ai/"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-102-subnetradar-dashboard","key":"srf-b00f14fad331556d","kind":"dashboard","last_verified_at":null,"name":"ConnitoAI SubnetRadar dashboard","netuid":102,"notes":"Universal SubnetRadar subnet dashboard candidate. Third-party risk/market analytics enrichment, not Metagraphed endpoint health authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"subnetradar","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://subnetradar.com/subnet/102"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://subnetradar.com/subnet/102"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-102-taomarketcap-dashboard","key":"srf-a5579b13723764ff","kind":"dashboard","last_verified_at":null,"name":"ConnitoAI TaoMarketCap dashboard","netuid":102,"notes":"Universal TaoMarketCap subnet dashboard candidate. Third-party enrichment, not protocol authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"taomarketcap","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://api.taomarketcap.com/public/v1/subnets/102"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://taomarketcap.com/subnets/102"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-102-taopedia-article","key":"srf-147e458600cfbd01","kind":"docs","last_verified_at":null,"name":"ConnitoAI Taopedia article","netuid":102,"notes":"Discovered from the public Taopedia article repository. Not verified as an operational interface.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"taopedia-articles","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"community-docs","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://github.com/e35ventura/taopedia-articles/blob/main/content/pages/subnet_102/index.mdx"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://github.com/e35ventura/taopedia-articles/blob/main/content/pages/subnet_102/index.mdx"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-102-tensorplex-docs","key":"srf-6771dc0ccede8100","kind":"docs","last_verified_at":null,"name":"ConnitoAI Tensorplex subnet docs","netuid":102,"notes":"Discovered from Tensorplex subnet-docs. Useful as documentation enrichment, not verified operational authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"tensorplex-subnet-docs","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"community-docs","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://github.com/tensorplex-labs/subnet-docs/blob/main/data/102/subnet.json"],"stale":null,"subnet_name":"ConnitoAI","subnet_slug":"sn-102","url":"https://github.com/tensorplex-labs/subnet-docs/tree/main/data/102"}]},"meta":{"artifact_path":"/metagraph/surfaces/102.json","cache":"standard","contract_version":"2026-07-03.2","generated_at":"2026-09-20T12:26:49.169Z","published_at":"2026-09-20T12:26:49.169Z","source":"r2","pagination":{"collection":"surfaces","total":14,"returned":14,"limit":14,"cursor":0,"next_cursor":null,"sort":null,"order":"asc"}}}