Professional control made simple - no MIDI required!
Tired of limited control in other streaming platforms? VDO.Ninja's API lets you create a professional control setup using your Elgato StreamDeck. Switch between layouts, control cameras, manage guests - all with simple HTTP GET requests!
First, choose a unique API key. This key links your StreamDeck commands to your VDO.Ninja mixer session. It should be hard for others to guess.
Open your VDO.Ninja Mixer page in your browser, adding your API key as a URL parameter. Replace `YOUR_UNIQUE_API_KEY` with the key you chose in Step 1:
If your mixer URL already has other parameters (e.g., `?room=MyRoom`), add the API key with an ampersand (`&`):
This allows the mixer page to listen for commands associated with your API key.
On your Stream Deck, you'll create buttons that send HTTP GET requests to the VDO.Ninja API.
The recommended method for simplicity is using the Stream Deck's built-in "Website" action:
Understanding the API URL Structure:
The general format for the VDO.Ninja API URLs you'll use is:
YOUR_UNIQUE_API_KEY: The key from Step 1.action: The command to perform (e.g., `layout`, `mic`, `camera`).target: Who or what the action applies to. For self-control in the mixer or for layout changes, this is often `null`. For guest control, it could be a guest slot number (e.g., `1`, `2`).value: The specific setting for the action (e.g., a layout number like `0` or `1`, or `toggle`, `true`, `false`).If a parameter like `target` or `value` is not needed for a specific command, it's often represented by `null` in the URL path. Do not use double slashes (//) if a middle parameter is `null`. Always include `null` as part of the path.
Assign these URLs to Stream Deck "Website" actions to switch VDO.Ninja Mixer layouts. Remember to replace `YOUR_UNIQUE_API_KEY`.
These commands control your own VDO.Ninja instance (the one with the `?api=` parameter). The `target` is `null` as these actions apply to the VDO.Ninja instance itself.
| Button Label (Suggestion) | URL Command (for StreamDeck "Website" action) | Function |
|---|---|---|
| đ¤ Mute/Unmute Mic | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/mic/null/toggle |
Toggle your microphone on/off |
| đš Mute/Unmute Cam | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/camera/null/toggle |
Toggle your camera on/off |
| đ´ Start Record | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/record/null/true |
Start recording (local) |
| âšī¸ Stop Record | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/record/null/false |
Stop recording (local) |
| â Toggle Hand | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/togglehand/null/null |
Raise/lower your hand |
If you are using the Director role and have guests in slots, you can control them. Replace `SLOT_NUMBER` with the guest's slot (e.g., `1`, `2`, etc.).
| Button Label (Suggestion) | URL Command (Example for Guest in Slot 1) | Function |
|---|---|---|
| Mute Guest 1 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/mic/1/toggle |
Toggle Guest 1's microphone |
| Cam Off Guest 1 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/camera/1/false |
Turn Guest 1's camera off |
| Add Guest 1 to Scene 0 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/addScene/1/0 |
Toggle Guest 1 in/out of Scene 0 (Auto-Mix/Main Scene) |
| Hangup Guest 2 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/hangup/2/null |
Disconnect guest in slot 2 |
VDO.Ninja offers many more API commands. For a comprehensive list, please refer to the official API documentation (often found on the Companion-Ninja GitHub or VDO.Ninja docs).
Here are a few more examples of what's possible:
| Function | URL Command (replace `YOUR_UNIQUE_API_KEY`, `GUEST_SLOT`, `SCENE_ID`) |
|---|---|
| Add Guest in Slot 1 to Scene 0 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/addScene/1/0 |
| Mute Guest in Slot 1 in Scene 0 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/muteScene/1/0 |
| Function | URL Command (replace `YOUR_UNIQUE_API_KEY`, `GROUP_ID`) |
|---|---|
| Join Group 1 (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/joinGroup/null/1 |
| Leave Group 2 (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/leaveGroup/null/2 |
| Toggle Self in/out of Group 3 | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/group/null/3 |
| Function (Self Camera) | URL Command (replace `YOUR_UNIQUE_API_KEY`) |
|---|---|
| Zoom In (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/zoom/null/0.1 |
| Zoom Out (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/zoom/null/-0.1 |
| Pan Left (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/pan/null/-0.1 |
| Pan Right (Self) | https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/pan/null/0.1 |
https://api.vdo.ninja/YOUR_UNIQUE_API_KEY/zoom/1/0.1
Here are some ideas for StreamDeck button layouts. Remember, you need to create each of these using the "Website" action and the corresponding API URLs as detailed in Step 3.
(These are visual examples of how your StreamDeck might look. Each is a "Website" action.)
(These are visual examples of how your StreamDeck might look. Each is a "Website" action.)
With these StreamDeck controls, you now have powerful, tactile command over your VDO.Ninja Mixer sessions. No more frantic clicking through menus during a live production â just press a button for instant control!
Remember: Always keep your API key secure and never share it publicly. Ensure the VDO.Ninja Mixer page with the `?api=` parameter is open in your browser for the commands to work.