Skip to content

Desuq Cafe

Documentation menu

Handlers API

The plugin splits OBS control into 11 domain handlers, each a UInhyeongOBSHandlerBase subclass owned by the central UInhyeongOBSWebSocketClient. A handler caches its own domain state, sends requests through the client, and fires both a Blueprint-assignable dynamic delegate (FOBSOn*) and a matching native C++ delegate (FOBSOn*Native) for every event. Every BlueprintAssignable On* delegate listed below has an identically-named On*Native C++ counterpart (suffix Native) you can bind from C++ via AddSP / AddLambda.

Reaching a handler. From C++ or Blueprint, get the client and call its typed accessor:

UInhyeongOBSScenes* Scenes = Subsystem->GetClient()->GetScenes();
Scenes->SetCurrentProgramScene(TEXT("Gameplay"));

The client accessors are GetScenes(), GetAudio(), GetOutputs(), GetInputSettings(), GetMediaInputs(), GetStudioMode(), GetTransitions(), GetFilters(), GetScreenshots(), GetConfig(), and GetGeneral(). Handlers are created lazily on first access.

Many of the most common operations are also mirrored as convenience methods on the Subsystem API (e.g. scene switching, recording, mute/volume) so Blueprints never need to touch the handler. Where a Subsystem mirror exists it is noted under each handler. Methods only available on the handler (no Subsystem mirror) include replay collision-proofing (Outputs), persistent data (Config), the T-Bar (StudioMode), device-property enumeration (InputSettings), and game-event emission (General). For the full event catalog and signatures see Events.

Methods that take a TSharedPtr<FJsonObject> are C++-only. Their *FromString siblings are the Blueprint-friendly equivalents that accept a JSON string.


UInhyeongOBSScenes

Scene switching, scene CRUD, groups, scene items (sources), z-order/lock/blend, and full scene-item transforms. Reached via GetClient()->GetScenes(). Common operations are mirrored on the Subsystem.

