◈ DENPA · SIGNAL PROTOCOL
BUILD ON THE
SIGNAL LAYER
Denpa is a live attention engine for television and culture. The protocol exposes operator field records, AURA-ranked signal feeds, and embeddable market intelligence — read access, no signup required.
SANDBOX →API DOCS ↗OPENAPI JSON ↗
L1 PRIMITIVES
OPERATOR ATOM
Machine-readable field record per handle. Identity, signal history, live market, resolved moments.
GET /api/operator/:handle
SIGNAL FEED
AURA-ranked live market attention scores. Updated continuously from Polymarket + editorial weights.
GET /api/v1/signals/external
MOMENTS
Collectible artifacts minted on correct calls at favorable odds. Tiered: COMMON → LEGENDARY.
GET /api/operator/:handle → moments[]
SIGNAL BOARD
Ranked operator leaderboard by broadcast score. Embeddable as iframe for any site or OBS source.
GET /api/operator/leaderboard
MARKET CLOCK
Markets scheduled into a real-clock rundown of segments — the programming layer. Filterable into channels (FilterSpec presets). Powers the /tv smart-TV / kiosk surface: market = show, segment = attention window, clock = schedule.
GET /api/broadcast/program?preset=
QUICK START
# Fetch an operator field record
curl https://denpa.ai/api/operator/oracle

# Response
{
  "handle": "oracle",
  "rank": "FIELD OPERATOR",
  "stats": {
    "totalCalls": 24,
    "resolvedCalls": 18,
    "accuracy": 67,
    "score": 48
  },
  "liveSignal": {
    "marketId": "...",
    "name": "Will X happen?",
    "yesPct": 73
  },
  "_meta": {
    "atomVersion": "1.0",
    "embedUrl": "https://denpa.ai/operator/oracle/embed"
  }
}
LIVE ENDPOINTS
base: denpa.ai
METHOD
PATH
AUTH
GET
/api/operator/:handleOperator atom — identity, stats, live signal, moments
PUBLIC
GET
/api/operator/leaderboardSignal board — ranked by broadcast score
PUBLIC
GET
/api/v1/signals/externalAURA signal feed — top live market attention
PUBLIC
GET
/api/polymarket/featuredFeatured market tiles — editorial + AURA ranked
PUBLIC
GET
/api/polymarket/marketsAll active Polymarket markets (Gamma-normalized)
PUBLIC
GET
/api/broadcast/programMarket clock — lanes + time-positioned segments (?preset=hot|resolving|close); powers /tv
PUBLIC
WS
wss://…/wsLive feed — leaderboard, chat, AURA ticks
PUBLIC
All GET endpoints are public. No auth required for read access.
EMBED GENERATOR
Drop into any page or OBS browser source. No auth, no cookies, no JS required on the host.
<iframe
  src="https://denpa.ai/operator/your-handle/embed"
  width="320" height="520"
  frameborder="0" style="border:none"
></iframe>
API KEYS
FREE TIER · 60 REQ/MIN
LOADING…
BUILDERS
Building an overlay, signal skin, analytics dashboard, or integration? Apply for Builder access — get listed in the directory and unlock higher rate limits.
APPLY TO BUILD →
CURRENT INTEGRATIONS — OPEN
No integrations listed yet. Be first.
PROTOCOL FORKS
OWN SURFACE · DENPA BACKEND
A fork owns its surface and theme; markets, signals and the broadcast clock resolve through these APIs. Clone one as a starting point.
DENPA IPTV · FORK ZEROSOURCE ↗
Prediction television: every market category a channel — zapper, now-playing screen, live YES/NO chart, EPG. Ceefax / static-TV skin over live denpa signals.
polymarket/featured · polymarket/history · v1/signals/leaderboard · broadcast/schedule
FORK THE PROTOCOL · 101
REST · CORS · NO SDK
A fork is a vertical on the same engine — own surface + theme, all data resolving through denpa.ai over plain REST (CORS-open, no auth for reads, no npm SDK). Clone the reference fork, or hand an AI the agent brief below.
1 · QUICKSTART
# Clone the reference fork — it already wires every protocol API
# and ships the static-TV broadcast placeholder. ~60 seconds to live.
git clone https://github.com/bananaemojiii/denpa-fork-zero
cd denpa-fork-zero
cp .env.example .env      # endpoints prefilled — denpa.ai + api service
npm install
npm run dev               # → http://localhost:5173
2 · FOR AI AGENTS (CLAUDE CODE) — PASTE THIS
# Asked to "fork the Denpa protocol"? Follow this exactly.

