vdo-streamdeck

VDO.Ninja API Action Map for Stream Deck

This file maps the VDO.Ninja API surface into native Stream Deck plugin actions.

Local reference sources:

External reference:

Companion parity details and API transport/state details are split out into:

Connection Model

VDO.Ninja side:

Plugin side:

State and Feedback Inputs

Use these API actions for feedback:

Action Purpose
getDetails Broad page/session state. Use for connected streams, guest labels, scene membership, muted/videoMuted/speaker state, director flag, and UI-derived state.
getGuestList Guest slot to stream ID/label mapping. Useful for property inspector dropdowns and dynamic titles.
getStats Quick per-stream stats. Useful for bitrate/health display actions.
requestStats Detailed stats when an operator explicitly wants diagnostics. Do not poll aggressively by default.

Feedback to support first:

Core Action Catalog

Local Controls

Stream Deck action VDO action Target Value
Local Mic mic none true, false, toggle
Local Camera camera none true, false, toggle
Local Speaker speaker none true, false, toggle
Local Playback Volume volume none 0 to 200
Local Record record none true, false
Screen Share togglescreenshare none none
Raise Hand togglehand / raisehand none none
Hang Up hangup none none
Reload Page reload none none
Force Keyframe forceKeyframe none none
Bitrate bitrate none true, false, integer kbps
Buffer Delay setBufferDelay none milliseconds in value; optional stream ID/UUID/* in value2 or target
Tally Light tallylight none onair, active, standby, off, or integer
Active Speaker activeSpeaker none toggle, false, 1, 2, 3
Send Chat sendChat none message
Show Local Overlay showChatOverlay none message

Layout, Slides, and Timers

Stream Deck action VDO action Target Value
Switch Layout layout none 0, false, integer, or layout object
Next Slide nextSlide none none
Previous Slide prevSlide none none
Start Room Timer startRoomTimer none or guest seconds
Pause Room Timer pauseRoomTimer none or guest none
Stop Room Timer stopRoomTimer none or guest none

Note: current local runtime confirms lowercase pauseRoomTimer. Older docs mention PauseRoomTimer, but the native plugin should send the lowercase action.

Group and View Group Controls

Stream Deck action VDO action Target Value
Toggle Self Group group none 1 to 8
Join Self Group joinGroup none 1 to 8
Leave Self Group leaveGroup none 1 to 8
Toggle View Group viewGroup none 1 to 8
Join View Group joinViewGroup none 1 to 8
Leave View Group leaveViewGroup none 1 to 8
Toggle Guest Group group guest slot or stream ID 1 to 8

Director Guest Controls

Targets can be a guest slot/position or a stream ID. Stream IDs are more stable; slots are easier for users.

Stream Deck action VDO action Value
Transfer Guest forward destination room
Activate Queued Guest activateQueuedGuest none
Toggle Guest in Scene addScene scene ID/name
Set Guest Scene State addScene or setScene scene ID/name plus value2=true/false
Toggle Guest Mic in Scene muteScene optional true/false; current runtime toggles the guest mute-scene control rather than selecting a scene by value
Toggle Guest Mic mic true, false, toggle, or none for legacy toggle
Toggle Guest Speaker speaker true, false, toggle, or none
Toggle Guest Display/Blind display optional boolean/toggle
Guest Volume volume 0 to 200
Hang Up Guest hangup none
Solo Talk soloChat none
Two-way Solo Talk soloChatBidirectional none
Guest Highlight soloVideo none or true/false/toggle
Guest Force Keyframe forceKeyframe none
Guest Overlay Message sendDirectorChat / sendPinnedDirectorChat message
Guest Mirror mirror / mirrorGuest / remoteMirror true, false, toggle
Guest Rotate rotate true, false, 90, 180, 270
Guest PGM Channel channel / pgm 0, 1, 2
Guest Mix Order mixorder -1 or 1
Refresh Guest Video refreshVideo / refreshCamera none
Refresh Guest Connection refreshConnection / restartConnection none
Recover Guest Stream recoverStream / refreshAll none
Request Resolution requestResolution WIDTHxHEIGHT
Request Aspect Ratio requestAspectRatio decimal or 16:9; use value2 for max dimension
Set Width setWidth integer
Set Height setHeight integer
Set Aspect Ratio setAspectRatio decimal

Plugin compatibility note: the current runtime exposes the scene-state extension above, but the Stream Deck plugin uses legacy scene aliases and state-aware addScene toggles so pre-v30.1 pages do not depend on it. Its mute-all action similarly fans out the established targeted mic command instead of requiring the newer wrapper.

PTZ Mapping

Local Camera PTZ

These control the local camera attached to the VDO.Ninja page opened with the API key:

Control Relative action Absolute mode
Zoom zoom with decimal value value2: "abs" and value 0.0 to 1.0
Focus focus with decimal value value2: "abs" if supported
Pan pan with decimal value value2: "abs" if supported
Tilt tilt with decimal value value2: "abs" if supported
Exposure exposure with value 0.0 to 1.0 local-only based on current docs

Guest-Targeted Director PTZ

When controlling a guest as director/co-director, use the explicit ptz* or remote* actions:

Control Preferred VDO action Notes
Guest Zoom ptzZoom Add value2: "abs" for absolute moves.
Guest Focus ptzFocus Send ptzAutofocus: false before manual focus presets.
Guest Pan ptzPan Supports relative and absolute patterns in ptz.html.
Guest Tilt ptzTilt Supports relative and absolute patterns in ptz.html.
Guest Autofocus ptzAutofocus Values: true, false, manual, off.

Important: plain zoom, focus, pan, tilt, and exposure are local actions. They are not the guest-targeted director control names.

Suggested Default Profiles

Mini / Pedal

15-Key Stream Deck / Neo

XL / + XL Director

Stream Deck + / + XL Dials

Red Flags to Validate