FunctionParamsDescription
GetSceneListNoneRequest the scene list (fires OnSceneListUpdated).
SetCurrentProgramSceneSceneNameSwitch the program scene by name.
GetCurrentProgramSceneNoneRequest the current program scene.
CreateSceneSceneNameCreate a new (uniquely-named) scene.
RemoveSceneSceneNameRemove a scene by name.
RemoveSceneByUuidSceneUuidRemove a scene by UUID.
SetSceneNameSceneName, NewSceneNameRename a scene.
SetSceneNameByUuidSceneUuid, NewSceneNameRename a scene by UUID.
GetGroupListNoneList all groups.
GetGroupSceneItemListGroupNameList items within a group.
GetCachedGroupsTArray<FString>Cached group names.
GetSceneItemSourceSceneName, SceneItemIdGet the source backing a scene item.
GetSourceActiveSourceNameGet a source’s active/show state.
GetSourceActiveByUuidSourceUuidSame, by UUID.
GetSceneTransitionOverrideSceneNameFetch a scene’s transition override.
SetSceneTransitionOverrideSceneName, TransitionName, TransitionDuration=-1Set a scene’s transition override (empty name to clear).
ClearSceneTransitionOverrideSceneNameClear a scene’s transition override.
GetCachedTransitionOverrideSceneName, OutOverrideboolRead a cached transition override.
FetchAllTransitionOverridesNoneFetch overrides for all cached scenes.
GetCurrentSceneNameFStringCached current program scene name.
GetCachedScenesTArray<FOBSScene>Cached scene list.
GetCachedScenesWithItemsTArray<FOBSSceneWithItems>Cached scenes plus their items.
GetSceneItemListSceneNameList scene items (sources) in a scene.
SetSceneItemEnabledSceneName, SceneItemId, bEnabledShow/hide a scene item.
GetSceneItemIdSceneName, SourceNameResolve a source name to its numeric scene-item id.
CreateSceneItemSceneName, SourceName, bEnabled=trueAdd an existing source to a scene.
RemoveSceneItemSceneName, SceneItemIdRemove a scene item (reference only).
DuplicateSceneItemSceneName, SceneItemId, DestinationSceneName=""Duplicate a scene item (reference).
GetSceneItemLockedSceneName, SceneItemIdGet a scene item’s lock state.
SetSceneItemLockedSceneName, SceneItemId, bLockedLock/unlock a scene item.
GetSceneItemIndexSceneName, SceneItemIdGet a scene item’s z-order index.
SetSceneItemIndexSceneName, SceneItemId, SceneItemIndexSet a scene item’s z-order index.
GetSceneItemBlendModeSceneName, SceneItemIdGet a scene item’s blend mode.
SetSceneItemBlendModeSceneName, SceneItemId, BlendModeSet a scene item’s blend mode (EOBSBlendMode).
GetSceneItemTransformSceneName, SceneItemIdFetch a scene item’s transform.
SetSceneItemTransformSceneName, SceneItemId, TransformApply a full FOBSSceneItemTransform.
SetSceneItemPositionSceneName, SceneItemId, X, YSet position only.
SetSceneItemRotationSceneName, SceneItemId, RotationSet rotation only (degrees).
SetSceneItemScaleSceneName, SceneItemId, ScaleX, ScaleYSet scale only.
SetSceneItemCropSceneName, SceneItemId, Left, Top, Right, BottomSet crop only.
SetSceneItemBoundsSceneName, SceneItemId, BoundsType, BoundsWidth, BoundsHeight, BoundsAlignment=0Set bounding-box properties.
GetCachedSceneItemTransformSceneName, SceneItemId, OutTransformboolRead a cached transform.
FetchSceneItemTransformsSceneNameCache transforms for all items in a scene.
FetchAllSceneItemTransformsNoneCache transforms for all items in all scenes (fires OnAllTransformsFetched).
IsTransformCachedSceneName, SceneItemIdboolWhether a transform is cached.
SetTransformEventsEnabledbEnableOpt into the high-volume SceneItemTransformChanged event.
AreTransformEventsEnabledboolWhether transform events are subscribed.
RefreshAllSceneDataNoneRefresh all scene data.
GetCachedTransformCountint32Diagnostic count of cached transforms.
GetCachedTransitionOverrideCountint32Diagnostic count of cached overrides.

C++-only: SetSceneItemTransformFromJson plus static helpers TransformToJson, JsonToTransform, BoundsTypeToString/StringToBoundsType, BlendModeToString/StringToBlendMode.

EventParamsDescription
OnSceneListUpdatedScenesScene list changed.
OnAllTransformsFetchedScenesFetchAllSceneItemTransforms completed.
OnCurrentSceneChangedSceneNameProgram scene changed.
OnSceneItemTransformChangedSceneName, SceneItemId, TransformA scene item’s transform changed (requires SetTransformEventsEnabled(true)).
OnSceneItemCreatedscene-item detailsA source was added to a scene.
OnSceneItemRemovedscene-item detailsA scene item was removed.
OnSceneItemLockStateChangedlock detailsA scene item’s lock state changed.
OnSceneItemEnableStateChangedenable detailsA scene item’s visibility changed.
OnSceneItemListReindexedSceneNameScene items were reordered.
OnSceneCreatedscene detailsA scene was created.
OnSceneRemovedscene detailsA scene was removed.
OnSceneNameChangedrename detailsA scene was renamed.
OnTransitionOverrideReceivedoverride dataA scene’s transition override arrived.

UInhyeongOBSAudio

Inputs, mute, volume (dB and multiplier), advanced audio (balance, sync offset, monitor type, tracks), special inputs, input CRUD, and voice-activity opt-ins. Reached via GetClient()->GetAudio(). Mute/volume and input-list helpers are mirrored on the Subsystem.

