Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.
Not sure yet whether Bitfocus Companion fits your setup? See Bitfocus Companion on visualradioassist.live.The VRA Core module for Bitfocus Companion turns a Stream Deck, or any other Companion surface, into a control panel for the Core. It uses the Core API v2 and reads the Core’s state about once a second, so buttons show tally, on-air status and values.
Studio and Core: on air, recording, off air; Core activate, deactivate and reload configuration.
Signals, Audio Director, Camera Assist and macros, with state feedback. Automations show their state.
Cameras: cut, preview and angles, with program (red) and preview (green) tally.
Output Player v2: scenes, rundown, items, clip and graphics banks, playout take out, return and hold.
Station variables: set and toggle.
Presets made from your studio: a button for every signal, macro, camera, angle, output, bank and variable, updated when the studio changes.
The module is under review for the Companion module store. Until it is listed there, install it from the download below. The steps are the same for a Companion machine without internet.
This link always serves the newest version. Earlier versions and the release notes are on the releases page. Keep the file as it is: Companion imports the .tgz itself, you do not unpack it.Does the Companion machine have no internet? Download the file on another computer and copy it over, for example on a USB stick.
Open Connections, search for VRA in Add New Connection and click Add next to VRA Core. Give the connection a label and choose the version you imported under Module Version.
2
Connect to the Core
Does Companion run on the Core machine itself? Then keep the settings as they are: Core address127.0.0.1, Port3002, no token. The connection turns green within a few seconds.
Companion on another machine:
Core address: the IP address or host name of the Core machine.
Device token: create a device in VRA Cloud under Studio settings → Core API → Devices and paste its token. Not needed when Access without a token lets this machine in. See Authentication and LAN access.
Station: optional. With a station set, the buttons only act while that station holds the studio. See Station safety.
Open Buttons, then the Presets tab, and pick your VRA Core connection. Drag a preset onto a button. The presets are made from your studio, so you see your own signals, macros, cameras, outputs and variables.
The colours follow the studio:
Colour
Meaning
Red
On air, camera on program, item or bank on air
Green
Camera on preview, VRA app connected
Orange
Recording, output fault, playout held
Blue
Core active, macro running, automation activated
Amber
Signal or BOOLEAN variable on, bank AUTO on
The module’s help in Companion lists every action, feedback and variable: click ? next to the connection.
Download vra-core.tgz again and import it on the Modules page. Companion keeps the earlier version until you switch over: open the connection, click the pencil next to Module Version, choose the new version and click Save. The connection restarts with it.
Change the module version of a connection. Screenshot: Bitfocus Companion documentation.
The Core runs, the address and port are right, and the network lets Companion reach port 3002.
Authentication failure
Companion runs on another machine and needs a device token, or the token is wrong or revoked.
Insufficient permissions
The Core API or its System feature is switched off in Studio settings → Core API, or the device may not use it.
A button that does nothing writes the reason to the connection’s log in Companion, for example 409 station_mismatch. On the Core machine, http://localhost:3002/api/v2/requests lists the last calls with their status. See Errors and status codes.Prefer to build your own buttons with Companion’s Generic HTTP module? See Bitfocus Companion Control over Visual Radio.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Docs","description":"Visual Radio Assist documentation. Learn how to visualize your radio station.","colors":{"primary":"#FF6105","light":"#FF8A45","dark":"#D8530A"},"logo":{"light":"https://mintcdn.com/visualradioassist/dwIOmJuryYYZ2-dm/images/vra-logo-black.svg?fit=max\u0026auto=format\u0026n=dwIOmJuryYYZ2-dm\u0026q=85\u0026s=7118a6a3a9b10b036b197358d3b91b91","dark":"https://mintcdn.com/visualradioassist/dwIOmJuryYYZ2-dm/images/vra-logo-white.svg?fit=max\u0026auto=format\u0026n=dwIOmJuryYYZ2-dm\u0026q=85\u0026s=2fdaf1d465f0f1abd3232e6878cb4127","href":"https://visualradioassist.live?utm_source=docs\u0026utm_medium=internal_link\u0026utm_campaign=docs_to_homepage"},"favicon":"https://mintcdn.com/visualradioassist/dwIOmJuryYYZ2-dm/images/vra-icon.svg?fit=max\u0026auto=format\u0026n=dwIOmJuryYYZ2-dm\u0026q=85\u0026s=d45c7ddc8a074d8922cb81525a9c45a7","api":{"playground":{"display":"interactive","proxy":false}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://visualradio.cloud/support","label":"Support"}],"primary":{"type":"button","label":"Open Cloud","href":"https://cloud.visualradioassist.live"}},"footer":{"socials":{"website":"https://visualradio.cloud"},"links":[{"header":"Visual Radio Assist","items":[{"label":"Changelog","href":"https://visualradioassist.live/changelog"}]}]},"search":{"prompt":"Search the docs..."},"seo":{"metatags":{"og:site_name":"Visual Radio Assist Docs","canonical":"https://docs.visualradioassist.live"},"indexing":"navigable"},"fonts":{"heading":{"family":"Familjen Grotesk","weight":600},"body":{"family":"Inter","weight":400}},"contextual":{"options":["copy","download-pdf","claude","chatgpt","mcp","add-mcp","assistant","view"],"display":"header"},"interaction":{"drilldown":true},"markdown":{"instructions":["Use the names from the glossary at https://docs.visualradioassist.live/glossary: Audio Manager (two words), command (never commando), on air and off air (never live) for programs and studios, and server apps for the VRA apps installed in the studio.","Say which app an answer applies to, like VRA Cloud, the Core or the Output Player, and the version when the page names one.","Only give settings, values and steps that are in these docs. Never invent one. If the docs don't cover it, say so.","When the docs don't answer the question, send the user to Visual Radio Assist support at https://cloud.visualradioassist.live/support."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"visualradioassist","hasAudioNarration":false,"actualSubdomain":"visualradioassist","customDomains":["docs.visualradioassist.live"],"gitSource":{"type":"github","owner":"vra-bv","repo":"cloud","deployBranch":"master","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae203058ffbca58692884db","collectionId":"9ea2a1fa-2167-4d22-948a-347147045675","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae203058ffbca58692884db"},"entitlements":{},"buildId":"6ae3589c217e82a3b9251387","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Develop with VRA","count":103},{"language":"default","tag":"Core Control API","count":93},{"language":"default","tag":"Reference","count":78},{"language":"default","tag":"Products","count":38},{"language":"default","tag":"Devices and integrations","count":26},{"language":"default","tag":"Link radio automation","count":19},{"language":"default","tag":"signals","count":17},{"language":"default","tag":"outputs","count":14},{"language":"default","tag":"Outputs","count":11},{"language":"default","tag":"cameras","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"#navbar,#sidebar{font-family:\"Familjen Grotesk\",sans-serif}.sidebar-group-header{font-size:.875rem;font-weight:600;letter-spacing:-.005em}.sidebar-group-header h5{font-size:inherit;font-weight:inherit}"}],"page":{"pagePath":"develop-with-vra/core-control-api/bitfocus-companion-module","slug":"/develop-with-vra/core-control-api/bitfocus-companion-module","pageMetadata":{"title":"Bitfocus Companion Module","description":"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.","href":"/develop-with-vra/core-control-api/bitfocus-companion-module"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,Frame,Heading,Note,OptimizedImage,Step,Steps,Table}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Not sure yet whether Bitfocus Companion fits your setup? See `,_jsx(_components.a,{href:`https://visualradioassist.live/integrations/bitfocus-companion`,children:`Bitfocus Companion on visualradioassist.live`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`VRA Core`}),` module for `,_jsx(_components.a,{href:`https://bitfocus.io/companion`,children:`Bitfocus Companion`}),` turns a Stream Deck, or any other Companion surface, into a control panel for the Core. It uses the `,_jsx(_components.a,{href:`/develop-with-vra/core-control-api`,children:`Core API v2`}),` and reads the Core’s state about once a second, so buttons show tally, on-air status and values.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Studio and Core`}),`: on air, recording, off air; Core activate, deactivate and reload configuration.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Signals, Audio Director, Camera Assist and macros`}),`, with state feedback. Automations show their state.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cameras`}),`: cut, preview and angles, with program (red) and preview (green) tally.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Output Player v2`}),`: scenes, rundown, items, clip and graphics banks, playout take out, return and hold.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Station variables`}),`: set and toggle.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Presets made from your studio`}),`: a button for every signal, macro, camera, angle, output, bank and variable, updated when the studio changes.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Companion `,_jsx(_components.strong,{children:`5.0 or later`}),`.`]}),`\n`,_jsx(_components.li,{children:`A Core with the Core API v2.`}),`\n`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`The module is under review for the Companion module store. Until it is listed there, install it from the download below. The steps are the same for a Companion machine without internet.`})}),`\n`,_jsx(Heading,{level:`2`,id:`download-the-module`,children:`Download the module`}),`\n`,_jsx(Card,{title:`Download VRA Core for Companion`,icon:`download`,href:`https://github.com/vra-bv/companion-module-vra-core/releases/latest/download/vra-core.tgz`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`vra-core.tgz`}),`, the newest stable version.`]})}),`\n`,_jsxs(_components.p,{children:[`This link always serves the newest version. Earlier versions and the release notes are on the `,_jsx(_components.a,{href:`https://github.com/vra-bv/companion-module-vra-core/releases`,children:`releases page`}),`. Keep the file as it is: Companion imports the `,_jsx(_components.code,{children:`.tgz`}),` itself, you do not unpack it.`]}),`\n`,_jsx(_components.p,{children:`Does the Companion machine have no internet? Download the file on another computer and copy it over, for example on a USB stick.`}),`\n`,_jsx(Heading,{level:`2`,id:`import-the-module-in-companion`,children:`Import the module in Companion`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Modules page`,children:_jsxs(_components.p,{children:[`In Companion, open `,_jsx(_components.strong,{children:`Modules`}),` in the menu on the left.`]})}),_jsxs(Step,{title:`Import the package`,children:[_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Import module package`}),` and pick `,_jsx(_components.code,{children:`vra-core.tgz`}),`. `,_jsx(_components.strong,{children:`VRA Core`}),` appears in the module list.`]}),_jsx(Frame,{caption:`The Modules page. Screenshot: Bitfocus Companion documentation.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=2b222f59cfe336c4933499095b4fcfc7`,alt:`The Modules page with the Import module package button`,\"data-og-width\":`874`,width:`874`,\"data-og-height\":`452`,height:`452`,\"data-path\":`images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=280\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=e92904d53c485fd6ed06dd8a2f6de235 280w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=560\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=534d3eed76b168c1743b8e50770818bb 560w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=840\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=6a090415077b84c46b2f8821c996b66b 840w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=293c71af2afa15b081f42a397432a3ae 1100w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=88136fedbec01ce036a3c59820adb1ca 1650w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/import-module-package.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=017d6f4add49889b08167441d6c6f9ee 2500w`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`add-the-connection`,children:`Add the connection`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Add VRA Core`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Connections`}),`, search for `,_jsx(_components.code,{children:`VRA`}),` in `,_jsx(_components.strong,{children:`Add New Connection`}),` and click `,_jsx(_components.strong,{children:`Add`}),` next to `,_jsx(_components.strong,{children:`VRA Core`}),`. Give the connection a label and choose the version you imported under `,_jsx(_components.strong,{children:`Module Version`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=911490213aaab673f0ab4ef21136794f`,alt:`Add Visual Radio Assist: VRA Core, with the module version`,\"data-og-width\":`1253`,width:`1253`,\"data-og-height\":`923`,height:`923`,\"data-path\":`images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=280\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=93f957e7801d0e68a0da1645a1cf43a0 280w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=560\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=782bfbe436af9e9e893be61f9d484a79 560w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=840\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=2c0a83e5858bc7c56bb2a4aa3b18002d 840w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=9474dc83b678f50691754e666c69be15 1100w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=434527e1109cc2e63c2b0ee9f00f8e02 1650w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/add-connection.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=72ac65a7c9a30aa8e1b720471b9d84df 2500w`})})]}),_jsxs(Step,{title:`Connect to the Core`,children:[_jsxs(_components.p,{children:[`Does Companion run on the Core machine itself? Then keep the settings as they are: `,_jsx(_components.strong,{children:`Core address`}),` `,_jsx(_components.code,{children:`127.0.0.1`}),`, `,_jsx(_components.strong,{children:`Port`}),` `,_jsx(_components.code,{children:`3002`}),`, no token. The connection turns green within a few seconds.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=9a2a839fa7243d29accd18e624e22252`,alt:`The VRA Core connection settings`,\"data-og-width\":`1038`,width:`1038`,\"data-og-height\":`932`,height:`932`,\"data-path\":`images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=7ac8b1ea6144f22e8238b0a9a5521aaf 280w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=5753c59aaf0b42b9c182cd7f35fbf273 560w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=aedaf407108df4572aa2d53f017f9bed 840w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=d8addabb5dde95f2c190a6e6c3127537 1100w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=796b6882dc4443c2fd21eba64ffc3488 1650w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/connection-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=be8de0532063aeec95dca7f47db3e8f3 2500w`})}),_jsx(_components.p,{children:`Companion on another machine:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Core address`}),`: the IP address or host name of the Core machine.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Device token`}),`: create a device in VRA Cloud under `,_jsx(_components.strong,{children:`Studio settings → Core API → Devices`}),` and paste its token. Not needed when `,_jsx(_components.strong,{children:`Access without a token`}),` lets this machine in. See `,_jsx(_components.a,{href:`/develop-with-vra/core-control-api/authentication-and-lan-access`,children:`Authentication and LAN access`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Station`}),`: optional. With a station set, the buttons only act while that station holds the studio. See `,_jsx(_components.a,{href:`/develop-with-vra/core-control-api/station-safety`,children:`Station safety`}),`.`]}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`use-the-presets`,children:`Use the presets`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Buttons`}),`, then the `,_jsx(_components.strong,{children:`Presets`}),` tab, and pick your VRA Core connection. Drag a preset onto a button. The presets are made from your studio, so you see your own signals, macros, cameras, outputs and variables.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=34acf04cdf98739e18353c2ad4a37acd`,alt:`VRA Core presets for the studio and its signals`,\"data-og-width\":`896`,width:`896`,\"data-og-height\":`1084`,height:`1084`,\"data-path\":`images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=280\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=342718937c822c7409709f74c8844c01 280w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=560\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=b83c115b7e0b019a0344d656c03bdab1 560w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=840\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=b31ddf65e62d92ce02a13fff835b9baf 840w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=30dd05b9c004da2d5f1d17ed13b7f3ef 1100w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=acb5cc2f17212d57483854413c858f61 1650w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/presets.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=a89ad1b68789be693755ea86fa341a7f 2500w`})}),`\n`,_jsx(_components.p,{children:`The colours follow the studio:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Colour`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Red`}),_jsx(_components.td,{children:`On air, camera on program, item or bank on air`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Green`}),_jsx(_components.td,{children:`Camera on preview, VRA app connected`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Orange`}),_jsx(_components.td,{children:`Recording, output fault, playout held`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Blue`}),_jsx(_components.td,{children:`Core active, macro running, automation activated`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Amber`}),_jsx(_components.td,{children:`Signal or BOOLEAN variable on, bank AUTO on`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The module’s help in Companion lists every action, feedback and variable: click `,_jsx(_components.strong,{children:`?`}),` next to the connection.`]}),`\n`,_jsx(Heading,{level:`2`,id:`update-the-module`,children:`Update the module`}),`\n`,_jsxs(_components.p,{children:[`Download `,_jsx(_components.code,{children:`vra-core.tgz`}),` again and import it on the `,_jsx(_components.strong,{children:`Modules`}),` page. Companion keeps the earlier version until you switch over: open the connection, click the pencil next to `,_jsx(_components.strong,{children:`Module Version`}),`, choose the new version and click `,_jsx(_components.strong,{children:`Save`}),`. The connection restarts with it.`]}),`\n`,_jsx(Frame,{caption:`Change the module version of a connection. Screenshot: Bitfocus Companion documentation.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=c4824a0e34867fbf8afa6eece37cbcf0`,alt:`The Change Module Version dialog`,\"data-og-width\":`636`,width:`636`,\"data-og-height\":`467`,height:`467`,\"data-path\":`images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=280\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=74df223053d760aa7e8fce73b1d69e5b 280w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=560\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=80b97ef4410f7fcee74e716f756691ea 560w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=840\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=bcf48ea4e20f9433b1c82b777a99ff00 840w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=61531b1b9745d59a027a5db97998fac2 1100w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=a24ad4e9c6f316e7d24f3c6301cd09da 1650w, https://mintcdn.com/visualradioassist/VBQaA4G8LzE1iPVZ/images/develop-with-vra/core-control-api/bitfocus-companion-module/change-module-version.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VBQaA4G8LzE1iPVZ\u0026q=85\u0026s=c071f4702b916d583406e3c4d5c5fe9d 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`when-something-does-not-work`,children:`When something does not work`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Connection status`}),_jsx(_components.th,{children:`What to check`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Connection failure`}),_jsxs(_components.td,{children:[`The Core runs, the address and port are right, and the network lets Companion reach port `,_jsx(_components.code,{children:`3002`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Authentication failure`}),_jsx(_components.td,{children:`Companion runs on another machine and needs a device token, or the token is wrong or revoked.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Insufficient permissions`}),_jsxs(_components.td,{children:[`The Core API or its `,_jsx(_components.strong,{children:`System`}),` feature is switched off in `,_jsx(_components.strong,{children:`Studio settings → Core API`}),`, or the device may not use it.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A button that does nothing writes the reason to the connection’s log in Companion, for example `,_jsx(_components.code,{children:`409 station_mismatch`}),`. On the Core machine, `,_jsx(_components.code,{children:`http://localhost:3002/api/v2/requests`}),` lists the last calls with their status. See `,_jsx(_components.a,{href:`/develop-with-vra/core-control-api/errors-and-status-codes`,children:`Errors and status codes`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Prefer to build your own buttons with Companion’s Generic HTTP module? See `,_jsx(_components.a,{href:`/develop-with-vra/core-control-api/bitfocus-companion-control-over-visual-radio`,children:`Bitfocus Companion Control over Visual Radio`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Bitfocus Companion Module","description":"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.","href":"/develop-with-vra/core-control-api/bitfocus-companion-module"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Download the module","slug":"download-the-module","depth":2,"children":[]},{"title":"Import the module in Companion","slug":"import-the-module-in-companion","depth":2,"children":[]},{"title":"Add the connection","slug":"add-the-connection","depth":2,"children":[]},{"title":"Use the presets","slug":"use-the-presets","depth":2,"children":[]},{"title":"Update the module","slug":"update-the-module","depth":2,"children":[]},{"title":"When something does not work","slug":"when-something-does-not-work","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"visualradioassist","siteName":"Docs","title":"Bitfocus Companion Module - Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T12:33:33.091Z","originalFileLocation":"develop-with-vra/core-control-api/bitfocus-companion-module.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Bitfocus Companion Module - Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Visual Radio Assist Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://visualradioassist.mintlify.app/_mintlify/api/og/v2?division=Core+Control+API\u0026amp;title=Bitfocus+Companion+Module\u0026amp;description=Install+the+VRA+Core+module+for+Bitfocus+Companion+from+a+download%2C+connect+it+to+the+Core+and+get+buttons+with+tally%2C+on-air+status+and+studio+presets.\u0026amp;theme=c7dd1792b122829f32f04556\u0026amp;signature=58012d6226b4703f4c78d481ffa6709d5c963885f8b90d60e6db660a1c8bb97f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Bitfocus Companion Module - Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://visualradioassist.mintlify.app/_mintlify/api/og/v2?division=Core+Control+API\u0026amp;title=Bitfocus+Companion+Module\u0026amp;description=Install+the+VRA+Core+module+for+Bitfocus+Companion+from+a+download%2C+connect+it+to+the+Core+and+get+buttons+with+tally%2C+on-air+status+and+studio+presets.\u0026amp;theme=c7dd1792b122829f32f04556\u0026amp;signature=58012d6226b4703f4c78d481ffa6709d5c963885f8b90d60e6db660a1c8bb97f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/visualradioassist/PiEqAGzqYt-oG8UP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6105\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/develop-with-vra/core-control-api/bitfocus-companion-module.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.visualradioassist.live/#organization\",\"name\":\"Docs\",\"url\":\"https://docs.visualradioassist.live\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/visualradioassist/dwIOmJuryYYZ2-dm/images/vra-logo-black.svg?fit=max\u0026auto=format\u0026n=dwIOmJuryYYZ2-dm\u0026q=85\u0026s=7118a6a3a9b10b036b197358d3b91b91\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.visualradioassist.live#website\",\"name\":\"Docs\",\"url\":\"https://docs.visualradioassist.live\",\"publisher\":{\"@id\":\"https://docs.visualradioassist.live/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module#webpage\",\"url\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module\",\"name\":\"Bitfocus Companion Module\",\"description\":\"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\",\"dateModified\":\"2026-10-21T12:33:33.091Z\",\"isPartOf\":{\"@id\":\"https://docs.visualradioassist.live#website\"},\"breadcrumb\":{\"@id\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Develop with VRA\",\"item\":\"https://docs.visualradioassist.live/develop-with-vra\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Core Control API\",\"item\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bitfocus Companion Module\",\"item\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module#article\",\"headline\":\"Bitfocus Companion Module\",\"name\":\"Bitfocus Companion Module\",\"description\":\"Install the VRA Core module for Bitfocus Companion from a download, connect it to the Core and get buttons with tally, on-air status and studio presets.\",\"url\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module\",\"mainEntityOfPage\":{\"@id\":\"https://docs.visualradioassist.live/develop-with-vra/core-control-api/bitfocus-companion-module#webpage\"},\"dateModified\":\"2026-10-21T12:33:33.091Z\",\"publisher\":{\"@id\":\"https://docs.visualradioassist.live/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.visualradioassist.live#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Docs","nav":{"global":null,"groups":[{"group":"Get started","pages":[{"title":"Getting started","icon":"compass","href":"/getting-started"},{"title":"Essentials","icon":"clover","href":"/essentials"},{"title":"Studio Overview","icon":"sliders","href":"/studio-overview"},{"title":"Video guides","icon":"clapperboard","href":"/video-guides"},{"group":"Try Out","icon":"flask","pages":[{"title":"Try Out","icon":"flask","href":"/try-out"},{"title":"Try Out – Fair Use Policy","icon":"scale-balanced","href":"/try-out/try-out-fair-use-policy"}]},{"title":"Glossary","icon":"book","href":"/glossary"}]},{"group":"Products","pages":[{"group":"Scheduling","icon":"calendar","pages":[{"title":"Scheduling","icon":"calendar","href":"/scheduling"},{"title":"Create a program","icon":"calendar-plus","href":"/scheduling/create-a-new-program"},{"title":"Presenters","icon":"users","href":"/presenters"},{"title":"Scheduling overrides","icon":"layer-group","href":"/scheduling/overrides"},{"title":"Program and presenter settings","icon":"gear","href":"/scheduling/program-settings"},{"title":"Troubleshoot Scheduling","icon":"wrench","href":"/scheduling/troubleshooting"}]},{"group":"Cameras","icon":"video","pages":[{"title":"Cameras","icon":"video","href":"/cameras"},{"title":"Camera Editor","icon":"sliders","href":"/cameras/camera-editor"},{"title":"Migrate from legacy cameras","icon":"arrow-right-arrow-left","href":"/cameras/migrate-from-camera-angles"}]},{"group":"Audio Manager","icon":"volume-high","pages":[{"title":"Get Started with Audio Directed auto-switching","icon":"volume-high","href":"/audio-manager"},{"title":"Audio Triggers","icon":"wave-square","href":"/audio-manager/audio-triggers"},{"title":"Fallback scenarios","icon":"life-ring","href":"/audio-manager/fallback-scenarios"},{"title":"Tweak Trigger Settings","icon":"sliders","href":"/audio-manager/tweak-trigger-settings"}]},{"group":"Automations and macros","icon":"bolt","pages":[{"title":"Automations","icon":"robot","href":"/automations"},{"title":"Macros","icon":"wand-magic-sparkles","href":"/macros"}]},{"group":"Outputs","icon":"tv","pages":[{"title":"Output Settings","icon":"gear","href":"/output-settings"},{"group":"Output Editor","icon":"table-list","pages":[{"title":"Output Editor","icon":"table-list","href":"/output-editor"},{"title":"Create your first Output","icon":"tv","href":"/getting-started/create-your-first-output"},{"title":"Output Rundowns","icon":"list-check","href":"/output-editor/output-rundowns"}]},{"title":"Manual Playout","icon":"play","href":"/manual-playout"},{"title":"Episode Playout","icon":"list-ol","href":"/episode-playout"},{"title":"Composition Editor","icon":"layer-group","href":"/composition-editor"},{"title":"Media Hub","icon":"photo-film","href":"/media-hub"},{"title":"Media Meta Data","icon":"tags","href":"/media-meta-data"},{"title":"Variables","icon":"brackets-curly","href":"/variables"},{"title":"API Data Sources","icon":"plug","href":"/api-data-sources"}]},{"group":"Visual Designer","icon":"pen-ruler","pages":[{"title":"Get Started with Visual Radio Graphics","icon":"pen-ruler","href":"/visual-designer"},{"title":"Design your first Visual","icon":"paintbrush","href":"/getting-started/design-your-first-visual"},{"title":"Visual Templates","icon":"swatchbook","href":"/visual-designer/visual-templates"},{"title":"Bodymovin / Lottie Animation Layer","icon":"sparkles","href":"/visual-designer/bodymovin-lottie-animation-layer"},{"title":"Use your custom font","icon":"font","href":"/getting-started/use-your-custom-font"}]},{"group":"Clips","icon":"scissors","pages":[{"title":"Get Started with Clips","icon":"scissors","href":"/clips"},{"group":"Media Server ingest sources","icon":"server","pages":[{"title":"Media Server Ingest Sources","icon":"server","href":"/clips/media-server-ingest-sources"},{"title":"Media Connections","icon":"plug","href":"/clips/media-server-ingest-sources/media-connections"}]},{"title":"Managing your Clips recordings","icon":"film","href":"/clips/managing-your-clips-recordings"},{"title":"Editing your Clips in a Project","icon":"pen-to-square","href":"/clips/editing-your-clips-in-a-project"},{"title":"Making your Clips ready for publish","icon":"upload","href":"/clips/making-your-clips-ready-for-publish"}]},{"title":"Dashboards","icon":"gauge","href":"/dashboards"}]},{"group":"Install and set up","pages":[{"title":"Machine Specs","icon":"microchip","href":"/machine-specs"},{"title":"Network Connectivity","icon":"network-wired","href":"/network-connectivity"},{"title":"Setup","icon":"sliders","href":"/set-up"},{"title":"Set up a new Core App","icon":"server","href":"/set-up/set-up-a-new-core-app"},{"group":"Advanced installation","icon":"download","root":{"title":"Advanced Installation","icon":"download","href":"/advanced-installation"},"pages":[{"title":"Update Policy","href":"/advanced-installation/update-policy"},{"title":"Manual Update Process","href":"/advanced-installation/manual-update-process"},{"title":"Direct Local Bus / API SSL Connection","href":"/advanced-installation/direct-local-bus-api-ssl-connection"}]}]},{"group":"Devices and integrations","pages":[{"group":"Video switcher configuration","icon":"shuffle","root":{"title":"Video Switcher Configuration","href":"/set-up/video-switcher-configuration"},"pages":[{"title":"Use ATEM as Video Switcher for Visual Radio","sidebarTitle":"ATEM","href":"/set-up/video-switcher-configuration/use-atem-as-video-switcher-for-visual-radio"},{"title":"Use vMix as Video Playout for Visual Radio","sidebarTitle":"vMix","href":"/set-up/video-switcher-configuration/use-vmix-as-video-playout-for-visual-radio"},{"title":"Use OBS as Video Switcher for Visual Radio","sidebarTitle":"OBS","href":"/set-up/video-switcher-configuration/use-obs-as-video-switcher-for-visual-radio"},{"title":"Use your Output Player as Input in OBS","sidebarTitle":"Output player in OBS","href":"/getting-started/use-your-output-player-as-input-in-obs"}]},{"group":"Link radio automation","icon":"link","root":{"title":"Link Radio Automation","href":"/set-up/link-radio-automation"},"pages":[{"title":"Radio Automation Data (AutomationLink)","sidebarTitle":"AutomationLink data","href":"/radio-automation-data"},{"title":"Link AerOn Studio to Visual Radio","sidebarTitle":"AerOn Studio","href":"/set-up/link-radio-automation/link-aeron-studio-to-visual-radio"},{"title":"Link Audisi GML to Visual Radio","sidebarTitle":"Audisi GML","href":"/set-up/link-radio-automation/link-audisi-gml-to-visual-radio"},{"title":"Link Caliope OnAir to Visual Radio","sidebarTitle":"Caliope OnAir","href":"/set-up/link-radio-automation/link-caliope-onair-to-visual-radio"},{"title":"Link mAirList to Visual Radio","sidebarTitle":"mAirList","href":"/set-up/link-radio-automation/link-mairlist-to-visual-radio"},{"title":"Link OmniPlayer to Visual Radio","sidebarTitle":"OmniPlayer","href":"/set-up/link-radio-automation/link-omniplayer-to-visual-radio"},{"title":"Use OmniPlayer Video Files with Visual Radio","sidebarTitle":"OmniPlayer video files","href":"/set-up/link-radio-automation/use-omniplayer-video-files-with-visual-radio"},{"title":"Link Power Studio to Visual Radio","sidebarTitle":"Power Studio","href":"/set-up/link-radio-automation/link-power-studio-to-visual-radio"},{"title":"Link ProppFrexx ONAIR to Visual Radio","sidebarTitle":"ProppFrexx ONAIR","href":"/set-up/link-radio-automation/link-proppfrexx-onair-to-visual-radio"},{"title":"Link RCS Zetta to Visual Radio","sidebarTitle":"RCS Zetta","href":"/set-up/link-radio-automation/link-rcs-zetta-to-visual-radio"},{"title":"Link Text File Now Playing to Visual Radio","sidebarTitle":"Text file","href":"/set-up/link-radio-automation/link-text-file-now-playing-to-visual-radio"},{"title":"Link Zenon Media to Visual Radio","sidebarTitle":"Zenon Media","href":"/set-up/link-radio-automation/link-zenon-media-to-visual-radio"},{"group":"Request an integration","pages":[{"title":"Link PlayIt Live to Visual Radio","sidebarTitle":"PlayIt Live","href":"/set-up/link-radio-automation/link-playit-live-data-to-visual-radio"},{"title":"Link RadioDJ to Visual Radio","sidebarTitle":"RadioDJ","href":"/set-up/link-radio-automation/link-radiodj-to-visual-radio"},{"title":"Link winMedia to Visual Radio","sidebarTitle":"winMedia","href":"/set-up/link-radio-automation/link-winmedia-to-visual-radio"},{"title":"Link Dalet to Visual Radio","sidebarTitle":"Dalet","href":"/set-up/link-radio-automation/link-dalet-to-visual-radio"},{"title":"Link RCS Sound Software to Visual Radio","sidebarTitle":"RCS Sound Software","href":"/set-up/link-radio-automation/link-rcs-sound-software-to-visual-radio"},{"title":"Link DAVID Systems to Visual Radio","sidebarTitle":"DAVID Systems","href":"/set-up/link-radio-automation/link-david-systems-to-visual-radio"},{"title":"Link DABiS 800 to Visual Radio","sidebarTitle":"DABiS 800","href":"/set-up/link-radio-automation/link-dabis-800-to-visual-radio"}]}]},{"title":"Connect PTZ cameras","icon":"camera","href":"/set-up/connect-ptz-cameras"},{"title":"Map Output Player Devices","icon":"diagram-project","href":"/set-up/map-output-player-devices"},{"title":"Audio devices","icon":"microphone","href":"/set-up/configure-available-audio-device-inputs"}]},{"group":"Administration","pages":[{"title":"User Management","icon":"users-gear","href":"/user-management"},{"title":"Broadcaster Management","icon":"building","href":"/broadcaster-management"},{"title":"Lock Resources","icon":"lock","href":"/lock-resources"},{"title":"Resource archival","icon":"box-archive","href":"/resource-archival"},{"title":"Tagging Resources","icon":"tag","href":"/tagging-resources"}]},{"group":"Troubleshooting","pages":[{"title":"Troubleshooting","icon":"life-ring","href":"/troubleshooting"},{"title":"Troubleshoot the server apps","icon":"screwdriver-wrench","href":"/set-up/troubleshooting"},{"title":"Troubleshoot the Output Player","icon":"tv","href":"/output-settings/troubleshooting"}]},{"group":"Develop with VRA","pages":[{"title":"Develop with VRA","icon":"code","href":"/develop-with-vra"},{"group":"Develop visual graphics","icon":"palette","pages":[{"title":"Develop Visual Graphics","icon":"palette","href":"/develop-with-vra/develop-visual-graphics"},{"title":"Layer Transition Lifecycle for CSS","href":"/develop-with-vra/develop-visual-graphics/layer-transition-lifecycle-for-css"},{"title":"GSAP Animations with Visual Radio Graphics","href":"/develop-with-vra/develop-visual-graphics/gsap-animations-with-visual-radio-graphics"}]},{"group":"Core Control API","icon":"plug","pages":[{"title":"Core Control API","icon":"plug","href":"/develop-with-vra/core-control-api"},{"title":"Connectivity and Access management","href":"/develop-with-vra/core-control-api/connectivity-and-access-management"},{"title":"Authentication and LAN access","href":"/develop-with-vra/core-control-api/authentication-and-lan-access"},{"title":"Routes","href":"/develop-with-vra/core-control-api/routes"},{"title":"Plain-text routes","href":"/develop-with-vra/core-control-api/plain-text-routes"},{"title":"TCP and OSC","href":"/develop-with-vra/core-control-api/tcp-and-osc"},{"title":"Station safety","href":"/develop-with-vra/core-control-api/station-safety"},{"title":"Errors and status codes","href":"/develop-with-vra/core-control-api/errors-and-status-codes"},{"title":"Stream Deck","description":"Control the studio, the Core, signals, macros, outputs, cameras and variables from an Elgato Stream Deck with the built-in Website action.","href":"/develop-with-vra/core-control-api/stream-deck"},{"title":"Bitfocus Companion Module","href":"/develop-with-vra/core-control-api/bitfocus-companion-module"},{"title":"Bitfocus Companion Control over Visual Radio","description":"Use Bitfocus Companion and its Generic HTTP module to control the Visual Radio Assist Core from a Stream Deck, with device tokens and the plain-text routes.","href":"/develop-with-vra/core-control-api/bitfocus-companion-control-over-visual-radio"},{"title":"SKAARHOJ","href":"/develop-with-vra/core-control-api/skaarhoj"},{"title":"OpenAPI","href":"/develop-with-vra/core-control-api/openapi"},{"group":"Reference","pages":[{"group":"system","pages":[{"title":"API info","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/","href":"/api-reference/system/api-info"},{"title":"State snapshot","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/state","href":"/api-reference/system/state-snapshot"},{"title":"Health check","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/health","href":"/api-reference/system/health-check"},{"title":"List fleet apps","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/clients","href":"/api-reference/system/list-fleet-apps"},{"title":"Request log","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/requests","href":"/api-reference/system/request-log"},{"title":"SKAARHOJ parameter files","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/presets/skaarhoj","href":"/api-reference/system/skaarhoj-parameter-files"}]},{"group":"core","pages":[{"title":"Get Core","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core","href":"/api-reference/core/get-core"},{"title":"Get Core state","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/state","href":"/api-reference/core/get-core-state"},{"title":"Check if Core is active","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/active","href":"/api-reference/core/check-if-core-is-active"},{"title":"Activate Core","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/activate","href":"/api-reference/core/activate-core"},{"title":"Deactivate Core","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/deactivate","href":"/api-reference/core/deactivate-core"},{"title":"Toggle Core","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/toggle","href":"/api-reference/core/toggle-core"},{"title":"Reload Core configuration","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/reload-config","href":"/api-reference/core/reload-core-configuration"},{"title":"Restart fleet apps","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/core/restart-apps","href":"/api-reference/core/restart-fleet-apps"}]},{"group":"studio","pages":[{"title":"Get studio","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio","href":"/api-reference/studio/get-studio"},{"title":"Get studio status","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/status","href":"/api-reference/studio/get-studio-status"},{"title":"Put studio on air","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/onair","href":"/api-reference/studio/put-studio-on-air"},{"title":"Put studio in recording","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/recording","href":"/api-reference/studio/put-studio-in-recording"},{"title":"Take studio off air","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/offair","href":"/api-reference/studio/take-studio-off-air"},{"title":"Toggle studio on air","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/toggle","href":"/api-reference/studio/toggle-studio-on-air"},{"title":"Set studio status","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/studio/set","href":"/api-reference/studio/set-studio-status"}]},{"group":"station","pages":[{"title":"Get station","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/station","href":"/api-reference/station/get-station"},{"title":"Get programs","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/station/program","href":"/api-reference/station/get-programs"},{"title":"Get program title","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/station/program/title","href":"/api-reference/station/get-program-title"}]},{"group":"signals","pages":[{"title":"List signals","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals","href":"/api-reference/signals/list-signals"},{"title":"Get signal","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}","href":"/api-reference/signals/get-signal"},{"title":"Get signal value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}/value","href":"/api-reference/signals/get-signal-value"},{"title":"Switch signal on","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}/on","href":"/api-reference/signals/switch-signal-on"},{"title":"Switch signal off","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}/off","href":"/api-reference/signals/switch-signal-off"},{"title":"Toggle signal","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}/toggle","href":"/api-reference/signals/toggle-signal"},{"title":"Set signal value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/signals/{id}/set","href":"/api-reference/signals/set-signal-value"},{"title":"Get Audio Director","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/audio-director","href":"/api-reference/signals/get-audio-director"},{"title":"Get Audio Director value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/audio-director/value","href":"/api-reference/signals/get-audio-director-value"},{"title":"Switch Audio Director on","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/audio-director/on","href":"/api-reference/signals/switch-audio-director-on"},{"title":"Switch Audio Director off","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/audio-director/off","href":"/api-reference/signals/switch-audio-director-off"},{"title":"Toggle Audio Director","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/audio-director/toggle","href":"/api-reference/signals/toggle-audio-director"},{"title":"Get Camera Assist","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/camera-assist","href":"/api-reference/signals/get-camera-assist"},{"title":"Get Camera Assist value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/camera-assist/value","href":"/api-reference/signals/get-camera-assist-value"},{"title":"Switch Camera Assist on","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/camera-assist/on","href":"/api-reference/signals/switch-camera-assist-on"},{"title":"Switch Camera Assist off","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/camera-assist/off","href":"/api-reference/signals/switch-camera-assist-off"},{"title":"Toggle Camera Assist","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/camera-assist/toggle","href":"/api-reference/signals/toggle-camera-assist"}]},{"group":"macros","pages":[{"title":"List macros","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/macros","href":"/api-reference/macros/list-macros"},{"title":"Get macro","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/macros/{id}","href":"/api-reference/macros/get-macro"},{"title":"Check if macro is running","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/macros/{id}/active","href":"/api-reference/macros/check-if-macro-is-running"},{"title":"Trigger macro","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/macros/{id}/trigger","href":"/api-reference/macros/trigger-macro"}]},{"group":"automations","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/automations","href":"/api-reference/automations/list-automations"},{"title":"Get automation","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/automations/{id}","href":"/api-reference/automations/get-automation"},{"title":"Get automation state","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/automations/{id}/state","href":"/api-reference/automations/get-automation-state"}]},{"group":"cameras","pages":[{"title":"List cameras","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras","href":"/api-reference/cameras/list-cameras"},{"title":"Get camera","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}","href":"/api-reference/cameras/get-camera"},{"title":"List camera angles","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}/angles","href":"/api-reference/cameras/list-camera-angles"},{"title":"Check if camera is on air","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}/on-air","href":"/api-reference/cameras/check-if-camera-is-on-air"},{"title":"Get angle","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/angles/{id}","href":"/api-reference/cameras/get-angle"},{"title":"Cut camera to program","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}/cut","href":"/api-reference/cameras/cut-camera-to-program"},{"title":"Take camera to preview","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}/preview","href":"/api-reference/cameras/take-camera-to-preview"},{"title":"Run angle","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/angles/{id}/trigger","href":"/api-reference/cameras/run-angle"},{"title":"Run camera angle","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/cameras/{id}/angles/{angle}/trigger","href":"/api-reference/cameras/run-camera-angle"}]},{"group":"variables","pages":[{"title":"List variables","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables","href":"/api-reference/variables/list-variables"},{"title":"Get variable","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}","href":"/api-reference/variables/get-variable"},{"title":"Get variable value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}/value","href":"/api-reference/variables/get-variable-value"},{"title":"Set variable value","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}/set","href":"/api-reference/variables/set-variable-value"},{"title":"Set variable to true","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}/on","href":"/api-reference/variables/set-variable-to-true"},{"title":"Set variable to false","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}/off","href":"/api-reference/variables/set-variable-to-false"},{"title":"Toggle variable","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/variables/{name}/toggle","href":"/api-reference/variables/toggle-variable"}]},{"group":"outputs","pages":[{"title":"List outputs","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs","href":"/api-reference/outputs/list-outputs"},{"title":"Get output","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}","href":"/api-reference/outputs/get-output"},{"title":"Get output status","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/status","href":"/api-reference/outputs/get-output-status"},{"title":"Get on-air scene","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/scene","href":"/api-reference/outputs/get-on-air-scene"},{"title":"List output scenes","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/scenes","href":"/api-reference/outputs/list-output-scenes"},{"title":"Get playout scenes","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/playout","href":"/api-reference/outputs/get-playout-scenes"},{"title":"Take scene","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/scenes/{scene}/take","href":"/api-reference/outputs/take-scene"},{"title":"Take next rundown item","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/rundown/next","href":"/api-reference/outputs/take-next-rundown-item"},{"title":"Take previous rundown item","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/rundown/previous","href":"/api-reference/outputs/take-previous-rundown-item"},{"title":"Take rundown item","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/rundown/take","href":"/api-reference/outputs/take-rundown-item"},{"title":"Set next rundown item","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/rundown/set-next","href":"/api-reference/outputs/set-next-rundown-item"},{"title":"Play clip","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/clips/{number}/play","href":"/api-reference/outputs/play-clip"},{"title":"Take out all graphics","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/graphics/take-out-all","href":"/api-reference/outputs/take-out-all-graphics"},{"title":"Reload output","deprecated":null,"version":null,"openapi":"/api-reference/core-api/openapi.json get /api/v2/outputs/{slot}/reload","href":"/api-reference/outputs/reload-output"}]}]},{"title":"Legacy routes","href":"/develop-with-vra/core-control-api/legacy-routes"},{"title":"Core API Endpoints","href":"/develop-with-vra/core-control-api/core-api-endpoints"}]},{"group":"Cloud GraphQL API","icon":"diagram-project","pages":[{"title":"Cloud GraphQL API","icon":"diagram-project","href":"/develop-with-vra/cloud-graphql-api"},{"title":"Machine Users","href":"/develop-with-vra/cloud-graphql-api/machine-users"},{"title":"AutomationLink ingest","icon":"music","href":"/develop-with-vra/cloud-graphql-api/automationlink-ingest"},{"title":"Studio control","icon":"tower-broadcast","href":"/develop-with-vra/cloud-graphql-api/studio-control"}]},{"title":"Generic HTTP Radio Automation Link","icon":"globe","href":"/develop-with-vra/generic-http-radio-automation-link"},{"title":"Connecting with AutomationLink","icon":"link","href":"/develop-with-vra/connecting-with-automationlink"}]}]},"title":"Bitfocus Companion Module - Docs","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-CIbhtp2j.js","DynamicMarkdown-CtpgKJwj.js","zoom-image-lightbox-CVZVK4hN.js","lightbox-handle-r17bVUz3.js"]}