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.