FunctionParamsDescription
GetInputListInputKind=""List inputs, optionally filtered by kind.
GetCachedInputsTArray<FOBSInput>Cached input list.
GetCachedInputInputName, OutInputboolOne cached input by name.
RefreshAllAudioInfoNoneFetch volume/mute for all cached audio inputs.
SetInputMuteInputName, bMutedSet mute state.
ToggleInputMuteInputNameToggle mute.
GetInputMuteInputNameQuery mute (updates cache + fires event).
SetInputVolumeInputName, VolumeDbSet volume in dB.
SetInputVolumeMultiplierInputName, VolumeMulSet volume as a multiplier.
GetInputVolumeInputNameQuery volume (updates cache + fires event).
AdjustInputVolumeInputName, DeltaDbRelative volume change in dB.
RefreshAllAdvancedAudioInfoNoneFetch balance/sync/monitor/tracks for all cached inputs.
SetVolumeMetersEnabledbEnableOpt into the high-volume InputVolumeMeters stream (drives OnInputVolumeMeters).
SetInputActiveStateEventsEnabledbEnableOpt into InputActiveStateChanged (drives OnInputActiveStateChanged).
GetLastVolumeMetersTArray<FOBSInputVolumeMeter>Most recent volume-meter frame.
GetInputAudioBalanceInputNameQuery stereo balance.
SetInputAudioBalanceInputName, BalanceSet balance (0=left, 0.5=center, 1=right).
GetInputAudioSyncOffsetInputNameQuery A/V sync offset (ms).
SetInputAudioSyncOffsetInputName, OffsetMsSet sync offset (-950..20000, may be negative).
GetInputAudioMonitorTypeInputNameQuery monitor type.
SetInputAudioMonitorTypeInputName, MonitorTypeSet monitor type (EOBSMonitorType).
GetInputAudioTracksInputNameQuery audio-track enable states.
SetInputAudioTracksInputName, TracksSet all tracks (FOBSAudioTracks, tracks 1-6).
SetInputAudioTrackInputName, TrackNumber, bEnabledSet a single track (1-6).
GetSpecialInputsNoneGet default desktop/mic input names.
GetCachedSpecialInputsFOBSSpecialInputsCached special inputs.
CreateInputFromStringSceneName, InputName, InputKind, InputSettingsJson="", bSceneItemEnabled=trueCreate a new input + add to a scene.
RemoveInputInputNameRemove an input (fails if still in use).
SetInputNameInputName, NewInputNameRename an input.
GetInputKindListbUnversioned=falseList available input kinds.
GetCachedInputKindsTArray<FString>Cached input kinds.
SupportsAdvancedAudioPropertiesInputKindbool(static) Whether a kind supports balance/sync/tracks/monitor.
IsAudioInputKindInputKindbool(static) Whether a kind is an audio type.

C++-only: the *ByUuid variants (GetInputAudioBalanceByUuid, etc.), CreateInput, and RemoveInputByUuid.

EventParamsDescription
OnInputListUpdatedInputsInput list changed.
OnInputMuteStateChangedInputName, bMutedAn input’s mute changed.
OnInputVolumeChangedInputName, VolumeDb, VolumeMulAn input’s volume changed.
OnInputVolumeMetersMetersHigh-volume per-input levels (requires SetVolumeMetersEnabled(true)).
OnInputActiveStateChangedInputName, bVideoActiveAn input’s video-active state changed (requires opt-in).
OnInputCreatedinput detailsAn input was created.
OnInputRemovedinput detailsAn input was removed.
OnInputNameChangedrename detailsAn input was renamed.
OnInputKindListReceivedkindsInput-kind list arrived.
OnInputAudioBalanceChangedbalanceBalance changed/retrieved.
OnInputAudioSyncOffsetChangedoffsetSync offset changed/retrieved.
OnInputAudioTracksChangedtracksTracks changed/retrieved.
OnInputAudioMonitorTypeChangedmonitor typeMonitor type changed/retrieved.
OnSpecialInputsReceivedspecial inputsSpecial inputs retrieved.

