Docs

🧠 API Reference

REST- und WebSocket-Schnittstellen für Streamer-Integrationen.

Auth

Alle Endpunkte verwenden deine Nova Session (Keycloak) – Login über /login.

REST

Profil

GET /api/streaming/me Antwort (gekürzt):

{
  "ok": true,
  "session": { "userId": "..." },
  "profile": {
    "kcUserId": "...",
    "flags": { "approvedStreamer": true },
    "twitch": { "connected": true, "login": "..." },
    "overlay": { "token": "..." },
    "limits": { "crateCooldownSec": 60, "xpCooldownSec": 120, "voteCooldownSec": 180 }
  }
}

Overlay-Token rotieren

POST /api/overlay/rotate Antwort:

{ "ok": true, "token": "..." }

WebSocket (Overlay)

Overlay verbindet sich mit dem Nova-WS (URL siehst du im Dashboard). Query-Parameter:

?kcUserId={USER_ID}&token={OVERLAY_TOKEN}

Events (Server → Overlay)

// Channel Points: Gift Crate
{ "type": "crate.drop", "by": "viewerLogin", "pos": { "x": 0, "y": 0 }, "meta": { "reward": "Gift Crate" } }

// Gift Sub Bomb → XP Boost
{ "type": "xp.boost", "by": "viewerLogin", "count": 5, "durationSec": 60 }

// Chat Voting start/stop
{ "type": "vote.start", "options": ["A", "B"], "durationSec": 30 }
{ "type": "vote.end", "winner": "A", "counts": { "A": 42, "B": 17 } }

Commands (Overlay → Server)

{ "op": "pong" }
{ "op": "vote", "choice": "A" }

Rate-Limits & Cooldowns werden serverseitig erzwungen.