The cell stream is a 16-byte header then 8 bytes per die; The Stack has the byte layout. The Stack page polls it every 20 s with from set to the dies it already holds; the home page polls /api/stack at the same rate.
Boards
Route
Params
Returns
CDN cache
Errors
GET /api/leaderboard
board: class (needs class), daily (default), weekly, efficiency
Up to 50 rows, best run per operator
10 s, swr 60 s
400 class required, unknown board
GET /api/classes
none
Per class: runs, operators, median score and read, best, published peak
20 s, swr 120 s
none
GET /api/rewards
operator, 16 hex, optional
{ season, standings }; with operator also { summary, standing }
10 s, swr 60 s; no-store with operator
400 invalid operator
Token
Route
Params
Returns
CDN cache
Errors
GET /api/token
none
Phase, token, launch, market, holders, 24 h volume
10 s, swr 60 s
503 unavailable
GET /api/token/trades
limit, 1 to 100, default 30
Newest trades: side, amounts, trader, time
5 s, swr 30 s
none
GET /api/token/chart
range: 1h, 24h, 7d or all
OHLC candles of execution price, with volume
15 s, swr 60 s
none
GET /api/token/holders
none
{ count, top }, labelled protocol addresses
30 s, swr 120 s
none
GET /api/wallet
operator, 16 hex
{ wallet } linked to the operator, with its balance
no-store
400 bad-operator
POST /api/wallet
{ key, address, issuedAt, signature }
{ wallet }
no-store
400 bad input or expired; 401 signature-mismatch; 429 rate-limited
Network and claims
Route
Params
Returns
CDN cache
Errors
GET /api/network
none
{ totals, proof, instant, epochs, contracts, rules }: live network state, as on /network
{ ok, tx, url, status }: an earlier daily pool claim, sent gas-free by the relayer to the wallet itself
no-store
403 region or attest; 404 not-found; 409 not-claimable, not-relayable, below-minimum; 429 daily-limit, wallet-limit, rate-limited; 503 relay-off, low-balance. Refusals carry fallback: true when the wallet can still claim itself
POST /api/claims/attest
{ address, issuedAt, signature }
{ attested }
no-store
400 bad input or expired; 401 signature-mismatch; 403 region; 429 rate-limited
Leaf, sibling path, day root and transaction; or { status: pending | ineligible }
60 s; 1 h once anchored
404 not-found; 503 unavailable
A claim item's state is claimable, claimed, pending (the epoch waits for funding), expired, or attest. Stock Token items, including the daily pool, are left out for requests from the United States, and carry a proof only after the wallet has signed the attestation once. To claim, call claim(id, account, amount, proof) on the rewards contract; a weekly epoch id is uint256(keccak256(abi.encode(season, token))) and a daily one is uint256(keccak256(abi.encode("daily", dayIndex, token))), with dayIndex in whole UTC days since 1970. Items marked relay can be sent gas-free with POST /api/claims/relay.
// The message a wallet signs for POST /api/claims/attest (issuedAt within 10 minutes)
HBM: Stock Token rewards attestation
I am not a US person, and I will not claim Stock Token rewards from the United States.
Wallet: 0x…
Chain: Robinhood Chain (4663)
Issued: 2026-09-28T09:00:00.000Z
Signing is free and does not send a transaction.
Inference
Route
Params
Returns
CDN cache
Errors
GET /api/v1/inference/estimate
model, gpu (class id or name), quant (default q4), ctx (default 4096), batch (default 1), gpus (1 to 8), vram (GB per GPU, optional)
Fit, VRAM needed against available, decode tokens/s from measured and published bandwidth, best GPUs
60 s, swr 300 s
400 invalid-model, invalid-quant, invalid-gpu, invalid-ctx, invalid-batch, invalid-gpus, invalid-vram, each with valid values; 429 rate-limited
GET /api/v1/inference/models
none
Models with parameters, active parameters, layers, max context, source; weight formats
60 s, swr 300 s
429 rate-limited
GET /api/v1/inference/gpus
none
GPU classes with memory, published and measured bandwidth, verified runs
60 s, swr 300 s
429 rate-limited
Versioned, keyless and open to any origin (Access-Control-Allow-Origin: *). Names match loosely: gpu=4090, gpu="RTX 4090" and gpu=nvidia-rtx-4090 are the same class. Memory is in binary GB. The method is on the Inference page.
GET /api/v1/inference/estimate?model=llama-3.1-70b&quant=q4&gpu=rtx-4090
{
"fits": false,
"vram_needed_gb": 43.9,
"vram_available_gb": 24,
"memory": { "weights_gb": 39.9, "kv_cache_gb": 1.25, "overhead_gb": 2.81 },
"decode_tok_s": { "measured": null, "spec": 22.8 }, // per stream; measured once the class has verified runs
"batch_tok_s": 22.8, // all streams, from the bandwidth named in source
"source": "Published peak bandwidth", // or "HBM verified runs, class median"
"runs": 0,
"best_gpus": ["Instinct MI300X", "H200 SXM", "H100 SXM", "A100 SXM 80GB", "H100 PCIe"],
"best": [{ "id", "name", "vram_gb", "decode_tok_s", "source", "runs" }, …],
"model": { … }, "quant": { … }, "gpu": { … }, "ctx": 4096, "batch": 1
}
Operations
Route
Params
Returns
CDN cache
Errors
GET /api/health
none
{ ok, db, ms }
no-store
503 database unavailable
Rate limits count per instance, in memory: 40 tickets and 24 submissions per hour per client address, 60 submissions per day per operator, 30 claim lookups per minute per client address, 120 inference requests per minute per client address.