Documentation

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.

๐Ÿงญ New here?
Start with the Quickstart โ€” a live call in under a minute.
โš™๏ธ Need endpoints?
Jump to the API Reference for every route and schema.

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"
Grab a key from the Console โ†’ Billing tab. Keys are scoped to your account and can be revoked at any time.

Authentication

Authenticated routes expect a single request header:

HeaderValueNotes
X-API-KeyYour account API keyRequired 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

Subnets
Object-first v2 profiles: context, timeline, claims and evidence per netuid.
Entities & people
Normalized person and organization records with neighborhood graphs.
Memory
Cross-message facts, events and claims searchable over the whole corpus.
Insights
Aggregate stats, topics and trends computed across sources.

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"
}
StatusMeaning
200Success.
401Missing or invalid API key.
404Resource not found.
422Request validation failed.
503Backing 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"
Ready for the full surface? Head to the API Reference โ†’