UInhyeongOBSOutputs

Streaming, recording (incl. pause/resume, split, chapters), virtual camera, replay buffer (incl. collision-proofing), record directory, generic outputs, and stream captions. Reached via GetClient()->GetOutputs(). Streaming/recording control is mirrored on the Subsystem, but replay collision-proofing is handler-only.

FunctionParamsDescription
StartStream / StopStream / ToggleStreamNoneStreaming control.
GetStreamStatusNoneRequest stream status.
IsStreamingboolCached streaming flag.
GetLastStreamStatusFOBSStreamStatusLast stream status.
StartRecord / StopRecord / ToggleRecordNoneRecording control.
PauseRecord / ResumeRecord / ToggleRecordPauseNoneRecording pause control.
GetRecordStatusNoneRequest record status.
IsRecordingboolCached recording flag.
GetLastRecordStatusFOBSRecordStatusLast record status.
StartVirtualCam / StopVirtualCam / ToggleVirtualCamNoneVirtual camera control.
GetVirtualCamStatusNoneRequest virtual-cam status.
IsVirtualCamActiveboolCached virtual-cam flag.
StartReplayBuffer / StopReplayBuffer / ToggleReplayBufferNoneReplay buffer control.
SaveReplayBufferNoneSave the current replay buffer.
GetReplayBufferStatusNoneRequest replay-buffer status.
IsReplayBufferActiveboolCached replay-buffer flag.
GetLastReplayPathFStringPath of the last saved replay (post-rename).
SetReplayCollisionProofingbEnableRename each saved replay with a unique timestamp suffix (handler-only).
IsReplayCollisionProofingEnabledboolWhether collision-proofing is on.
SetNextReplayContextLabelLabelOne-shot label embedded in the next saved replay’s filename.
SaveReplayBufferWithContextContextLabelSet the next-replay label and save immediately.
GetRecordDirectoryNoneRequest the record directory.
SetRecordDirectoryDirectorySet the record directory (next recording).
GetCachedRecordDirectoryFStringCached record directory.
GetLastRecordedFilePathFStringPath of the last recorded file.
SplitRecordFileNoneSplit the recording into a new file.
CreateRecordChapterChapterName=""Add a chapter marker (OBS 30.2.0+, Hybrid MP4).
GetOutputListNoneList all outputs.
GetOutputStatusOutputNameStatus of one output.
GetOutputSettingsOutputNameSettings of one output.
SetOutputSettingsFromStringOutputName, JsonSettingsSet output settings from JSON.
StartOutput / StopOutput / ToggleOutputOutputNameControl a specific output.
GetCachedOutputsTArray<FOBSOutput>Cached output list.
SendStreamCaptionCaptionTextSend CEA-608 caption text (stream must be active).

C++-only: SetOutputSettings (JSON object) plus static helpers BuildReplayFilename and SanitizeReplayLabel.

EventParamsDescription
OnStreamStateChangedstateStream state changed.
OnRecordStateChangedstateRecord state changed.
OnRecordingStoppedoutput pathRecording stopped (with file path).
OnVirtualCamStateChangedstateVirtual-cam state changed.
OnReplayBufferStateChangedstateReplay-buffer state changed.
OnReplayBufferSavedsaved pathReplay saved (final path after any rename).
OnRecordFileChangednew pathRecord output rolled to a new file (split).
OnRecordDirectoryReceiveddirectoryRecord directory fetched.
OnOutputListReceivedoutputsOutput list fetched.
OnOutputStatusReceivedstatusOutput status fetched.

UInhyeongOBSInputSettings

Source settings for text/browser/image/media/color sources, default settings, and capture-device property access. Reached via GetClient()->GetInputSettings(). Button-press and list-property enumeration are handler-only.

