Operator and live (/api/streamer/*)
GET /api/streamer/signal?handle= public · the active overlay SIGNAL → { marketId, name, yesPct, streamerId, slug, updatedAt, annotation?, closesAt? } | { marketId: null }POST /api/streamer/signal session or dk_ · { marketId, name, yesPct?, slug?, annotation?, closesAt? }DELETE /api/streamer/signal clears the caller's own overlay
GET /api/streamers/live public · { live: [{ handle, hlsUrl, viewers, signal: { marketId, name } | null }], recent }GET /api/streamer/receipts?handle= public · session receipts incl. END CARD recapPOST /api/live/[handle]/clip session · MARK ▸ 30 s (Mux; cooldown 120 s, 10/day)POST /api/streamer/stream Privy JWT · provision Mux ingest (approved operators)… analytics · heartbeat · recap · register · me · profile · stream/stateThe OBS browser source is https://denpa.ai/overlay/[handle]. The public viewer page is https://denpa.ai/live/[handle] (chat, moderation, MARK / REPLAY, CO-SIGN / FADE).