{"ok":true,"schema_version":1,"data":{"agent_readiness":{"blocker_level":"missing-data","blockers":[{"code":"unclear-auth","field":"auth","message":"Callable services exist, but auth requirements are not fully machine-readable.","next_action":"Declare auth_required/auth_schemes or capture auth metadata from the service schema.","severity":"missing-data"},{"code":"missing-docs","field":"docs_url","message":"No public documentation link is recorded.","next_action":"Add an official docs URL or document that no public docs exist.","severity":"missing-data"}],"missing_fields":["auth","docs_url"],"status":"callable"},"categories":["baseline-augmented","baseline-curated","finance","identity-reviewed","official-source-repo","official-website"],"completeness_score":93,"contract_version":"2026-07-03.2","example_count":0,"examples":[],"generated_at":"2026-07-27T10:51:25.049Z","integration_readiness":93,"name":"Synth","netuid":50,"readiness":{"components":{"active_lifecycle":true,"auth_clarity":false,"callable_now":true,"documented":true,"has_callable_api":true,"has_candidate_api":true,"has_public_docs":false,"has_source_repo":true,"profile_complete":true},"readiness_tier":"buildable","readiness_version":2,"score":93,"readiness_verified":true},"schema_version":1,"service_count":32,"services":[{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/limitless/15min","capability":"Synth GET insights limitless 15min","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/limitless/15min on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/limitless/15min' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/limitless/15min\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/limitless/15min\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-limitless-15min"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/limitless/daily","capability":"Synth GET insights limitless daily","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/limitless/daily on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/limitless/daily' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/limitless/daily\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/limitless/daily\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-limitless-daily"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/limitless/hourly","capability":"Synth GET insights limitless hourly","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/limitless/hourly on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/limitless/hourly' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/limitless/hourly\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/limitless/hourly\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-limitless-hourly"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/liquidation","capability":"Synth GET insights liquidation","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/liquidation on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/liquidation' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/liquidation\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/liquidation\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-liquidation"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/lp-bounds","capability":"Synth GET insights lp bounds","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/lp-bounds on api.synthdata.co. Live-verified 2026-07-21: an unauthenticated request returns HTTP 400 {\"message\":\"missing key in request header\"}. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/lp-bounds' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/lp-bounds\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/lp-bounds\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-lp-bounds"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/lp-probabilities","capability":"Synth GET insights lp probabilities","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/lp-probabilities on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/lp-probabilities' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/lp-probabilities\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/lp-probabilities\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-lp-probabilities"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/option-pricing","capability":"Synth GET insights option pricing","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/option-pricing on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/option-pricing' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/option-pricing\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/option-pricing\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-option-pricing"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/above/daily","capability":"Synth GET insights polymarket above daily","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/above/daily on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/above/daily' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/above/daily\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/above/daily\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-above-daily"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/hit/daily","capability":"Synth GET insights polymarket hit daily","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/hit/daily on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/hit/daily' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/hit/daily\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/hit/daily\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-hit-daily"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/range","capability":"Synth GET insights polymarket range","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/range on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/range' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/range\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/range\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-range"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/range/daily","capability":"Synth GET insights polymarket range daily","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/range/daily on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/range/daily' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/range/daily\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/range/daily\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-range-daily"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/up-down/15min","capability":"Synth GET insights polymarket up down 15min","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/up-down/15min on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/up-down/15min' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/up-down/15min\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/up-down/15min\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-up-down-15min"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/up-down/5min","capability":"Synth GET insights polymarket up down 5min","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/up-down/5min on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/up-down/5min' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/up-down/5min\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/up-down/5min\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-up-down-5min"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/up-down/daily","capability":"Synth GET insights polymarket up down daily","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/up-down/daily on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/up-down/daily' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/up-down/daily\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/up-down/daily\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-up-down-daily"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/polymarket/up-down/hourly","capability":"Synth GET insights polymarket up down hourly","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/polymarket/up-down/hourly on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/polymarket/up-down/hourly' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/polymarket/up-down/hourly\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/polymarket/up-down/hourly\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-polymarket-up-down-hourly"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/prediction-percentiles","capability":"Synth GET insights prediction percentiles","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/prediction-percentiles on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/prediction-percentiles' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/prediction-percentiles\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/prediction-percentiles\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-prediction-percentiles"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\".","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/insights/volatility","capability":"Synth GET insights volatility","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /insights/volatility on api.synthdata.co. Live-verified 2026-07-21: an unauthenticated request returns HTTP 400 {\"message\":\"missing key in request header\"}. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/insights/volatility' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/insights/volatility\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/insights/volatility\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-insights-volatility"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"official","base_url":"https://api.synthdata.co/v2/meta-leaderboard/latest","capability":"Synth meta-leaderboard API","description":"Public no-auth GET /v2/meta-leaderboard/latest on api.synthdata.co, returning the current meta-model leaderboard (neuron_uid, rewards, coldkey, ip_address) -- distinct from the per-miner /v2/leaderboard/latest surface already tracked. Discovered via a full diff of the subnet's own Swagger schema for undiscovered public GET endpoints.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-50-synth-meta-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.synthdata.co/v2/meta-leaderboard/latest"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-50-synth-meta-leaderboard.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":4608,"last_ok":"2026-07-27T22:00:18.291Z","last_checked":"2026-07-27T22:00:18.291Z","stale":false,"observed_by":"live-cron-prober"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/meta-leaderboard/latest'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/meta-leaderboard/latest\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/meta-leaderboard/latest\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-meta-leaderboard"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/swagger.json","capability":"Synth API OpenAPI spec","description":"Public Swagger 2.0 spec for the Synth API (48 unauthenticated GET endpoints — probabilistic price forecasts, market insights, leaderboards). The official synth-subnet README documents the API docs at api.synthdata.co/docs.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer"],"live_status":"unknown"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-50-synth-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.synthdata.co/swagger.json"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-50-synth-openapi.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"openapi","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"surface-id","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/swagger.json'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/swagger.json\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/swagger.json\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-openapi"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/rewards/scores","capability":"Synth GET rewards scores","description":"GET /rewards/scores on api.synthdata.co — public, no auth. Required query params: from, to. Live-verified 2026-07-21 with a real, valid parameter set. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/rewards/scores'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/rewards/scores\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/rewards/scores\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-rewards-scores"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/leaderboard/latest","capability":"Synth API","description":"Public no-auth REST API at api.synthdata.co exposing Synth's probabilistic price forecasts, leaderboards, and market insights; the /v2/leaderboard/latest endpoint returns JSON with no authentication. Documented in the official synth-subnet README. Rejects HEAD (405); probe uses GET.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-50-synth-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.synthdata.co/v2/leaderboard/latest"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-50-synth-subnet-api.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":109,"last_ok":"2026-07-27T22:00:18.291Z","last_checked":"2026-07-27T22:00:18.291Z","stale":false,"observed_by":"live-cron-prober"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/leaderboard/latest'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/leaderboard/latest\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/leaderboard/latest\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-subnet-api"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/leaderboard/historical","capability":"Synth GET v2 leaderboard historical","description":"GET /v2/leaderboard/historical on api.synthdata.co — public, no auth. Required query params: start_time, end_time. Live-verified 2026-07-21 with a real, valid parameter set. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/leaderboard/historical'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/leaderboard/historical\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/leaderboard/historical\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-leaderboard-historical"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/meta-leaderboard/historical","capability":"Synth GET v2 meta leaderboard historical","description":"GET /v2/meta-leaderboard/historical on api.synthdata.co — public, no auth. Required query params: start_time. Not individually curled — no auth declared in the schema, same as the verified public query-param endpoints above. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/meta-leaderboard/historical'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/meta-leaderboard/historical\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/meta-leaderboard/historical\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-meta-leaderboard-historical"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\". Also requires query params: asset, time_increment, time_length.","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/prediction/best","capability":"Synth GET v2 prediction best","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /v2/prediction/best on api.synthdata.co. Live-verified 2026-07-21: an unauthenticated request returns HTTP 400 {\"message\":\"missing key in request header\"}. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/prediction/best' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/prediction/best\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/prediction/best\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-prediction-best"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\". Also requires query params: miner, asset, start_time, time_increment, time_length.","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/prediction/historical","capability":"Synth GET v2 prediction historical","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /v2/prediction/historical on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/prediction/historical' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/prediction/historical\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/prediction/historical\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-prediction-historical"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\". Also requires query params: miner, asset, time_increment, time_length.","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/prediction/latest","capability":"Synth GET v2 prediction latest","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /v2/prediction/latest on api.synthdata.co. Live-verified 2026-07-21: an unauthenticated request returns HTTP 400 {\"message\":\"missing key in request header\"}. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/prediction/latest' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/prediction/latest\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/prediction/latest\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-prediction-latest"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger 2.0 schema: a required `Authorization` header parameter (not a formal OpenAPI `security` block — Synth's own convention), example value \"Apikey MY_API_KEY\". Also requires query params: asset.","value_format":"Apikey <key>"},"auth_required":true,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/v2/prediction/metamodel/historical","capability":"Synth GET v2 prediction metamodel historical","description":"Auth-gated (API key via required Authorization header, Phase 3 credential passthrough, not built yet) GET /v2/prediction/metamodel/historical on api.synthdata.co. Not individually curled — same required `Authorization` header as the verified `sn-50-synth-insights-volatility` (400 \"missing key in request header\"), declared identically in the schema. Path/shape from the subnet's own Swagger schema; registered per the registry's full-API-parity policy (metagraphed#7063) even though it isn't callable by the anonymous Phase-1 call_subnet_surface tool today.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown","auth-required"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture skips credentialed services","status":"auth-required"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/v2/prediction/metamodel/historical' \\\n  -H 'Authorization: Apikey <key>'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/v2/prediction/metamodel/historical\", headers={\"Authorization\": \"Apikey <key>\"})\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/v2/prediction/metamodel/historical\", {\n  headers: { \"Authorization\": \"Apikey <key>\" },\n});\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-v2-prediction-metamodel-historical"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/validation/miner","capability":"Synth GET validation miner","description":"GET /validation/miner on api.synthdata.co — public, no auth. Required query params: uid. Live-verified 2026-07-21 with a real, valid parameter set. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/validation/miner'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/validation/miner\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/validation/miner\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-validation-miner"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/validation/prompts","capability":"Synth GET validation prompts","description":"GET /validation/prompts on api.synthdata.co — public, no auth. Required query params: from, to, time_increment, time_length. Not individually curled — no auth declared in the schema, same as the verified public query-param endpoints above. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/validation/prompts'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/validation/prompts\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/validation/prompts\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-validation-prompts"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/validation/realized-path","capability":"Synth GET validation realized path","description":"GET /validation/realized-path on api.synthdata.co — public, no auth. Required query params: start_time, time_increment, time_length. Not individually curled — no auth declared in the schema, same as the verified public query-param endpoints above. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/validation/realized-path'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/validation/realized-path\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/validation/realized-path\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-validation-realized-path"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/validation/scores/latest","capability":"Synth latest validation scores dataset","description":"Public no-auth GET /validation/scores/latest on api.synthdata.co returning a JSON dataset of the latest per-miner, per-asset forecast validation scores for the SN50 Synth price-prediction network (miner_uid, asset, prompt_score, crps, scored_time, time_length). Documented as a security-free GET (\"Validations - Latest Scores\") in the subnet's registered OpenAPI spec at api.synthdata.co/swagger.json; distinct from the leaderboard subnet-api surface on the same host. Rejects HEAD (404); probe uses GET. Verified 200 application/json.","eligibility":{"callable":true,"reasons":["not-bittensor-base-layer"],"live_status":"ok"},"fixture":{"artifact_path":"/metagraph/fixtures/sn-50-synth-validation-scores.json","captured_at":"2026-07-27T10:51:25.372Z","request":{"method":"GET","url":"https://api.synthdata.co/validation/scores/latest"},"response":{"content_type":"application/json","status":200}},"fixture_status":{"artifact_path":"/metagraph/fixtures/sn-50-synth-validation-scores.json","captured_at":"2026-07-27T10:51:25.372Z","reason":null,"status":"available"},"health":{"status":"ok","classification":"live","latency_ms":107,"last_ok":"2026-07-27T22:00:18.291Z","last_checked":"2026-07-27T22:00:18.291Z","stale":false,"observed_by":"live-cron-prober"},"kind":"data-artifact","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"schema-url","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/validation/scores/latest'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/validation/scores/latest\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/validation/scores/latest\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-validation-scores"},{"auth":null,"auth_required":false,"auth_schemes":[],"authority":"community","base_url":"https://api.synthdata.co/validation/scores/historical","capability":"Synth GET validation scores historical","description":"GET /validation/scores/historical on api.synthdata.co — public, no auth. Required query params: from, to. Not individually curled — no auth declared in the schema, same as the verified public query-param endpoints above. Registered with the fixed base url (no query string baked in) per the registry's full-API-parity policy (metagraphed#7063) — already callable today via call_subnet_surface's own query argument. probe.enabled:false is the safer default here: an auto-probe with no query params would just 400.","eligibility":{"callable":false,"reasons":["not-bittensor-base-layer","status-unknown"],"live_status":"unknown"},"fixture_status":{"artifact_path":null,"captured_at":null,"reason":"fixture capture only samples enabled GET probes","status":"non-get"},"health":{"status":"unknown","classification":null,"latency_ms":null,"last_ok":null,"last_checked":null,"stale":false,"observed_by":"unavailable"},"kind":"subnet-api","provider":"synth","schema_artifact":"/metagraph/schemas/sn-50-synth-openapi.json","schema_source":{"artifact":"/metagraph/schemas/sn-50-synth-openapi.json","hash":"bc41fa70270bc8f1a7d638bfaaa5b69578a558fbf4bb592b78972117f2ab6e5f","match":"same-origin-openapi","observed_at":"2026-07-27T10:51:25.372Z","status":"captured","surface_id":"sn-50-synth-openapi","url":"https://api.synthdata.co/swagger.json"},"schema_status":"machine-readable","schema_url":"https://api.synthdata.co/swagger.json","snippets":{"curl":"curl -sS 'https://api.synthdata.co/validation/scores/historical'","python":"import requests\n\nresp = requests.get(\"https://api.synthdata.co/validation/scores/historical\")\nresp.raise_for_status()\nprint(resp.json())","typescript":"const resp = await fetch(\"https://api.synthdata.co/validation/scores/historical\");\nif (!resp.ok) throw new Error(`HTTP ${resp.status}`);\nconst data = await resp.json();"},"surface_id":"sn-50-synth-validation-scores-historical"}],"slug":"sn-50","subnet_type":"application","operational_observed_at":"2026-07-27T22:00:18.291Z","health_source":"live-cron-prober"},"meta":{"artifact_path":"/metagraph/agent-catalog/50.json","cache":"standard","contract_version":"2026-07-03.2","generated_at":"2026-07-27T10:51:25.049Z","published_at":"2026-07-27T10:51:25.049Z","source":"live-cron-prober","operational_observed_at":"2026-07-27T22:00:18.291Z"}}