FunctionParamsDescription
GetInputSettingsInputNameFetch an input’s settings (fires OnInputSettingsReceivedNative).
GetInputSettingsByUuidInputUuidSame, by UUID.
SetInputSettingsFromStringInputName, InputSettingsJson, bOverlay=trueApply settings from JSON.
GetInputDefaultSettingsInputKindGet default settings for a kind.
PressInputPropertiesButtonInputName, PropertyNamePress a button-type property (e.g. capture-device activate/deactivate).
GetInputPropertiesListPropertyItemsInputName, PropertyNameEnumerate a list-property’s items (device dropdown). Fires OnInputPropertyItemsReceived.
GetCachedInputSettingsStringInputNameFStringCached settings as JSON.
HasCachedSettingsInputNameboolWhether settings are cached.
ClearCachedSettingsInputNameClear one input’s cache.
ClearAllCachedSettingsNoneClear the whole settings cache.
SetTextSourceTextInputName, NewTextSet a text source’s text.
SetBrowserSourceUrlInputName, NewUrlSet a browser source’s URL.
SetImageSourceFileInputName, NewFilePathSet an image source’s file.
SetMediaSourceFileInputName, NewFilePath, bLooping=falseSet a media source’s file.
SetColorSourceColorInputName, ColorSet a color source’s color (ABGR int64).

C++-only: SetInputSettings / SetInputSettingsByUuid (JSON object) and GetCachedInputSettings (JSON object out-param).

EventParamsDescription
OnInputSettingsChangedinput detailsAn input’s settings changed.
OnInputPropertyItemsReceivedproperty itemsA list-property’s items (device dropdown) arrived.

Native-only: OnInputSettingsReceivedNative delivers the actual settings JSON from a GetInputSettings call.


UInhyeongOBSMediaInputs

Playback control, seeking, and status for media sources (VLC, Media Source). Reached via GetClient()->GetMediaInputs(). Defines the EOBSMediaInputAction and EOBSMediaState enums and the FOBSMediaInputStatus struct.

FunctionParamsDescription
GetMediaInputStatusInputNameQuery state/duration/cursor.
GetCachedMediaInputStatusInputName, OutStatusboolLast cached status.
TriggerMediaInputActionInputName, ActionPerform an EOBSMediaInputAction.
PlayMedia / PauseMedia / StopMedia / RestartMediaInputNamePlayback shortcuts.
NextMedia / PreviousMediaInputNamePlaylist navigation.
SetMediaInputCursorInputName, CursorMsSeek to an absolute position (ms).
OffsetMediaInputCursorInputName, OffsetMsRelative seek (ms).
SeekToPercentInputName, PercentSeek to a fraction (0.0-1.0) of duration.

Static helpers: MediaInputActionToString, MediaInputActionFromString, ParseMediaState.

EventParamsDescription
OnMediaInputPlaybackStartedInputNamePlayback started.
OnMediaInputPlaybackEndedInputNamePlayback ended.
OnMediaInputActionTriggeredInputName, ActionA media action fired.
OnMediaInputStatusReceivedStatusMedia status arrived.

UInhyeongOBSStudioMode

Studio Mode toggle, preview scene, and transitions including manual T-Bar scrubbing. Reached via GetClient()->GetStudioMode(). SetTBarPosition is handler-only.

FunctionParamsDescription
GetStudioModeEnabledNoneQuery Studio Mode state.
SetStudioModeEnabledbEnabledEnable/disable Studio Mode.
IsStudioModeEnabledboolCached Studio Mode flag.
GetCurrentPreviewSceneNoneQuery the preview scene.
SetCurrentPreviewSceneSceneNameSet the preview scene by name.
SetCurrentPreviewSceneByUuidSceneUuidSet the preview scene by UUID.
GetPreviewSceneNameFStringCached preview scene name.
GetPreviewSceneUuidFStringCached preview scene UUID.
TriggerStudioModeTransitionNoneTransition Preview to Program.
TriggerStudioModeTransitionWithOptionsTransitionName, TransitionDurationMs=-1Transition with a specific transition/duration.
SetTBarPositionPosition, bRelease=trueScrub the T-Bar (0=preview, 1=transitioned). Pass bRelease=false to hold it, for example on a Sequencer float track.
EventParamsDescription
OnStudioModeStateChangedbEnabledStudio Mode toggled.
OnCurrentPreviewSceneChangedscenePreview scene changed.

