τTaosis

Public API

Everything on this site is served by a JSON API you can call directly. No key, no sign-up, no quota to negotiate. It is the same API the site itself uses, so it cannot silently fall behind what you see here.

Base URL

https://taosis.com/api/backend

Example

curl https://taosis.com/api/backend/markets/subnets

The one rule that matters

null means unknown, never zero. A figure Taosis could not verify comes back as null, and a probability it cannot support is absent rather than 0. Code that treats null as 0 will state something false — a subnet with no observed registrations is not a subnet with no deregistration risk. The full contract.

Markets

Subnet prices, reserves and market columns — one row per subnet, refreshed every few minutes.

GET/markets/subnets

Every subnet: α price, 24h/7d move, reserves, APR, 24h volume, emission, tempo, swap fee, owner keys.

GET/markets/subnets/{netuid}

One subnet's full market row.

GET/markets/subnets/{netuid}/ohlc?hours=

OHLC candles from Taosis's own price sampling.

GET/markets/subnets/{netuid}/chart?hours=

Price series for charting.

GET/markets/stats

Network totals, with indexed_since saying when Taosis started counting.

GET/markets/tao-usd

TAO/USD rate.

note External source, display only — never used in a chain calculation.

GET/markets/trades?limit=

Recent indexed pool fills.

Risk

The questions no other Bittensor API answers — and the ones most likely to return null on purpose.

GET/markets/dereg

The deregistration prune queue: rank, immunity, live registration lock cost.

GET/markets/simulate/dereg/{netuid}

Modelled deregistration probability for one subnet.

note null when too few registrations have been observed to estimate one. null is NOT zero risk.

GET/markets/conviction/{netuid}

Locked α, matured conviction and progress toward the 18% ownership takeover threshold.

GET/markets/simulate/conviction/{netuid}?alpha=&days=&perpetual=

Project a lock forward using the runtime's own decay function.

GET/markets/holders/{netuid}

Holders and concentration: HHI, Nakamoto coefficient, top-10 share, Gini.

note Carries reconciled:false when the totals did not agree with the chain's α supply — treat the metrics as unverified when it does.

GET/markets/attribution/{netuid}?hours=

Decompose a price move into trading versus emission, exactly.

note Publishes a residual and an explained flag; explained:false means the named causes cover under 90% of the move.

Validators

Yields computed from the chain, and the track record behind them.

GET/validators?limit=

Every delegate: take, total stake in τ, nominator count, daily return per 1000 τ.

GET/validators/top?netuid=&limit=

Best-yield validators on one subnet, safe default first.

GET/validators/reliability/{netuid}/{hotkey}

Has this validator actually paid, consistently: paying ratio, median APR, spread, permit losses, stake trend.

note Verdict is "insufficient" until the observed series is long enough. The chain keeps no past epochs, so this cannot be backfilled.

Accounts & subnets

Anything an address holds is public on-chain data — no key and no wallet connection.

GET/accounts/{ss58}

What an address is (coldkey or hotkey, classified from chain evidence) and what it holds: balance, α positions with average buy price, delegated stake, recent fills, plain-language history.

GET/portfolio/positions?address=

α positions for one address.

GET/portfolio/pnl?address=&method=wac|fifo

Cost basis and P&L with a coverage model.

note States coverage per position; below full coverage the figure is marked partial rather than guessed.

GET/markets/metagraph/{netuid}

A subnet's hyperparameters and its top neurons by reward.

Blocks

The block explorer. Old blocks come from the public archive on demand — one connection, cached hard.

GET/explorer/blocks?limit=

Blocks Taosis has indexed, newest first, with the fills in each.

note This is our index, not the chain's head — indexed_from/indexed_to bound what we have actually seen.

GET/explorer/block/{number}

One block: hash, parent, chain timestamp, every extrinsic (module, call, signer, result) and every event.

note An extrinsic whose result we could not determine returns success:null — that is not the same as false. A block we cannot read returns 404 with a reason, never an empty block.

News & status

GET/news?netuid=&limit=&types=

Indexed Bittensor and subnet news.

GET/news/stats

Counts by source type and the most active subnets.

GET/status

Freshness of every data source behind the site.

GET/health

Liveness.

Fair use

There is no key and no hard quota, but the origin is rate-limited per IP. If you need a heavy or sustained pull, cache on your side — most of this data only changes every few minutes, and the status page tells you exactly how often each source refreshes.

For LLM agents

Taosis also ships an MCP server exposing these reads as tools, with the null-is-not-zero contract stated in each tool description. It is deliberately read-only: it cannot sign, spend, place an order or cancel one. It lives at apps/mcp in the repository.