Skip to content

JavaScript OBS API

API version 6.6 — the host API SE.Live exposes to page JavaScript running inside OBS.

Converted from JavaScript OBS API Version 6.6.docx — last recorded API revision 2025-10-07, file last saved 2025-10-09, Word revision 117 of a document started 2018-05-22. That document is no longer the source of truth; this tree is.

Start here

Abstract what this API is
Status of this Document how stable the spec is
Conventions naming, callbacks, error handling
General guidelines how to use the API well
Versioning how API versions are numbered
Web Authentication authenticating a page
Goals and Considerations design rationale
Revision History every change, 1.0 → 6.6

Reference

window.host by group

All window.host calls, alphabetically

Calls marked ⚠️ are documented but not registered by the plug-in — deprecated and removed, or never implemented. Open one to see which.

Call Group
addAudioComposition(AudioCompositionInfo, ResultCallback< AudioCompositionInfo \| null>) Audio Compositions
addBackgroundWorker(BackgroundWorkerInfo, ResultCallback<workerId>) Background workers
addBrowserScopedHttpServer(GenericNetworkServiceInfo, ResultCallback<GenericNetworkServiceInfo>) HTTP server
addCurrentSceneItemBrowserSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addCurrentSceneItemGameCaptureSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addCurrentSceneItemGroup(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addCurrentSceneItemObsNativeSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addCurrentSceneItemVideoCaptureSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addDockingWidget(DockingWidgetInfo, ResultCallback<widgetId>) Docking widgets
addHotkeyBinding(HotkeyBindingInfo, ResultCallback<boundHotkeyId>) Hotkey bindings
addRecordingOutput(OutputInfo, ResultCallback<success>) Recording Outputs
addReplayBufferOutput(OutputInfo, ResultCallback<success>) Replay Buffer Outputs
addScene(SceneInfo, ResultCallback<sceneId>) Scenes
addSceneCollection(SceneCollectionInfo, ResultCallback<success>) Scene collections
addSceneItemBrowserSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addSceneItemGameCaptureSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addSceneItemGroup(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addSceneItemObsNativeSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addSceneItemVideoCaptureSource(SceneItemInfo, ResultCallback<SceneItemInfo>) Scene items
addSharedVideoComposition(SharedVideoCompositionInfo, ResultCallback<SharedVideoCompositionInfo \| null>) Shared Video Compositions
addStreamingOutput(OutputInfo, ResultCallback<success>) Streaming Outputs
addVideoComposition(VideoCompositionInfo, ResultCallback< VideoCompositionInfo \| null>) Video Compositions
adviseSignedIn(ResultCallback<success>) Logged-in notification
adviseSignedOut(ResultCallback<success>) Logged-in notification
adviseStreamingStartUIRequestAccepted (ResultCallback<success>) Streaming
adviseStreamingStartUIRequestRejected (ResultCallback<success>) Streaming
apiMajorVersion Properties
apiMinorVersion Properties
batchInvokeSeries(InvokeInfo[], ResultCallback<result[]>) Invoke API methods in Batch Mode
beginDeferSaveTransaction(ResultCallback<transactionHandle>) Defer settings save
beginOnBoarding(ResultCallback<success>) On-boarding
broadcastEvent(EventInfo, ResultCallback<success>) Message bus
broadcastMessage(message<any>, ResultCallback<success>) Message bus
closeNonModalDialogsByIds(array<id>, ResultCallback<success>) Non-Modal dialog
completeDeferSaveTransaction(transactionHandle, ResultCallback<success>) Defer settings save
completeOnBoarding(ResultCallback<success>) On-boarding
connectVideoCompositionToSharedVideoComposition({ sharedVideoCompositionId: string, videoCompositionId: string }, ResultCallback<SharedVideoCompositionInfo>) Shared Video Compositions
createUserEnvironmentBackupPackage(BackupRequestInfo, ResultCallback<BackupContentInfo>) Backup/Restore
deleteAllCookies(ResultCallback<success>) Cookies
disableRecordingOutputsByIds(Array<id>, ResultCallback<success>) Recording Outputs
disableReplayBufferOutputsByIds(Array<id>, ResultCallback<success>) Replay Buffer Outputs
disableStreamingOutputsByIds(Array<id>, ResultCallback<success>) Streaming Outputs
disconnectVideoCompositionsFromSharedVideoCompositionsByIds(Array<string>, ResultCallback<success>) Shared Video Compositions
⚠️ dispatchKeyboardEvent(KeyboardEventInfo, ResultCallback<success>) Synthetic input
⚠️ dispatchMouseEvent(MouseEventInfo, ResultCallback<success>) Synthetic input
enableRecordingOutputsByIds(Array<id>, ResultCallback<success>) Recording Outputs
enableReplayBufferOutputsByIds(Array<id>, ResultCallback<success>) Replay Buffer Outputs
enableStreamingOutputsByIds(Array<id>, ResultCallback<success>) Streaming Outputs
endDialog(object, ResultCallback<success>) Generic dialog API
endModalDialog(object, ResultCallback<success>) Modal dialog
endNonModalDialog(object, ResultCallback<success>) Non-Modal dialog
focusNonModalDialogById(id, ResultCallback<success>) Non-Modal dialog
getAllAudioCompositions(ResultCallback< id: AudioCompositionInfo }>) Audio Compositions
getAllAvailableAudioEncoderClasses(ResultCallback<ObsEncoderInfo[]>) Audio & Video Composition Encoders
getAllAvailableVideoEncoderClasses(ResultCallback<ObsEncoderInfo[]>) Audio & Video Composition Encoders
getAllBackgroundWorkers(ResultCallback<{id:BackgroundWorkerInfo}>) Background workers
getAllBrowserScopedHttpServers(ResultCallback<GenericNetworkServiceInfo[]>) HTTP server
getAllCurrentSceneItems(ResultCallback<SceneItemInfo[]>) Scene items
getAllDockingWidgets(ResultCallback<{id:DockingWidgetInfo}>) Docking widgets
getAllExistingAudioInputSources(ResultCallback<InputSourceTypeInfo[]>) Existing input sources
getAllExistingInputSources(ResultCallback<InputSourceTypeInfo[]>) Existing input sources
getAllExistingVideoInputSources(ResultCallback<InputSourceTypeInfo[]>) Existing input sources
getAllHotkeyBindings(ResultCallback<HotkeyBindingInfo[]>) Hotkey bindings
getAllLoadedHostModules(ResultCallback<LoadedHostModuleInfo[]>) Modules
getAllManagedHotkeyBindings(ResultCallback<HotkeyBindingInfo[]>) Hotkey bindings
getAllNonModalDialogs(ResultCallback<{id: DialogInfo}>) Non-Modal dialog
getAllProfiles(ResultCallback<ProfileInfo[]>) Profiles
⚠️ getAllRazerWyvrnEvents(ResultCallback<RazerWyvrnEventInfo[]>) Razer WYVRN
getAllRecordingOutputs(ResultCallback<{id: OutputInfo}>) Recording Outputs
getAllReplayBufferOutputs(ResultCallback<{id: OutputInfo}>) Replay Buffer Outputs
getAllSceneCollections(ResultCallback<SceneCollectionInfo[]>) Scene collections
getAllSceneItems(SceneInfo, ResultCallback<SceneItemInfo[]>) Scene items
getAllScenes(ResultCallback<SceneInfo[]>) Scenes
getAllScenes({ videoCompositionId }, ResultCallback<SceneInfo[]>) Scenes
getAllScopedStorageJsonItems(ScopedStorageItemInfo, ResultCallback< ScopedStorageItemInfo [] \| null>) Scoped Storage
getAllSharedVideoCompositions(ResultCallback<{ id: SharedVideoCompositionInfo }>) Shared Video Compositions
getAllStreamingOutputs(ResultCallback<{id: OutputInfo}>) Streaming Outputs
getAllVideoCompositions(ResultCallback<{ id: VideoCompositionInfo }>) Video Compositions
getAuxiliaryMenuItems(ResultCallback<MenuItemInfo[]>) Menu
getAvailableAudioEncoderClassProperties(ObsEncoderInfo, ResultCallback<ObsEncoderInfo>) Audio & Video Composition Encoders
getAvailableAudioEncoders(ResultCallback<EncoderInfo[]>) Encoders
getAvailableAudioFilterSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Filter source types
getAvailableAudioInputSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Input source types
getAvailableEncoders(ResultCallback<EncoderInfo[]>) Encoders
getAvailableFilterSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Filter source types
getAvailableInputSourceClasses(ResultCallback<string[]>) Scene items
getAvailableInputSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Input source types
getAvailableTransitionClasses(ResultCallback<TransitionInfo[]>) Transitions
getAvailableVideoEncoderClassProperties(ObsEncoderInfo, ResultCallback<ObsEncoderInfo>) Audio & Video Composition Encoders
getAvailableVideoEncoders(ResultCallback<EncoderInfo[]>) Encoders
getAvailableVideoFilterSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Filter source types
getAvailableVideoInputSourceTypes(ResultCallback<InputSourceTypeInfo[]>) Input source types
⚠️ getContainerForeignPopupWindowsProperties(ResultCallback<ForeignPopupWindowsInfo>) Popup window
getCurrentContainerProperties(ResultCallback<ContainerInfo>) Container information
getCurrentProfile(ResultCallback<ProfileInfo>) Profiles
getCurrentScene(ResultCallback<SceneInfo>) Scenes
getCurrentScene({ videoCompositionId }, ResultCallback<SceneInfo>) Scenes
getCurrentSceneCollectionProperties(ResultCallback<SceneCollectionInfo>) Scene collections
getCurrentSceneItemPropertiesById(SceneItemInfo, ResultCallback<success>) Scene items
getCurrentSceneItemsAuxiliaryActions(ResultCallback<ActionInfo[]>) Scene items
getEncoderProperties(EncoderInfo, ResultCallback<ObsEncoderInfo \| null>) Encoders
getEncodingSettings(ResultCallback<EncodingSettings>) Output settings
getExternalSceneDataProviders(ResultCallback<ExternalSceneDataProviderInfo>) External Scene Data
getExternalSceneDataSceneCollectionContent(ExternalSceneDataSceneCollectionInfo, ResultCallback<ExternalSceneDataSceneCollectionContent>) External Scene Data
getExternalSceneDataSceneCollections(ExternalSceneDataProviderInfo, ResultCallback<ExternalSceneDataSceneCollectionInfo>) External Scene Data
getFilterSourceProperties(InputSourceTypeInfo, ResultCallback<InputSourceTypeInfo \| null>) Filter source types
⚠️ getHostCapabilities(ResultCallback<HostCapabilities>) Host information
getHostProperties(ResultCallback<HostInfo>) Host information
getHostReleaseGroupProperties(ResultCallback<ReleaseGroupInfo>) Release groups
getInputSourceProperties(InputSourceTypeInfo, ResultCallback<InputSourceTypeInfo \| null>) Input source types
getNativeStreamingServiceIntegrationStatus(ResultCallback<NativeStreamingServiceIntegrationInfo> Native Integration with Streaming Services
getSceneItemBoundingBoxInViewport(SceneItemInfo or ViewportSceneItemGeometryInfo, ResultCallback<ViewportSceneItemGeometryInfo>) Scene items
getSceneItemPropertiesById(SceneItemInfo, ResultCallback<success>) Scene items
getSceneItemRotationInViewport(SceneItemInfo or ViewportSceneItemRotationInfo, ResultCallback<ViewportSceneItemRotationInfo>) Scene items
getScenesAuxiliaryActions(ResultCallback<ActionInfo[]>) Scenes
getShowBuiltInMenuItems(ResultCallback<bool>) Menu
getSourceClassProperties(SceneItemInfo, RestulCallback<ObsPropertyInfo[]>) Scene items
getStartupFlags(ResultCallback<number<flags>>) Startup flags
getStreamingStatus(ResultCallback<StreamingStatusInfo>) Streaming
getSystemCPUUsageTimes(ResultCallback<SystemCPUUsageTimes>) System resources
getSystemHardwareProperties(ResultCallback<SystemHardwareInfo>) System resources
getSystemMemoryUsage(ResultCallback<SystemMemoryUsageInfo>) System resources
getUserInterfaceState(ResultCallback<UserInterfaceStateProperties>) User interface state
getVideoCompositionTransition(object<{ videoCompositionId }>, ResultCallback<TransitionInfo \| null \| false>) Transitions
getVideoCompositionViewOverlayProperties(ResultCallback<VideoCompositionViewOverlayInfo \| null>) Video Composition View Overlays
groupDockingWidgetsPairByIds(firstWidgetId, secondWidgetId, ResultCallback<success>) Docking widgets
hideCentralWidget(ResultCallback<success>) Central widget
hideDockingWidgetById(string<widgetId>, ResultCallback<success>) Docking widgets
hideNotificationBar(ResultCallback<success>) Notification bar
hideOutputPreviewFrame (ResultCallback<success>) Output preview area frame
hideOutputPreviewTitleBar (ResultCallback<success>) Output preview area title bar
hostContainerHidden Properties
hostReady Properties
httpRequestText(HTTPRequestInfo, ResultCallback<HTTPResponseInfo>) HTTP Requests
insertDockingWidgetAfterId(firstWidgetId, secondWidgetId, ResultCallback<success>) Docking widgets
insertDockingWidgetBeforeId(firstWidgetId, secondWidgetId, ResultCallback<success>) Docking widgets
invokeCurrentSceneItemDefaultActionById(string<sceneItemId>, ResultCallback<success>) Scene items
invokeCurrentSceneItemDefaultContextMenuById(string<sceneItemId>, ResultCallback<success>) Scene items
openDefaultBrowser(url, ResultCallback<success>) External browser
openFileLocationInHostFileManager(string<filePath>, ResultCallback<success>) Modules
openPopupWindow(PopupWindowInfo, ResultCallback<success>) Popup window
openSceneItemFiltersDialogById(string<sceneItemId>, ResultCallback<success>) Scene items
openSceneItemInteractionDialogById(string<sceneItemId>, ResultCallback<success>) Scene items
openSceneItemPropertiesDialogById(string<sceneItemId>, ResultCallback<success>) Scene items
openSceneItemTransformEditorDialogById(string<sceneItemId>, ResultCallback<success>) Scene items
queryHostReleaseGroupUpdateAvailability([QuerySoftwareUpdateArgs], ResultCallback<success>) Release groups
queryUserEnvironmentBackupPackageContent(BackupContentInfo, ResultCallback<BackupContentInfo>) Backup/Restore
queryUserEnvironmentBackupReferencedFiles (BackupRequestInfo, ResultCallback<BackupContentInfo>) Backup/Restore
readScopedStorageJsonItem(ScopedStorageItemInfo, ResultCallback< ScopedStorageItemInfo \| null>) Scoped Storage
⚠️ reloadAllBrowserSources(ResultCallback<success>) Browser Sources
removeAudioCompositionsByIds(Array<audioCompositionId>, ResultCallback<success>) Audio Compositions
removeBackgroundWorkersByIds(array<workerId>, ResultCallback<success>) Background workers
removeBrowserScopedHttpServersByIds(<string\|string[]>, ResultCallback<success>) HTTP server
removeCurrentSceneItemsByIds(array<sceneItemId>, ResultCallback<success>) Scene items
removeDockingWidgetsByIds(array<widgetId>, ResultCallback<success>) Docking widgets
removeHotkeyBindingById(hotkeyId, ResultCallback<success>) Hotkey bindings
removeRecordingOutputsByIds(Array<id>, ResultCallback<success>) Recording Outputs
removeReplayBufferOutputsByIds(Array<id>, ResultCallback<success>) Replay Buffer Outputs
removeSceneItemsByIds(array<sceneItemId>, ResultCallback<success>) Scene items
removeScenesByIds(array<sceneId>, ResultCallback<success>) Scenes
removeScopedStorageJsonItem(ScopedStorageItemInfo, ResultCallback< ScopedStorageItemInfo \| null>) Scoped Storage
removeSharedVideoCompositionsByIds(Array<string>, ResultCallback<success>) Shared Video Compositions
removeStreamingOutputsByIds(Array<id>, ResultCallback<success>) Streaming Outputs
removeVideoCompositionsByIds(Array<videoCompositionId>, ResultCallback<success>) Video Compositions
removeVideoCompositionViewOverlay(ResultCallback<success>) Video Composition View Overlays
requestStreamingStart(ResultCallback<success>) Streaming
requestStreamingStop(ResultCallback<success>) Streaming
restoreUserEnvironmentBackupPackageContent(BackupContentInfo, ResultCallback<success>) Backup/Restore
sendHttpRequestResponse(string<id>, HTTPResponseInfo, ResultCallback<success>) HTTP server
setAudioCompositionProperties(AudioCompositionInfo, ResultCallback< AudioCompositionInfo \| null>) Audio Compositions
setAuxiliaryMenuItems(MenuItemInfo[], ResultCallback<success>) Menu
⚠️ setContainerForeignPopupWindowsProperties(ForeignPopupWindowsInfo, ResultCallback<success>) Popup window
⚠️ setCurrentProfileById(ProfileInfo, ResultCallback<success>) Profiles
setCurrentSceneById(sceneId, ResultCallback<success>) Scenes
setCurrentSceneCollectionById(sceneCollectionId, ResultCallback<success>) Scene collections
setCurrentSceneItemPropertiesById(SceneItemInfo, ResultCallback<success>) Scene items
setCurrentSceneItemsAuxiliaryActions(ActionInfo[], ResultCallback<success>) Scene items
setDockingWidgetDimensionsById(widgetId, DimensionsInfo, ResultCallback<success>) Docking widgets
setDockingWidgetPositionById(widgetId, PositionInfo, ResultCallback<success>) Docking widgets
setDockingWidgetTitleById(widgetId, title, ResultCallback<success>) Docking widgets
setDockingWidgetUrlById(widgetId, url, ResultCallback<success>) Docking widgets
setEncodingSettings(EncodingSettings, ResultCallback<success>) Output settings
setHostReleaseGroupProperties(quality<ReleaseGroupInfo>, ResultCallback<success>) Release groups
setHotkeyBindingTriggers(Pick<HotkeyBindingInfo, ‘id’ \| ‘triggers’>, ResultCallback<success>) Hotkey bindings
setNonModalDialogDimensionsById(id, DimensionsInfo, ResultCallback<success>) Non-Modal dialog
⚠️ setRazerWyvrnEvent(RazerWyvrnEventInfo, ResultCallback<success>) Razer WYVRN
setSceneItemPositionInViewport(ViewportSceneItemGeometryInfo, ResultCallback< ViewportSceneItemGeometryInfo>) Scene items
setSceneItemPropertiesById(SceneItemInfo, ResultCallback<success>) Scene items
setSceneItemRotationInViewport(ViewportSceneItemRotationInfo, ResultCallback< ViewportSceneItemRotationInfo>) Scene items
setScenePropertiesById(SceneInfo, ResultCallback<success>) Scenes
setScenesAuxiliaryActions(ActionInfo[], ResultCallback<success>) Scenes
setSharedVideoCompositionProperties(SharedVideoCompositionInfo, ResultCallback<SharedVideoCompositionInfo \| null>) Shared Video Compositions
setShowBuiltInMenuItems(bool<show>, ResultCallback<success>) Menu
setStartupFlags(number<flags>, ResultCallback<success>) Startup flags
setStreamingSettings(ResultCallback<success>) Output settings
setStreamingStartUIHandlerProperties (StreamingStartUIHandlerProperties, ResultCallback<success>) Streaming
setUserInterfaceState(UserInterfaceStateProperties , ResultCallback<success>) User interface state
setVideoCompositionProperties(VideoCompositionInfo, ResultCallback< VideoCompositionInfo \| null>) Video Compositions
setVideoCompositionTransition(TransitionInfo, ResultCallback<TransitionInfo \| null \| false>) Transitions
setVideoCompositionViewOverlayProperties(VideoCompositionViewOverlayInfo, ResultCallback<VideoCompositionViewOverlayInfo \| null>) Video Composition View Overlays
showCentralWidget(CentralWidgetInfo, ResultCallback<success>) Central widget
showDockingWidgetById(string<widgetId>, ResultCallback<success>) Docking widgets
showModalDialog(DialogInfo, ResultCallback<object>) Modal dialog
showNonModalDialog(DialogInfo, ResultCallback<object>) Non-Modal dialog
showNotificationBar(NotificationBarInfo, ResultCallback<success>) Notification bar
showOutputPreviewFrame (FrameInfo, ResultCallback<success>) Output preview area frame
showOutputPreviewTitleBar (NotificationBarInfo, ResultCallback<success>) Output preview area title bar
showPopupMenuAtMousePointerPosition(MenuItemInfo[], ResultCallback<success>) Menus
showStatusBarTemporaryMessage(StatusBarMessageInfo, ResultCallback<success>) Status bar
showVideoCompositionTransitionPropertiesDialog(object<{ videoCompositionId }>, ResultCallback<success>) Transitions
streamingBandwidthTestBegin(BandwidthTestSettings, ServerInfo[], ResultCallback<success>) Streaming bandwidth test
streamingBandwidthTestEnd(stopIfRunning, ResultCallback<BandwidthTestStatus>) Streaming bandwidth test
streamingBandwidthTestGetStatus(ResultCallback<BandwidthTestStatus>) Streaming bandwidth test
takeScreenshot(Object<{ videoCompositionId?: string }>, ResultCallback<success>) Screenshots
toggleDockingWidgetFloatingById(widgetId, ResultCallback<success>) Docking widgets
triggerRecordingOutputSplitById(string<id>, ResultCallback<success>) Recording Outputs
triggerReplayBufferOutputSaveById(string<id>, ResultCallback<success>) Replay Buffer Outputs
ungroupCurrentSceneItemGroupById(SceneItemInfo, ResultCallback<success>) Scene items
ungroupSceneItemGroupById(SceneItemInfo, ResultCallback<success>) Scene items
writeScopedStorageJsonItem(ScopedStorageFileInfo, ResultCallback< ScopedStorageFileInfo \| null>) Scoped Storage

Adding a new API call

The tree mirrors the shape of the API, so a new call touches one file:

  1. Add it to the group file under host/ covering its area — host/scenes.md, host/docking-widgets.md, and so on. Copy a neighbouring entry: a ## heading holding the full signature in backticks, then an Available since API version X line, then the description.
  2. If it takes or returns a new object type, add types/<TypeName>.md with a Property | Type | Description table.
  3. Add a row to revision-history.md, newest last.
  4. Add a row to the alphabetical index above.

A new group is a new file under host/, plus a line in the group list and in host/README.md.

Signatures are the headings, so keep them exact — the index links to them by anchor, and a changed signature silently breaks that link.