Getting started

What is Rundown Studio?Create an account

Rundown

Rundown basicsColumnsTemplatesSettingsGaps and overlapsTrashCell historyMentionsText variablesRunning a showImport CSV rundown

Event

Event basicsSharing events

API

Getting startedAPI reference ↗Build a rundown from CSVWorking with cell contentLive updates over SSEAdvanced usageError referenceMigrating from v0API v0 (deprecated)

Integrations

Companion ModuleBitfocus ButtonsOnTheAir VideoQLab

Sharing and outputs

Read-only rundownEditable rundownQuick access codeOutputPrompterPDF exportCSV export

Account

Your teamSubscription and invoices

Updates

Changelog
Docs Integrations

Bitfocus Buttons

Bitfocus Buttons

Control your Rundown Studio show from Bitfocus Buttons.

Bitfocus Buttons is Bitfocus’ control software for live production. It drives the full Elgato Stream Deck lineup, touch screens, or just a regular web browser.

There’s an official Rundown Studio module, so you don’t need to build HTTP requests by hand. Add the module, enter a token and rundown ID, and you get transport controls, live show data on your buttons, and output message control out of the box.

The Bitfocus Buttons app open over a Rundown Studio rundown
Buttons controlling a Rundown Studio show

Add the module

In Buttons, open Connections and add the Rundown Studio module.

Adding the Rundown Studio module in Buttons
Adding the Rundown Studio module

Configure the module

The module needs two things: an API Token and a Rundown ID.

API Token

API tokens are generated from the API section of the Rundown Studio dashboard. Only team admins can generate or regenerate a token, but anyone on the team can read and use it.

Generating an API token in the dashboard
Copying your API token from the dashboard

Rundown ID

The rundown ID is in the URL of any rundown. For example, if your rundown URL is:

https://app.rundownstudio.app/rundown/pLRbtKC410HFjBVVcaT1

then the rundown ID is pLRbtKC410HFjBVVcaT1.

Finding the rundown ID in the URL
The rundown ID is the last part of the rundown URL

Paste both into the module config and save.

Once connected, the module keeps itself in sync with your rundown over a live event stream, so timers and cue titles update as the show runs rather than on a polling delay.

Advanced configuration

Tick Advanced Configuration to reveal options most shows never need:

  • API Base URL - serves both the REST endpoints and the live event stream. Only change this to point at another environment.
  • Update Interval (ms) - how often the module recalculates timers from the last data received. Defaults to 100.
  • Verbose Mode - logs more detail to the debug log, useful when troubleshooting.

Leave these alone unless you’ve been told otherwise.

Presets

The module ships with presets so you can build a working page by dragging buttons in, with no configuration.

Rundown Studio presets in Buttons
Presets included with the module
  • Transport Controls - start, pause, and move between cues.
  • Rundown Info - name, status, and planned times.
  • Current Cue - title, subtitle, and running times.
  • Next Cue - title, subtitle, and duration.
  • Visual Progress - a row of dots that empties as the cue runs down.
  • Output Message - show, hide, and toggle the message on your outputs.

Actions

Build your own buttons with the module’s actions:

ActionWhat it does
Start rundownStarts the rundown running
Pause rundownPauses the running rundown
Go to next cueAdvances to the next cue
Go to previous cueSteps back to the previous cue
Add time to current cueExtends the active cue by a number of seconds
Remove time from current cueShortens the active cue by a number of seconds
Output Message: ShowShows the output message
Output Message: HideHides the output message
Output Message: Toggle visibilityFlips the message between shown and hidden
Output Message: SetUpdates the text, colour, bold, underline, and/or visibility

Add and Remove time take a number of seconds, so you can build “+30s” and “-30s” buttons for a talkback operator to trim on the fly.

Output Message: Set leaves every field it isn’t given unchanged, so one button can update the text while another only flips the colour. That makes it easy to keep a standing message and change one thing about it mid-show. Read more about output messages.

Feedbacks

Feedbacks restyle a button based on what the rundown is doing:

  • Rundown State - colour a button by running, paused, or stopped.
  • Current cue is running over - flag when the active cue has passed its duration.
  • Visual progress: X or less seconds remaining - used by the Visual Progress presets to empty a row of dots as time runs out.

Variables

Use the module’s variables to put live show data on any button.

Rundown Studio variables in Buttons
Variables included with the module
  • Time - $(rundown-studio:timeofday) and $(rundown-studio:timezone)
  • Rundown - name, date, status, state, and planned start time, end time, and length
  • Current cue - title, subtitle, plus duration, time left, and time elapsed
  • Next cue - title, subtitle, and duration

Every timing variable comes in four formats - _ms, _ss, _mmss, and _hhmmss - so you can pick what fits the button. For example, $(rundown-studio:currentcue_timeleft_mmss) shows the time left on the active cue as 04:30.

Column variables

The module also creates a variable for each public column on your rundown, holding the plain-text content of that column for the current cue. A column named AUDIO becomes $(rundown-studio:currentcue_audio).

Column names are lowercased, and anything that isn’t a letter or number becomes an underscore. If a column name would collide with a built-in variable - a column literally called Title, say - a number is added to the end, giving currentcue_title_2.

This is the quickest way to get show-specific data onto a surface: add a CAMERA column to your rundown and every operator can see the shot for the current cue on a button.

Troubleshooting

If buttons don’t do anything, check that:

  • The API token is correct and current (regenerating a token invalidates the old one).
  • The rundown ID is copied exactly, with no extra spaces or a trailing slash.
  • The machine running Buttons has internet access.
  • The connection shows as connected in the Connections list rather than an error state.

Turning on Verbose Mode in the advanced config writes more detail to the debug log, which usually points straight at the problem.

Using the API instead

If you’d rather not use the module - or you want to drive something the module doesn’t cover - Buttons can talk to the Rundown Studio API through the Generic HTTP Requests connection.

Set the connection’s Base URL to your rundown’s API root, ending with a forward slash:

https://api-v1.rundownstudio.app/rundowns/YOmm4UG2SGpLRbtKC410HFjBVVcaT1/

Add your token once in the connection’s Headers field so every action is authenticated:

{ "Authorization": "Bearer YOUR_API_TOKEN" }

Then give each button an HTTP GET action with a short URI - start, pause, or next. To jump to a specific cue, copy the cue ID from the cue’s menu under API → Copy Cue ID and use an HTTP PUT action with:

cues/Ruw5frPFiSh39gE9vphv/jump-to-cue
Copying a cue ID from the cue's API menu
Copy a cue’s ID from the cue menu under API → Copy Cue ID