Keep current wins and the number of wins still needed on top of the game. Same numbers as the Score Counter overlay, the score hotkeys and any Control-a-goal action.
Reset Counter files a session here.
Pop out opens it in a small window - in the Windows app it stays on top of the game. Click a number to type one in. Reset Counter files the session under the history and starts from zero. To move the numbers from viewers, put a Control a goal action on a gift, aimed at Score Counter (top) for current wins or (bottom) for wins needed; the keys come from Setup → Hotkeys.
A bonus round: while it runs, everything viewers set off counts for more.
A multiplier repeats whatever a trigger does, so it fits every action without any setting of its own: a gift that sends 10 soldiers sends 20 on x2, points and subathon seconds double, and a keystroke is pressed twice. Gift combos still count on top, up to the engine's own cap.
To let viewers start one, add the Start the multiplier action to an event under Actions & Events and pick the multiplier and the seconds there. To put it on stream, add the Multiplier overlay under Overlays and paste its link into OBS as a browser source.
Segments that run actions. Spin one from here, or give it a gift and let the room spin it.
Loading…
The name is what the overlay writes above the cards, so call a wheel whatever you like and the stream sees it. A gift here makes an action and an event for you, and they sit on the Actions page like any other - open them there to add a cooldown or limit who can spin. A wheel switched off is skipped, however it is set off.
One spot clicked on repeat, or a queue of positions clicked in turn - left, right or middle, single or double. F6 starts, F7 stops, F8 toggles while it is open.
One spot clicks wherever the pointer is (or a fixed X/Y) every interval, forever or N times. Queue runs the list top to bottom with a pause after each and starts over for every repeat (0 = until stopped). Pick gives you three seconds to put the pointer on the spot, then reads it. Pop out keeps it on top of the game in the Windows app. Settings are kept on this PC.
A countdown your viewers extend by interacting.
Loading…
A like target that drains if viewers stop tapping.
Loading…
Drop points into chat for viewers to claim.
Loading…
Set a target and a clock. Your viewers have until it runs out to get there.
Add the Challenge overlay from the Overlays gallery to put this on stream.
Each gift is worth less than the one before it, so being first actually matters.
What the next qualifying gift is worth.
Build your own game integrations and bots against the local websocket.
Every livestream event arrives as {"event": "...", "data": {...}}. The shape only ever changes additively, so a plugin written today keeps working.
const socket = new WebSocket('ws://127.0.0.1:21213/?service=MyMod&version=1.0');
socket.onmessage = ({ data }) => {
const { event, data: payload } = JSON.parse(data);
if (event === 'gift') {
console.log(payload.uniqueId, payload.giftName, payload.repeatCount);
}
};
// Optional: only receive what you care about.
socket.onopen = () => socket.send(JSON.stringify({
action: 'subscribe',
events: ['gift', 'chat']
}));A tool that answers these four endpoints on port 8832 shows up directly in the action editor, so creators can pick your actions without any extra setup.
GET http://127.0.0.1:8832/api/app/info GET http://127.0.0.1:8832/api/features/categories GET http://127.0.0.1:8832/api/features/actions?categoryId=... POST http://127.0.0.1:8832/api/features/actions/exec
The exec call carries a triggerTypeId telling you what fired it:
Read-only status is open to any local process on http://127.0.0.1:21212/: useful for asking whether the creator is live. Anything that changes state needs the session token, so a random web page cannot drive the app.
To start a room through this API, accept the current Terms and connect once in the panel after opening the app. The local API can then reuse that verified session. If it expires, reconnect in the panel or provide a fresh Supabase authToken in the request body.
GET /api/healthno authLivenessGET /api/statusno authSessions and connected clientsGET /api/gifts?uniqueId=no authGift catalogue for a roomPOST /api/connecttokenConnect after accepting Terms in the panel; a new app session needs one panel connection first, or an authToken in the request bodyPOST /api/disconnecttokenDisconnectPOST /api/simulatetokenInject a fake eventPOST /api/actions/exectokenRun one action