StreamUP WebSocket API
by Andi
Plugin version: 2.4.0
Every vendor command the StreamUP plugin exposes over OBS WebSocket, with its parameters, its response and what it does.
If you just want the list of what exists, the StreamUP plugin page has a summary table per category. This page is the full reference.
Quicker than reading
Open StreamUP menu > WebSocket Commands inside OBS for a browsable version of this, with copy-to-clipboard for both the OBS Raw request and the Streamer.Bot CPH code.
Overview
The StreamUP plugin extends OBS Studio's WebSocket API with custom vendor commands under the streamup vendor namespace. These commands provide enhanced functionality for source management, transitions, and plugin-specific features. You can use the Request Parameters and Response Fields with the StreamUP OBS Plugin Commands in Streamer.Bot.
Connection Information
- Vendor Name:
streamup - Protocol: OBS WebSocket 5.x
- Default Port: 4455 (standard OBS WebSocket port)
Command Format
All StreamUP vendor commands follow the OBS WebSocket 5.x vendor request format:
{
"requestType": "CallVendorRequest",
"requestId": "unique-id",
"requestData": {
"vendorName": "streamup",
"requestType": "CommandName",
"requestData": {
// Command-specific parameters
}
}
}Vendor Commands
Utility Commands
GetStreamBitrate
Get the current streaming bitrate and related information.
Request Parameters: None
Response Data:
{
"kbits-per-sec": 5000
}Response Fields:
kbits-per-sec(integer): Current bitrate in kilobits per seconderror(string, optional): Error message if streaming is not active
Notes:
- Returns 0 on first call to initialize tracking
- Returns error if streaming is not active
- Calculates bitrate based on bytes sent since last request
Source Management
ToggleLockAllSources
Toggle the lock state of all sources in all scenes.
Request Parameters: None
Response Data:
{
"lockState": true
}Response Fields:
lockState(boolean): The new lock state after toggling
Notes:
- Affects all sources across all scenes
- Returns the new state after toggling
ToggleLockCurrentSceneSources
Toggle the lock state of all sources in the current scene only.
Request Parameters: None
Response Data:
{
"lockState": true
}Response Fields:
lockState(boolean): The new lock state after toggling
Notes:
- Only affects sources in the currently active scene
GetAllSourcesLocked
Read back whether every source in every scene is locked, without changing anything.
Request Parameters: None
Response Data:
{
"lockState": true
}Response Fields:
lockState(boolean): True when all sources in all scenes are locked
Notes:
- Read-only, so a Stream Deck or Streamer.bot button can show the current state instead of guessing
GetCurrentSceneSourcesLocked
Read back whether every source in the current scene is locked, without changing anything.
Request Parameters: None
Response Data:
{
"lockState": true
}Response Fields:
lockState(boolean): True when all sources in the current scene are locked
Notes:
- Read-only, and only looks at the currently active scene
RefreshAudioMonitoring
Refresh audio monitoring for all audio sources.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Executed on graphics thread for thread safety
- Enumerates all sources and refreshes their audio monitoring state
RefreshBrowserSources
Refresh all browser sources in the current OBS session.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Executed on graphics thread for thread safety
- Triggers a refresh on all browser source instances
GetSelectedSource
Get the name of the currently selected source in the current scene.
Request Parameters: None
Response Data:
{
"selectedSource": "Camera"
}Response Fields:
selectedSource(string): Name of the selected source, or "None" if no source is selected
Backup
CreateBackup
Back up the whole OBS setup: scene collections, profiles, plugin settings, themes and OBS settings. Every parameter is optional, so a bare call with no request data works.
Request Parameters:
filePath(string, optional): Where to write the archive. Defaults to a timestamped file in the folder set in Settings > Backup.includeCredentials(boolean, optional): Include the stream key and OAuth tokens. Defaults tofalse, so the file is safe to share.collectMedia(boolean, optional): Copy the media your scenes reference into the archive. Defaults tofalse. Turning this on can make the file very large.
Response Data:
{
"success": true,
"filePath": "D:/OBS/config/obs-studio/streamup-backups/streamup-backup-2026-08-05-1926.zip",
"fileCount": 1100,
"sizeBytes": 19596963,
"credentialsIncluded": false,
"mediaReferenced": 197,
"mediaMissing": 119,
"largeFilesSkipped": 0
}Response Fields:
filePath(string): Where the backup was writtenfileCount(number): Files includedsizeBytes(number): Size of the archivecredentialsIncluded(boolean): Whether the stream key is in the filemediaReferenced(number): Files your scenes point atmediaMissing(number): How many of those are not on disk. Those sources are already broken in OBS, so this is worth watching in a dashboard.largeFilesSkipped(number): Files left out for being over the size limit, usually AI models
GetBackupInfo
Report the backup settings and list the backups that exist, newest first.
Request Parameters: None
Response Data:
{
"success": true,
"automaticEnabled": true,
"keepCount": 10,
"folder": "D:/OBS/config/obs-studio/streamup-backups",
"lastAutomaticDate": "2026-08-05",
"backups": [
{
"fileName": "streamup-auto-2026-08-05-1330.zip",
"filePath": "D:/OBS/config/obs-studio/streamup-backups/streamup-auto-2026-08-05-1330.zip",
"sizeBytes": 19697664,
"modified": "2026-08-05T13:30:28"
}
]
}Response Fields:
automaticEnabled(boolean): Whether a backup is taken as OBS closeskeepCount(number): How many automatic backups are kept before the oldest is prunedfolder(string): Where backups are savedlastAutomaticDate(string): Date of the last automatic backup,yyyy-MM-ddbackups(array): Existing backups, newest first
Note: There is no request to restore a backup. Restoring replaces your setup and has to be applied while OBS shuts down, so it is deliberately a decision made in the UI where the contents can be reviewed first.
Transition Management
GetShowTransition
Get the show transition settings for a specific source in a scene.
Request Parameters:
{
"sceneName": "Scene",
"sourceName": "Source"
}Request Fields:
sceneName(string, required): Name of the scenesourceName(string, required): Name of the source
Response Data:
{
"transitionType": "Fade",
"transitionSettings": {
// Transition-specific settings
},
"transitionDuration": 300,
"success": true
}Response Fields:
transitionType(string): Display name of the transition (e.g., "Fade", "Cut")transitionSettings(object): Transition-specific settingstransitionDuration(integer): Duration in millisecondssuccess(boolean): True if successfulerror(string, optional): Error message if failed
GetHideTransition
Get the hide transition settings for a specific source in a scene.
Request Parameters: Same as GetShowTransition
Response Data: Same as GetShowTransition
SetShowTransition
Set the show transition for a specific source in a scene.
Request Parameters:
{
"sceneName": "Scene",
"sourceName": "Source",
"transitionType": "Fade",
"transitionSettings": {
// Transition-specific settings
},
"transitionDuration": 300
}Request Fields:
sceneName(string, required): Name of the scenesourceName(string, required): Name of the sourcetransitionType(string, required): Display name of the transitiontransitionSettings(object, optional): Transition-specific settingstransitionDuration(integer, required): Duration in milliseconds
Response Data:
{
"success": true
}Response Fields:
success(boolean): True if successfulerror(string, optional): Error message if failed
Valid Transition Types (Display Names):
- "Cut"
- "Fade"
- "Swipe"
- "Slide"
- "Stinger"
- "Fade to Color"
- "Wipe"
- "Scene as Transition" (if available)
- "Move" (if Move Transition plugin is installed)
- "Shader" (if Shader Transition plugin is installed)
SetHideTransition
Set the hide transition for a specific source in a scene.
Request Parameters: Same as SetShowTransition
Response Data: Same as SetShowTransition
File and Output Management
GetRecordingOutputPath
Get the current recording output file path.
Request Parameters: None
Response Data:
{
"outputFilePath": "C:/Videos/Recording.mp4"
}Response Fields:
outputFilePath(string): Path to the current or next recording file
Notes:
- DEPRECATED: Use official OBS WebSocket 5.0+
GetRecordDirectoryinstead - Maintained for backward compatibility only
GetVLCCurrentFile
Get the currently playing file from a VLC source.
Request Parameters:
{
"sourceName": "VLC Source"
}Request Fields:
sourceName(string, required): Name of the VLC source
Response Data:
{
"title": "Current Video Title"
}Response Fields:
title(string): Title metadata of the currently playing fileerror(string, optional): Error message if failed
Possible Errors:
- "No source name provided"
- "Source not found"
- "Source is not a VLC source"
- "No proc handler available"
- "Failed to call proc handler"
- "No title metadata found"
Source Properties
GetBlendingMethod
Get the blending method for a source in a scene.
Request Parameters:
{
"sourceName": "Source",
"sceneName": "Scene"
}Request Fields:
sourceName(string, required): Name of the sourcesceneName(string, optional): Name of the scene (uses current scene if omitted)
Response Data:
{
"blendingMethod": "default",
"success": true
}Response Fields:
blendingMethod(string): Either "default" or "srgb_off"success(boolean): True if successfulerror(string, optional): Error message if failed
SetBlendingMethod
Set the blending method for a source in a scene.
Request Parameters:
{
"sourceName": "Source",
"sceneName": "Scene",
"method": "default"
}Request Fields:
sourceName(string, required): Name of the sourcesceneName(string, optional): Name of the scene (uses current scene if omitted)method(string, required): Either "default" or "srgb_off"
Response Data:
{
"status": "success"
}Response Fields:
status(string): "success" if successfulerror(string, optional): Error message if failed
GetDeinterlacing
Get the deinterlacing settings for a source.
Request Parameters:
{
"sourceName": "Source"
}Request Fields:
sourceName(string, required): Name of the source
Response Data:
{
"mode": "disable",
"fieldOrder": "top",
"success": true
}Response Fields:
mode(string): Deinterlacing modefieldOrder(string): Field order ("top" or "bottom")success(boolean): True if successfulerror(string, optional): Error message if failed
Valid Modes:
- "disable"
- "discard"
- "retro"
- "blend"
- "blend_2x"
- "linear"
- "linear_2x"
- "yadif"
- "yadif_2x"
SetDeinterlacing
Set the deinterlacing settings for a source.
Request Parameters:
{
"sourceName": "Source",
"mode": "yadif",
"fieldOrder": "top"
}Request Fields:
sourceName(string, required): Name of the sourcemode(string, required): Deinterlacing mode (see valid modes above)fieldOrder(string, optional): Field order ("top" or "bottom", defaults to "top")
Response Data:
{
"status": "success"
}Response Fields:
status(string): "success" if successfulerror(string, optional): Error message if failed
GetScaleFiltering
Get the scale filtering method for a source in a scene.
Request Parameters:
{
"sourceName": "Source",
"sceneName": "Scene"
}Request Fields:
sourceName(string, required): Name of the sourcesceneName(string, optional): Name of the scene (uses current scene if omitted)
Response Data:
{
"scaleFilter": "bilinear",
"success": true
}Response Fields:
scaleFilter(string): The current scale filtering methodsuccess(boolean): True if successfulerror(string, optional): Error message if failed
Valid Scale Filters:
- "disable"
- "point"
- "bicubic"
- "bilinear"
- "lanczos"
- "area"
SetScaleFiltering
Set the scale filtering method for a source in a scene.
Request Parameters:
{
"sourceName": "Source",
"sceneName": "Scene",
"filter": "lanczos"
}Request Fields:
sourceName(string, required): Name of the sourcesceneName(string, optional): Name of the scene (uses current scene if omitted)filter(string, required): Scale filtering method (see valid filters above)
Response Data:
{
"status": "success"
}Response Fields:
status(string): "success" if successfulerror(string, optional): Error message if failed
GetDownmixMono
Get the downmix to mono setting for a source.
Request Parameters:
{
"sourceName": "Source"
}Request Fields:
sourceName(string, required): Name of the source
Response Data:
{
"downmixMono": false,
"success": true
}Response Fields:
downmixMono(boolean): True if downmix to mono is enabledsuccess(boolean): True if successfulerror(string, optional): Error message if failed
SetDownmixMono
Set the downmix to mono setting for a source.
Request Parameters:
{
"sourceName": "Source",
"enabled": true
}Request Fields:
sourceName(string, required): Name of the sourceenabled(boolean, required): Enable or disable downmix to mono
Response Data:
{
"status": "success"
}Response Fields:
status(string): "success" if successfulerror(string, optional): Error message if failed
UI Interaction
OpenSourceProperties
Open the properties dialog for the currently selected source.
Request Parameters: None
Response Data:
{
"status": "Properties opened."
}Response Fields:
status(string): Success messageerror(string, optional): Error message if no source is selected
Notes:
- Requires a source to be selected in the current scene
- Opens the standard OBS source properties dialog
OpenSourceFilters
Open the filters dialog for the currently selected source.
Request Parameters: None
Response Data:
{
"status": "Filters opened."
}Response Fields:
status(string): Success messageerror(string, optional): Error message if no source is selected
Notes:
- Requires a source to be selected in the current scene
- Opens the standard OBS source filters dialog
OpenSourceInteraction
Open the interaction window for the currently selected source.
Request Parameters: None
Response Data:
{
"status": "Interact window opened."
}Response Fields:
status(string): Success messageerror(string, optional): Error message if no source is selected
Notes:
- Requires a source to be selected in the current scene
- Only works for sources that support interaction (e.g., Browser sources)
OpenSceneFilters
Open the filters dialog for the current scene.
Request Parameters: None
Response Data:
{
"status": "Scene filters opened."
}Response Fields:
status(string): Success messageerror(string, optional): Error message if no current scene
Video Capture Device Management
ActivateAllVideoCaptureDevices
Activate all video capture devices in the current OBS session.
Request Parameters: None
Response Data:
{
"status": "All video capture devices activated successfully",
"success": true
}Response Fields:
status(string): Success messagesuccess(boolean): True if successfulerror(string, optional): Error message if failed
DeactivateAllVideoCaptureDevices
Deactivate all video capture devices in the current OBS session.
Request Parameters: None
Response Data:
{
"status": "All video capture devices deactivated successfully",
"success": true
}Response Fields:
status(string): Success messagesuccess(boolean): True if successfulerror(string, optional): Error message if failed
Notes:
- Useful for temporarily disabling all cameras without removing them from scenes
RefreshAllVideoCaptureDevices
Refresh all video capture devices in the current OBS session.
Request Parameters: None
Response Data:
{
"status": "All video capture devices refresh initiated successfully",
"success": true
}Response Fields:
status(string): Success messagesuccess(boolean): True if successfulerror(string, optional): Error message if failed
Notes:
- Forces all video capture devices to reinitialize
- Useful when a camera has been disconnected and reconnected
Transition Copy/Paste
CopyShowTransition
Copy the show transition from the currently selected source.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Requires a source to be selected in the current scene
- Stores transition settings in plugin clipboard for pasting
CopyHideTransition
Copy the hide transition from the currently selected source.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Requires a source to be selected in the current scene
- Stores transition settings in plugin clipboard for pasting
PasteShowTransition
Paste the previously copied show transition to the currently selected source.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Requires a source to be selected in the current scene
- Requires a show transition to have been previously copied
PasteHideTransition
Paste the previously copied hide transition to the currently selected source.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): Always true
Notes:
- Requires a source to be selected in the current scene
- Requires a hide transition to have been previously copied
Group and Visibility Management
GroupSelectedSources
Group all currently selected sources in the current scene into a new group.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): True if grouping was successfulerror(string, optional): Error message if failed
Possible Errors:
- "Failed to group selected sources. Ensure at least 2 sources are selected."
- "No current scene found"
- "Invalid scene source"
- "No sources selected"
- "At least 2 sources must be selected"
Notes:
- Requires at least 2 sources to be selected in the current scene
- Creates a new group with an automatically generated unique name (e.g., "Group", "Group 1", etc.)
- The group is created at the position of the first selected item
- All selected sources will be moved into the new group
- Sources maintain their relative order within the group
Example Use Cases:
- Quickly organize multiple sources into a logical grouping
- Create groups via automation scripts
- Batch organize sources during scene setup
ToggleVisibilitySelectedSources
Toggle the visibility of all currently selected sources in the current scene.
Request Parameters: None
Response Data:
{
"success": true
}Response Fields:
success(boolean): True if toggle was successfulerror(string, optional): Error message if failed
Possible Errors:
- "Failed to toggle visibility. Ensure sources are selected."
- "No current scene found"
- "Invalid scene source"
- "No sources selected"
Notes:
- Smart toggle behavior: If any selected sources are visible, all will be hidden. If all are hidden, all will be shown.
- Only affects sources that are currently selected in the sources list
- Does not affect the selection state of the sources
- Works with multiple sources simultaneously
Example Use Cases:
- Toggle visibility of multiple related sources at once
- Show/hide entire groups of elements with a single command
- Quick visibility management during streaming
GetSelectedVisibility
Read back how many sources are selected and whether any of them are visible.
Request Parameters: None
Response Data:
{
"count": 2,
"visible": true
}Response Fields:
count(number): How many sources are currently selectedvisible(boolean): True if any of the selected sources are visible
Notes:
- Read-only, and matches the smart toggle behaviour of
ToggleVisibilitySelectedSources, so a button can show what the next press will do countis 0 when nothing is selected
Deprecated Commands
The following command names are deprecated but still supported for backward compatibility. Use the PascalCase versions instead.
| Deprecated Name | Current Name |
|---|---|
getBitrate | GetStreamBitrate |
version | GetPluginVersion |
check_plugins | CheckRequiredPlugins |
toggleLockAllSources | ToggleLockAllSources |
toggleLockCurrentSources | ToggleLockCurrentSceneSources |
refresh_audio_monitoring | RefreshAudioMonitoring |
refresh_browser_sources | RefreshBrowserSources |
getCurrentSource | GetSelectedSource |
getShowTransition | GetShowTransition |
getHideTransition | GetHideTransition |
setShowTransition | SetShowTransition |
setHideTransition | SetHideTransition |
getOutputFilePath | GetRecordingOutputPath |
vlcGetCurrentFile | GetVLCCurrentFile |
loadStreamupFile | LoadStreamUpFile |
openSourceProperties | OpenSourceProperties |
openSourceFilters | OpenSourceFilters |
openSourceInteract | OpenSourceInteraction |
openSceneFilters | OpenSceneFilters |
Error Handling
All commands follow consistent error handling patterns:
Success Response:
- Contains relevant data fields
- May include
success: trueboolean
Error Response:
- Contains
errorfield with descriptive message - May include
success: falseboolean
Common Errors:
- "Scene not found"
- "Source not found"
- "Source not found in scene"
- "No source selected"
- "Invalid parameters"
- Missing required fields
Notes
- All commands are case-sensitive
- Scene item IDs are unique per scene
- Source names are case-sensitive and must match exactly
- Transition display names are localized based on OBS language settings
- Commands that operate on "selected source" require a source to be selected in OBS
- File paths should use forward slashes (/) or escaped backslashes (\\)
- Thread-safe operations are executed on appropriate OBS threads automatically
Support and Resources
- StreamUP plugin documentation
- StreamUP OBS Plugin Commands, every one of these commands as a ready-made Streamer.Bot action
- Report an issue on GitHub
- Ask in Discord
- OBS WebSocket protocol reference