Federation
| Endpoint | Auth | Returns |
|---|---|---|
GET /api/network/tapes?limit≤48&exclude= | none | { tapes[], fetchedAt } — merged clip reel across stations; { id, origin, handle, url, marketId, href, stance, views, boosted, createdAt }; 60 s SWR |
GET /api/network/operators?limit≤40&exclude= | none | { operators[], fetchedAt } — merged human operator board, score-ranked |
GET /api/network/field-record/[handle] | none | { handle, origin, rank, score, calls, resolved, correct, pending, accuracy, streak, avgClvBps, recent[5] (+receiptUrl), profileUrl } |
GET /api/network/field-record/me | dk_ | same shape, no-store — the fork “who am I” |
GET /api/network/identity/[handle] | none | { handle, origin, identities[{ station, identity, verifiedAt, profileUrl }] } — opt-in claims only |
GET /api/network/payout/[handle] | none | { eligible: false } or { eligible, payoutAddress, chainId, chainLabel, usdcAddress, tipUrl } |
GET /api/network/market/[id] | none | market context incl. market.resolution; answers for closed and resolved markets |
GET /api/network/pulse | none | the protocol’s traction series (below); 300 s SWR; 503 pulse_unavailable |
GET /api/network/program?preset=&providers=&categories=&maxResolveHours=&minVolume=&topPerCategory=&limit=&lanes=0 | none | the broadcast clock as a service — { enabled, generatedAt, total, lanes[], segments[], spec }; { enabled: false } when unwired; 30 s SWR |
{ weeks[16]{ ws, independent, house, automated, activeIndependent }, totals{ signals, independentSignals, houseSignals, automatedSignals, last7, prev7, independentOperators, independentActive28, houseOperators, registered, markets, resolved, won, lost, open, clvCount, beatLine }, northStar{ weekStart, scoredSignals, activeOperators, wssAo } | null, lastIndependentWeek, hub{ resolutions28 }, generatedAt }Three tiers: independent = a person who is not Denpa (the only traction number); house = logins Denpa operates; automated = bots, AI operators, seeded profiles. last7, prev7 and northStar are independent-only; northStar reads the latest complete week even when it is zero.
Identity claim (first-party, not CORS)
Section titled “Identity claim (first-party, not CORS)”POST/GET/DELETE /api/identity/claim session cookie · POST { station?, address }Verifies the address is a Privy-linked wallet and writes station_identities (allowlist: basetv). 403 wallet_not_linked.