---
title: "Stream Deck Companion Module"
url: "https://support.sardius.media/knowledge-base/stream-deck-companion-module"
category: "Stream Deck"
updated: 2026-09-24
summary: "Control Sardius Live events directly from a Stream Deck — create broadcasts, extend event time, end streams, and switch channels without ever touching your computer. What You'll Need Before getting started, make sure you have: A Stream Deck device (any model) Bitfocus Companion — free software that…"
---

# Stream Deck Companion Module

**Control Sardius Live events directly from a Stream Deck** — create broadcasts, extend event time, end streams, and switch channels without ever touching your computer.

</aside>

## What You'll Need

Before getting started, make sure you have:

- A **Stream Deck** device (any model)
- [**Bitfocus Companion**](https://bitfocus.io/companion) — free software that bridges your Stream Deck and Sardius. Download and install it first.
- Your **Sardius API Key** — found in your Sardius account settings
- Your **Sardius Account ID** — found in your Sardius account settings

---

## Part 1 — Getting Your Sardius Credentials

Before installing anything, you'll need two pieces of information from your Sardius account: an **API Key** and your **Account ID**. These are what the Stream Deck module uses to connect to your channels.

![CleanShot 2026 09 05 at 13.19.312x](https://support.sardius.media/kb-media/735ce9a586a2b08a36f3.png)

![CleanShot 2026 09 05 at 13.20.382x](https://support.sardius.media/kb-media/38bec0d3b173d0770633.png)

![CleanShot 2026 09 05 at 13.21.472x](https://support.sardius.media/kb-media/de91386af0409b8a84c0.png?width=400)

![CleanShot 2026 09 05 at 13.22.462x](https://support.sardius.media/kb-media/229b78db5c2aa769b02e.png)

Copy your API Key — you'll need it in the next step.

![CleanShot 2026 09 05 at 13.23.392x](https://support.sardius.media/kb-media/8843e114e1305e19dee5.png)

![CleanShot 2026 09 05 at 13.24.212x](https://support.sardius.media/kb-media/2017e882beb4c450f088.png)

Copy your Account ID as well. You'll need both values when setting up the module in Companion.

> **Warning:** **Keep your API Key private.** It grants access to create and modify live events on your account. Don't share it or put it in public documents.

---

## Part 2 — Installation & Setup

### Step 1: Install Bitfocus Companion

Bitfocus Companion is the free software that connects your Stream Deck to external tools like Sardius. Download and install it from [bitfocus.io/companion](https://bitfocus.io/companion). It runs on both Mac and Windows.

Once installed, open Companion — it runs as a background app and opens its interface in your browser at `http://localhost:8000`.

![CleanShot 2026 09 05 at 12.43.392x](https://support.sardius.media/kb-media/b42fd26df877556b92fa.png)

### Step 2: Add the Sardius Module

1. In Companion, click **Connections** in the left sidebar
2. Click **+ Add connection**
3. In the search box, type **Sardius**
4. Click **Add** next to _Sardius Live_

![CleanShot 2026 09 05 at 12.44.552x](https://support.sardius.media/kb-media/d06a0bc62280486b915f.png)

### Step 3: Enter Your Credentials

After adding the module, a settings panel opens. Fill in:

- **API Key** — Paste your Sardius Stream Deck API key
- **Account ID** — Paste your Sardius account identifier

Then click **Save.**

![CleanShot 2026 09 05 at 12.51.242x](https://support.sardius.media/kb-media/b645505794e9b652a064.png)

### Step 4: Confirm the Connection

In your Connections list, the Sardius Live module should show a **green dot** and **OK** status within a few seconds of saving.

If it shows an error instead:

- **AuthenticationFailure** — One or both credentials are incorrect. Re-enter them and save again.
- **No channels found (warning)** — Credentials are valid but no channels were returned. Verify your Account ID is correct.

![CleanShot 2026 09 05 at 13.09.522x](https://support.sardius.media/kb-media/4cbee5b7617f53214026.png)

### Step 5: Load Your Channels

Channels load automatically in the background after you save your credentials. **Click the module again** to reopen its settings — you'll now see an **"Active Channels for Cycle"** field listing all your Sardius channels.

If you manage multiple channels, check only the ones you want included in the cycle buttons. Leave the field empty to include all channels.

![CleanShot 2026 09 05 at 13.28.192x](https://support.sardius.media/kb-media/e78367d9cda9083590a6.png?width=500)

---

## Part 3 — Setting Up Your Buttons (Presets)

The fastest way to get started is with **presets** — ready-made buttons that come pre-configured with the right action, color scheme, and visual feedback already wired up.

### How to Add a Preset

1. Click the Buttons in Companion
2. Click any empty button slot on the grid
3. In the right panel, open the **Presets** tab
4. Find the preset you want and **drag it onto a button slot**

![CleanShot 2026 09 05 at 13.48.002x](https://support.sardius.media/kb-media/ff39c88fd1dab6a948f6.png?width=350)

### Available Presets

The module ships with **12 ready-to-use presets** organized into three groups.

**Event Control**

| **Preset** | **Button Style** | **What It Does**                                                                                                    |
| ---------- | ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| Go Live    | Green            | Creates a live event on the selected channel. Turns bright green with a live countdown when a broadcast is running. |
| End Event  | Red              | Ends the active broadcast immediately. Requires a 2-second hold — prevents accidental activation.                   |
| +5 Min     | Yellow           | Adds 5 minutes to the active event's scheduled end time.                                                            |
| -5 Min     | Orange           | Subtracts 5 minutes from the active event's scheduled end time.                                                     |
| +30 Min    | Yellow           | Adds 30 minutes to the active event's scheduled end time.                                                           |
| -30 Min    | Orange           | Subtracts 30 minutes from the active event's scheduled end time.                                                    |
| +60 Min    | Yellow           | Adds 60 minutes to the active event's scheduled end time.                                                           |
| -60 Min    | Orange           | Subtracts 60 minutes from the active event's scheduled end time.                                                    |

**Channel Control**

| **Preset**       | **Button Style**                    | **What It Does**                                                           |
| ---------------- | ----------------------------------- | -------------------------------------------------------------------------- |
| Next Channel     | Blue                                | Steps forward through your channel cycle.                                  |
| Previous Channel | Blue                                | Steps backward through your channel cycle.                                 |
| Channel Display  | Dark / Blue highlight when selected | Shows the active channel name. Highlights blue when a channel is selected. |

**Status**

| **Preset**    | **Button Style**                | **What It Does**                                                                                |
| ------------- | ------------------------------- | ----------------------------------------------------------------------------------------------- |
| Error Display | Dark gray / Bright red on error | Shows ✓ OK normally. Turns bright red and displays the error message whenever any action fails. |

### Recommended Starter Layout

For most setups, this 3-column, 2-row layout covers everything you need:

| Next Channel     | Selected Channel | Go Live   | +5 | +30 |
| ---------------- | ---------------- | --------- | -- | --- |
| Previous Channel | Error Display    | End Event | -5 | -30 |

![CleanShot 2026 09 05 at 13.56.032x](https://support.sardius.media/kb-media/2fe2e08384d5b01cf0f5.png)

---

## Part 4 — Basic Usage

### Going Live

1. Use **Next Channel** or **Previous Channel** to select the channel you want to broadcast on. The **Channel Display** button always shows the currently selected channel name.
2. Press **Go Live**. A 1-hour live event is created on that channel automatically.
3. The Go Live button turns bright green and displays `● LIVE` with a real-time countdown.

> **Important:** If a live event is already running on that channel, pressing Go Live does nothing — you must end the current broadcast first.

![CleanShot 2026 09 05 at 13.55.172x](https://support.sardius.media/kb-media/1565573a022b90cf3fcf.png?width=350)

### Extending or Shortening Event Time

While a broadcast is live, press any time button to adjust the scheduled end:

- **+5, +30, or +60** — adds that many minutes to the end time
- **-5, -30, or -60** — subtracts that many minutes from the end time

The countdown on the Go Live button updates instantly.

> **Tip:** If your service runs longer than planned, tap +30 or +60 without ever leaving the stage or touching a computer.

### Ending the Broadcast

**Press and hold the End Event button for 2 seconds.** The broadcast ends immediately — the event's end time is set to right now.

The 2-second hold is intentional. A quick accidental tap will never cut your stream.

### Switching Channels

If you manage multiple channels:

1. Press **Next Channel** or **Previous Channel**
2. The **Channel Display** button immediately updates to show the new selection
3. All event actions (Go Live, time buttons, End Event) now target the newly selected channel

---

## Part 5 — Error Display Button

The **Error Display** button gives you a real-time status indicator for every action you take.

**Normal state:** Shows `✓ OK` in gray text on a dark background — everything is working as expected.

**Error state:** Turns **bright red** and displays the specific error message. Examples:

- _"Request timed out — check your network connection"_
- _"400 — Resource conflict / Encoder busy / Try in 5 Min"_
- _"Request failed with status 520"_

The error clears **automatically** as soon as you successfully run another action. You don't need to dismiss it manually.

![CleanShot 2026 09 05 at 14.01.002x](https://support.sardius.media/kb-media/f98d36425c5eeec3864e.png?width=350)

---

## Part 6 — Working with Multiple Channels

### How the Channel Cycle Works

The Next and Previous Channel buttons step through a circular list. After the last channel, the next press wraps back to the first. All feedbacks and event actions automatically follow whichever channel is selected.

By default, all channels in your account are included in the cycle. To limit it:

1. Open the module settings in Companion
2. Under **Active Channels for Cycle**, check only the channels you want

### Locking a Button to a Specific Channel

Every action has a **"Use selected channel"** option that is checked by default. You can uncheck it to lock that button to a fixed channel, regardless of what the cycle is showing.

This is useful for:

- Multi-operator setups where each person has their own Stream Deck targeting their own channel
- Permanent status displays for a specific channel that shouldn't follow the cycle

To configure this, edit any button in Companion, uncheck **Use selected channel**, and choose the channel from the dropdown.

---

## Part 7 — Reference: All Actions

| **Action**                   | **What It Does**                                                             | **Options**                   |
| ---------------------------- | ---------------------------------------------------------------------------- | ----------------------------- |
| **Go Live**                  | Creates a 1-hour live event and starts the broadcast on the selected channel | Event Name, Channel           |
| **Add Time**                 | Extends the active event's scheduled end time                                | Minutes (default: 5), Channel |
| **Subtract Time**            | Shortens the active event's scheduled end time                               | Minutes (default: 5), Channel |
| **End Event**                | Ends the broadcast by setting the event end time to right now                | Channel                       |
| **Cycle Channel (Next)**     | Steps forward through the channel list                                       | —                             |
| **Cycle Channel (Previous)** | Steps backward through the channel list                                      | —                             |
| **Open Control Panel**       | Opens [cp.sardius.media](http://cp.sardius.media) in your default browser    | —                             |

---

## Part 8 — Reference: Feedbacks

Feedbacks change a button's appearance based on live state. The presets already have the right feedbacks applied — you can also add any feedback to a custom button you build yourself.

| **Feedback**                 | **Triggers When**                              | **Default Button Appearance**                           |
| ---------------------------- | ---------------------------------------------- | ------------------------------------------------------- |
| **Live Event Active**        | The selected channel has an active live event  | Bright green background, `● LIVE` with countdown timer  |
| **Selected Channel Display** | A channel is the active selection in the cycle | Blue highlight on the button                            |
| **Action Error**             | The last action resulted in an error           | Bright red background, error message text on the button |

**To add a feedback to any custom button:**

1. Edit the button in Companion
2. Click the **Feedbacks** tab in the right panel
3. Click **+ Add feedback**
4. Choose the feedback, configure any options, and save

![CleanShot 2026 09 05 at 13.59.102x](https://support.sardius.media/kb-media/69e4a2ceebb0474fcf02.png?width=450)

---

## Part 9 — Reference: Variables

Variables are live data values you can embed directly in any button's text. They update automatically as things change.

**How to use:** Type the variable name into a button's text field in Companion. Replace `connection` with your module's actual name as shown in the Connections tab (for example, if your module is named `Sardius-Live`, use `$(Sardius-Live:event_title)` instead).

| **Variable**                          | **What It Shows**                                                        | **Example Output**  |
| ------------------------------------- | ------------------------------------------------------------------------ | ------------------- |
| `$(connection:selected_channel_id)`   | ID of the currently selected channel                                     | `ch_abc123`         |
| `$(connection:selected_channel_name)` | Name of the currently selected channel                                   | `Main Auditorium`   |
| `$(connection:event_title)`           | Title of the active live event                                           | `Sunday Service`    |
| `$(connection:event_end_time)`        | Scheduled end time of the active event                                   | `3:00 PM`           |
| `$(connection:event_countdown)`       | Full countdown to event end (always HH:MM:SS)                            | `01:23:45`          |
| `$(connection:event_countdown_short)` | Compact countdown — shows MM:SS when under 60 minutes, H:MM:SS when over | `23:45`             |
| `$(connection:last_error)`            | Error message from the last failed action. Empty when no error.          | `Request timed out` |

![CleanShot 2026 09 05 at 14.01.592x](https://support.sardius.media/kb-media/1fb9b59317a29c26e628.png?width=500)

---

## Part 10 — Advanced Usage

### Displaying Live Data on Custom Buttons

Any button in Companion can show live data — just type a variable into its text field. For example, to show the event name and a countdown on a single button:

```
● LIVE
$(connection:event_title)
$(connection:event_countdown_short)
```

Or to show just the channel name: `$(connection:selected_channel_name)`

![CleanShot 2026 09 05 at 14.04.142x](https://support.sardius.media/kb-media/9ee02728fa462ae70563.png)

### Adding Action Error Feedback to Other Buttons

The **Action Error** feedback isn't limited to the Error Display preset. You can add it to any button — for example, add it to your Go Live button so that button itself turns red if the go-live action fails. This is useful if you want fewer total buttons on your deck.

### Custom Time Increments

The Add Time and Subtract Time actions accept any value from 1 to 60 minutes. To create a time button not available as a preset (like +15 min or -10 min):

1. Add an empty button to your layout
2. Assign the **Add Time** or **Subtract Time** action
3. Set **Minutes** to the value you want

### Hold-to-Confirm on Any Action

The End Event preset uses a 2-second hold requirement to prevent accidents. You can apply the same protection to any action:

1. Edit the button in Companion
2. In the **Button** tab, change the press type to **Hold** and set your preferred duration

### Multi-Operator Setups

For organizations with multiple Stream Deck operators each controlling a dedicated channel:

1. Assign each operator their own Stream Deck profile in Companion
2. On each profile, uncheck **Use selected channel** on all action buttons and hard-code them to that operator's channel
3. This way, no one needs to worry about which channel is currently "selected" — every button always targets the right one

---

## Troubleshooting

- **Connection shows AuthenticationFailure**

  Your API Key or Account ID is incorrect. Open the module settings in Companion, carefully re-enter both values, and click Save.

- **Connection shows "No channels found"**

  Your credentials are valid but no channels were returned. Verify that your Account ID is correct and that your Sardius account has at least one channel configured. Contact Sardius support if you're unsure what your Account ID should be.

- **Channel dropdown is empty in button settings**

  Channels load in the background the first time you save your credentials. Reopen the module settings by clicking the module in the Connections tab — the dropdown fills in automatically once channels have loaded. This usually takes just a few seconds after saving.

- **Go Live does nothing when I press it**

  A live event is probably already active on the selected channel. Look at your Go Live button — if it's bright green, a broadcast is already running. End it first before starting a new one.

- **Add/Subtract Time or End Event does nothing**

  These actions only work when a live event is currently active. Make sure your Go Live button is in its bright green live state on the selected channel before using these buttons.

- **Error Display shows "Encoder busy" or "Resource conflict"**

  The encoder is already assigned to another event or session. Wait 5 minutes and try again. If the problem persists, check the Sardius Control Panel at [cp.sardius.media](https://cp.sardius.media) for any conflicting events and end or remove them there.

- **Error Display shows "Request timed out"**

  The module couldn't reach the Sardius API within 15 seconds. Check your internet connection and try again. If the timeouts continue, contact Sardius support.

- **Presets tab is empty or shows no Sardius presets**

  Disconnect and reconnect the module: in the Connections tab, click the enable toggle to turn the module off, then back on. Wait a moment, then check the Presets tab again.

---

## Support

For technical issues with the module: [github.com/bitfocus/companion-module-sardiusmedia-sardiuslive/issues](https://github.com/bitfocus/companion-module-sardiusmedia-sardiuslive/issues)

For Sardius account or broadcasting questions, reach out at <Support@Sardius.media>