UInhyeongOBSTransitions

The current transition, its duration and settings, and live transition progress. Reached via GetClient()->GetTransitions().

FunctionParamsDescription
GetSceneTransitionListNoneList available transitions (fires OnTransitionListUpdated).
GetCachedTransitionsTArray<FOBSTransition>Cached transition list.
GetCurrentSceneTransitionNoneQuery the current transition.
SetCurrentSceneTransitionTransitionNameSet the current transition.
GetCurrentTransitionInfoFOBSCurrentTransitionInfoCached current-transition info.
GetCurrentTransitionNameFStringCached current transition name.
SetCurrentSceneTransitionDurationDurationMsSet the transition duration.
GetCurrentTransitionDurationint32Cached transition duration (ms).
SetCurrentSceneTransitionSettingsFromStringSettingsJson, bOverlay=trueSet transition-specific settings from JSON.
GetCurrentSceneTransitionCursorNoneQuery the active transition’s cursor.
GetCachedTransitionCursorfloatLast cursor value (0.0-1.0, or -1).
IsTransitionActiveboolWhether a transition is in progress.

C++-only: SetCurrentSceneTransitionSettings (JSON object).

EventParamsDescription
OnCurrentTransitionChangednameCurrent transition changed.
OnTransitionDurationChangeddurationTransition duration changed.
OnTransitionStartednameA transition started.
OnTransitionEndednameA transition ended (cut point).
OnTransitionVideoEndednameA transition’s video ended (Stingers).
OnTransitionListUpdatedlistTransition list changed.

UInhyeongOBSFilters

Source-filter CRUD, enable/reorder, and per-filter settings on inputs, scenes, and groups. Reached via GetClient()->GetFilters().

FunctionParamsDescription
GetSourceFilterKindListNoneList available filter kinds.
GetCachedFilterKindsTArray<FString>Cached filter kinds.
GetSourceFilterListSourceNameList a source’s filters.
GetSourceFilterListByUuidSourceUuidSame, by UUID.
GetCachedFiltersForSourceSourceNameTArray<FOBSSourceFilter>Cached filters for a source.
HasCachedFiltersForSourceSourceNameboolWhether filters are cached.
ClearCachedFiltersForSourceSourceNameClear one source’s filter cache.
ClearAllCachedFiltersNoneClear the whole filter cache.
GetSourceFilterSourceName, FilterNameGet one filter’s info.
GetSourceFilterDefaultSettingsFilterKindDefault settings for a filter kind.
CreateSourceFilterFromStringSourceName, FilterName, FilterKind, FilterSettingsJson=""Create a filter (JSON settings).
RemoveSourceFilterSourceName, FilterNameRemove a filter.
SetSourceFilterNameSourceName, FilterName, NewFilterNameRename a filter.
SetSourceFilterIndexSourceName, FilterName, FilterIndexReorder a filter in the chain.
SetSourceFilterEnabledSourceName, FilterName, bEnabledEnable/disable a filter.
SetSourceFilterSettingsFromStringSourceName, FilterName, FilterSettingsJson, bOverlay=trueSet filter settings from JSON.

C++-only: CreateSourceFilter and SetSourceFilterSettings (JSON object).

