Bittensor Intelligence docs
Structured, searchable intelligence across every Bittensor subnet โ profiles, people, repositories, media claims, datasets and cross-message memory. One API, one console.
Every console surface is a plain HTTP endpoint that returns JSON. Public health and spend endpoints need no key; the full data platform is unlocked with a single API-key header. This guide takes you from your first request to production.
Quickstart
The API is served from your deployment host (locally http://127.0.0.1:8017). Public endpoints respond immediately:
# Check platform health โ no key required curl "http://127.0.0.1:8017/health" # Live service quality snapshot curl "http://127.0.0.1:8017/ops/service-quality"
To reach the data platform, pass your key in the X-API-Key header:
curl "http://127.0.0.1:8017/v2/subnets" \ -H "X-API-Key: $BTI_API_KEY"
Authentication
Authenticated routes expect a single request header:
| Header | Value | Notes |
|---|---|---|
X-API-Key | Your account API key | Required for all non-public routes. |
Public routes that need no key: /health, /ops/health, /ops/service-quality, and /ops/spend/summary. Everything under /v2, /assistant, /insights, /knowledge and /twitter requires a key.
Core concepts
netuid.Subnet intelligence
The v2 surface is object-first โ request a subnet and receive a fully-formed intelligence object:
curl "http://127.0.0.1:8017/v2/subnets/64/context" \ -H "X-API-Key: $BTI_API_KEY"
Related routes: /v2/subnets/{netuid}/timeline, /v2/subnets/{netuid}/claims, /v2/subnets/{netuid}/evidence and /v2/subnets/{netuid}/report. See the API Reference for full schemas.
Memory & search
Search the normalized corpus for facts, people, events and claims:
curl "http://127.0.0.1:8017/memory/search?q=liquidity+subnet" \ -H "X-API-Key: $BTI_API_KEY"
Resolve a specific record with /memory/person/{id}, /memory/subnet/{netuid}, /memory/event/{id} or /memory/fact/{id}.
Streaming events
Subscribe to live updates over Server-Sent Events:
const es = new EventSource("/events", { withCredentials: true }); es.onmessage = (e) => console.log("event", e.data);
Errors & rate limits
Errors are returned as JSON with a stable shape and a matching HTTP status code:
{
"error": "unauthorized",
"detail": "Missing or invalid X-API-Key"
}
| Status | Meaning |
|---|---|
200 | Success. |
401 | Missing or invalid API key. |
404 | Resource not found. |
422 | Request validation failed. |
503 | Backing service temporarily unavailable. |
SDKs & snippets
The API is plain HTTP + JSON, so any HTTP client works. Below are ready-to-run snippets.
Python
import os, httpx client = httpx.Client( base_url="http://127.0.0.1:8017", headers={"X-API-Key": os.environ["BTI_API_KEY"]}, ) r = client.get("/v2/subnets/64/context") r.raise_for_status() print(r.json())
Node / TypeScript
const res = await fetch("http://127.0.0.1:8017/v2/subnets", { headers: { "X-API-Key": process.env.BTI_API_KEY! }, }); const data = await res.json(); console.log(data);
cURL
curl "http://127.0.0.1:8017/insights/stats" \ -H "X-API-Key: $BTI_API_KEY"