# DATA — all reads are public REST over HTTPS, CORS-enabled.
# There is NO npm SDK and NO auth for reads. Do not block first paint on a
# WebSocket; poll REST every 30s. (A panel stuck on "loading…" means you wired
# a non-existent SDK / dead socket — use these endpoints instead.)
GET denpa.ai/api/polymarket/featured              # heatmap tiles
GET denpa.ai/api/broadcast/schedule?cat=sport     # schedule (buckets + programs)
GET denpa.ai/api/polymarket/history?market_id=ID  # YES price history (chart)
GET api-production-802f5.up.railway.app/api/v1/signals/leaderboard?operators=human

# RULES
# - A fork owns its surface + theme; it must NOT reimplement Signal / Market /
#   User / Outcome — those resolve through denpa.ai (Layer 14).
# - Always render the static-TV <NoSignal/> for loading / empty / error states.
# - Reads are public; SIGNAL writes go through the API service (API-key gated).

# NEW VERTICAL? Ask the user only what you cannot infer, then build:
#   1. Name + vertical?  (sport / music / crypto / culture / film / news …)
#   2. Theme — reuse the Ceefax teletext skin, or custom colors + font?
#   3. Standalone repo, or an app inside the denpa monorepo?
# Then edit CHANNELS + theme in src/lib/denpa.ts and src/App.tsx. That's it.
3 · STATIC-TV BROADCAST PLACEHOLDER — <NoSignal/>
// <NoSignal/> — premade static-TV broadcast placeholder. Render for any
// loading / empty / error state so a fork never dead-loads. Pure CSS, no assets.
export function NoSignal({ caption = "TUNING…" }: { caption?: string }) {
  const css =
    "@keyframes ns-flicker{0%,100%{opacity:.5}9%{opacity:.35}53%{opacity:.4}}" +
    "@keyframes ns-roll{to{background-position:0 6px}}";
  const noise =
    "repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0,rgba(0,0,0,.1) 1px,rgba(255,255,255,.04) 2px,rgba(0,0,0,.08) 3px)";
  return (
    <div style={{ position:"relative", height:280, background:"#0a0a0a", overflow:"hidden", display:"grid", placeItems:"center" }}>
      <style>{css}</style>
      <div style={{ position:"absolute", inset:"-10%", backgroundImage:noise, backgroundSize:"100% 4px", opacity:.5, mixBlendMode:"screen", animation:"ns-flicker 2.4s steps(2) infinite" }} />
      <div style={{ position:"absolute", inset:0, backgroundImage:"linear-gradient(#3333 50%,transparent 50%)", backgroundSize:"100% 6px", opacity:.4, animation:"ns-roll 8s linear infinite" }} />
      <div style={{ position:"relative", textAlign:"center", fontFamily:"monospace" }}>
        <div style={{ color:"#fff", fontWeight:900, letterSpacing:".3em" }}>NO SIGNAL</div>
        <div style={{ marginTop:".5rem", color:"#a0a0a0", fontSize:".7rem", letterSpacing:".14em" }}>{caption}</div>
      </div>
    </div>
  );
}
DENPA · SIGNAL PROTOCOL · v1
SANDBOX →SIGNAL BOARD →