EventParamsDescription
OnSourceFilterCreatedfilter detailsA filter was created.
OnSourceFilterRemovedfilter detailsA filter was removed.
OnSourceFilterNameChangedrename detailsA filter was renamed.
OnSourceFilterSettingsChangedfilter detailsA filter’s settings changed.
OnSourceFilterEnableStateChangedenable detailsA filter’s enable state changed.
OnSourceFilterListReindexedSourceNameA source’s filter list was reordered.

Native-only: OnSourceFilterListReceivedNative fires after a GetSourceFilterList response is cached (used by editor combobox refresh).


UInhyeongOBSScreenshots

Capture screenshots to base64 or save to the OBS machine’s filesystem, plus texture-conversion utilities. Reached via GetClient()->GetScreenshots(). This handler has no OBS events and is pure request/response. Its On* delegates are handler-level only and not mirrored on the Subsystem.

FunctionParamsDescription
GetSourceScreenshotSourceName, ImageFormat="png"Capture to base64 (fires OnScreenshotCaptured).
GetSourceScreenshotByUuidSourceUuid, ImageFormat="png"Same, by UUID.
GetSourceScreenshotWithOptionsRequestCapture with full FOBSScreenshotRequest control.
GetSourceScreenshotScaledSourceName, ImageFormat, Width, Height, CompressionQuality=-1Capture scaled.
SaveSourceScreenshotSourceName, FilePath, ImageFormat="png"Save to a file on the OBS machine (fires OnScreenshotSaved).
SaveSourceScreenshotByUuidSourceUuid, FilePath, ImageFormat="png"Same, by UUID.
SaveSourceScreenshotWithOptionsRequestSave with full control (Request.ImageFilePath required).
SaveSourceScreenshotScaledSourceName, FilePath, ImageFormat, Width, Height, CompressionQuality=-1Save scaled.
CreateTextureFromBase64Base64ImageDataUTexture2D*(static) Decode base64 to a texture.
CreateTextureFromScreenshotResultResultUTexture2D*(static) Texture from an FOBSScreenshotResult.
DecodeBase64ImageDataBase64ImageData, OutBytes, OutFormatbool(static) Decode base64 to raw bytes.
CreateTextureFromBytesImageBytesUTexture2D*(static) Texture from raw bytes.
GetLastScreenshotResultFOBSScreenshotResultLast captured result.
GetLastSavedResultFOBSScreenshotSavedResultLast saved result.
IsCapturePendingboolWhether a capture is in flight.
EventParamsDescription
OnScreenshotCapturedresultBase64 screenshot ready.
OnScreenshotSavedresultScreenshot saved to the filesystem.

UInhyeongOBSConfig

Scene collections, profiles, profile parameters, stream-service settings, video settings, and a plugin-owned persistent key/value store. Reached via GetClient()->GetConfig(). Persistent-data methods are handler-only.

FunctionParamsDescription
GetSceneCollectionListNoneList scene collections (fires OnSceneCollectionListChanged).
SetCurrentSceneCollectionSceneCollectionNameSwitch scene collection (causes a reload pause).
CreateSceneCollectionSceneCollectionNameCreate and switch to a new collection.
GetCachedSceneCollectionsTArray<FString>Cached collection names.
GetCurrentSceneCollectionNameFStringCached current collection.
GetProfileListNoneList profiles (fires OnProfileListChanged).
SetCurrentProfileProfileNameSwitch profile.
CreateProfileProfileNameCreate and switch to a profile.
RemoveProfileProfileNameRemove a profile (not the active one).
GetCachedProfilesTArray<FString>Cached profile names.
GetCurrentProfileNameFStringCached current profile.
GetProfileParameterParameterCategory, ParameterNameRead a profile config parameter.
SetProfileParameterParameterCategory, ParameterName, ParameterValueWrite a profile config parameter.
GetStreamServiceSettingsNoneFetch stream-service settings (fires OnStreamServiceSettingsReceived).
SetStreamServiceSettingsSettingsSet stream-service settings (FOBSStreamServiceSettings).
SetStreamServiceSettingsFromStringServiceType, JsonSettingsSet from JSON.
SetSimpleRTMPSettingsServer, StreamKeyQuick custom-RTMP setup.
GetCachedStreamServiceSettingsFOBSStreamServiceSettingsCached settings.
GetVideoSettingsNoneFetch video settings (fires OnVideoSettingsReceived).
SetVideoSettingsSettingsSet video settings (not while streaming/recording).
SetBaseResolutionWidth, HeightSet canvas resolution.
SetOutputResolutionWidth, HeightSet scaled output resolution.
SetFPSFpsNumerator, FpsDenominator=1Set FPS as a fraction.
GetCachedVideoSettingsFOBSVideoSettingsCached video settings.
GetPersistentDataRealm, SlotNameRead a persistent slot (fires OnPersistentDataReceived).
SetPersistentDataRealm, SlotName, SlotValueJsonboolWrite a slot from a JSON value (empty = null). Invalid JSON returns false and sends nothing.
SetPersistentDataStringRealm, SlotName, SlotValueWrite a slot as a plain string.
GetCachedPersistentDataRealm, SlotName, OutSlotValueJsonboolRead a cached slot.

