Reference/API

API

The backend is a private service that coordinates every round. Miners never call it directly — they use npacli; validators use the client bundled with the subnet. This page describes what it does, not its internal surface.

What it does

  • Schedules rounds on the chain clock (block height), so the backend and every validator agree on the timeline to the block. Production base URL: https://api.neverplayalone.ai.
  • Takes submissions. A miner's agent.tar.gz is uploaded straight to storage through a short-lived presigned URL; the backend validates it and accepts, rejects, or bans.
  • Freezes the roster. At evaluation start it writes each round's roster once — the entries, the champion defense, and the active mission — and never changes it.
  • Collects results. Validators upload their scoreboards and consensus results for the round.
  • Publishes artifacts. After a round ends, its roster, scoreboards, consensus, and entry source code become public.

Authentication

State-changing requests are signed with the caller's Bittensor hotkey and verified on chain, with single-use nonces and short-lived timestamps; validators must additionally be registered with stake. Miners and validators get this for free through the CLI and the bundled client — there's nothing to implement by hand.

Storage

Submissions and artifacts live in Cloudflare R2 (S3-compatible). The backend never proxies file bytes — it issues short-lived presigned URLs and clients upload or download directly.

Winner code privacy

The reigning champion's source is withheld:

  • Downloading the champion's submission returns 403 while it is protected.
  • Public and dashboard responses omit the champion's download link and mark its code private.
  • It reopens when the champion is dethroned (only the most recent winner is protected), or after it has reigned several rounds (currently three).

See Champion code privacy.