Realm is EOBSDataRealm (Global or Profile). C++-only: SetStreamServiceSettingsRaw (JSON object).

EventParamsDescription
OnStreamServiceSettingsReceivedsettingsStream-service settings retrieved.
OnVideoSettingsReceivedsettingsVideo settings retrieved.
OnPersistentDataReceivedslot valueA persistent slot was retrieved.
OnCurrentSceneCollectionChangingnameScene collection about to change.
OnCurrentSceneCollectionChangednameScene collection changed.
OnSceneCollectionListChangedlistScene-collection list changed.
OnCurrentProfileChangingnameProfile about to change.
OnCurrentProfileChangednameProfile changed.
OnProfileListChangedlistProfile list changed.

UInhyeongOBSGeneral

Cross-domain operations: performance stats, hotkeys, vendor (third-party plugin) requests, custom/exit events, and outbound game-event emission. Reached via GetClient()->GetGeneral(). (OBS version is captured directly by the client via GetOBSVersion / IsOBSVersionAtLeast.) EmitGameEvent is forwarded on the Subsystem. The rest are handler-only.

FunctionParamsDescription
GetStatsNoneRequest performance stats (fires OnStatsReceived).
GetCachedStatsFOBSStatsMost recent stats.
GetHotkeyListNoneRequest all hotkey names (fires OnHotkeyListReceived).
GetCachedHotkeysTArray<FString>Cached hotkey names.
TriggerHotkeyByNameHotkeyName, ContextName=""Trigger a hotkey by name.
TriggerHotkeyByKeySequenceKeyId, bShift=false, bControl=false, bAlt=false, bCommand=falseTrigger a hotkey by key id + modifiers.
BroadcastCustomEventEventDataJsonBroadcast a custom event to other websocket clients.
CallVendorRequestVendorName, RequestType, RequestDataJsonCall a third-party plugin request (fires OnVendorResponseReceived).
EmitGameEventEventName, PayloadJson, Realm="inhyeongobs"boolEmit a namespaced game event (returns false on invalid payload JSON).
EmitGameEventMapEventName, Payload (TMap), Realm="inhyeongobs"Map-based convenience for EmitGameEvent.
EventParamsDescription
OnStatsReceivedstatsPerformance stats arrived.
OnHotkeyListReceivedhotkeysHotkey list arrived.
OnExitStartedNoneOBS is shutting down.
OnVendorEventvendor payloadA vendor (plugin) event arrived.
OnCustomEventcustom payloadA custom event arrived from another client.
OnVendorResponseReceivedvendor responseA CallVendorRequest reply arrived.

See also

  • Subsystem API: the GameInstance facade with ~100 convenience methods that wrap these handlers.
  • Events: full event catalog, payload structs, and delegate signatures.