OBS Sources
Creates a new source and adds it to a scene.
You can pass a JSON string containing the new source’s settings as well.
The source will be added at the top of the list. To reorder it, use a Custom Packet command to send a JSON string containing the new order of all sources in your scene: {"request-type":"ReorderSceneItems","scene":"YOURSCENENAME","items":[{"name":"YOURSOURCENAME1"},{"name":"YOURSOURCENAME2"},{"name":"YOURSOURCENAME3"},{"name":"YOURSOURCENAME4"}(etc.)],"message-id":"6666"}
`.
Box Name | Type | Description |
---|---|---|
sourceName | String | Name of the new OBS source |
sourceKind | String | Type of the new source. ffmpeg_source Media Source vlc_source VLC media source image_source Image Source slideshow Image slide show text_ft2_source Free Type 2 text source text_gdiplus Text GDI+ source browser_source Browser source wasapi_input_capture Audio Input capture wasapi_output_capture Audio Output Capture color_source Color source monitor_capture Display Capture window_capture Window capture game_capture Game Capture dshow_input Capture device(webcam) dshow_input_replay Video Capture Device with replay buffer For other sources and plugin sources you should look at the OBS JSON file to figure out the correct value. |
sceneName | String | Name of the scene to add the source to. |
sourceSettings | JSON | Source settings. Same format which is used in Source Change Settings command. |
setVisible | boolean | Whether the source should be visible. |
Changes settings of a source. Not to be confused with item transform settings.
Requires the same formatting that is used in the OBS JSON file.
Easy way to see your current source’s settings is to use a Custom Packet command: {"request-type":"GetSourceSettings","sourceName":"YOURSOURCENAME","message-id":"6666"}
. Execute it and you will get back a JSON string of the source’s settings. Paste it into a document and extract the particular value you want to use.
Find a settings value via Custom Packet and use it in the command

Use JSON string validator if you want to make sure your formatting is correct.
Box Name | Type | Description |
---|---|---|
sourceName | String | Source name to change settings. |
sourceSettings | JSON String | The settings to be included. Formatted as a JSON String. Must be enclosed in {} . |
JSON String | Description |
---|---|
{"url":"http://twitch.tv"} | Change URL of a browser source |
{"local_file":"E:/Stream/hello.html"} | Change local file path of a browser source |
{"file":"E:/Stream/image.png"} | Change local file path of an image source |
{"playlist": [{"value": "E:/videos/video1.mp4"},{"value": "E:/videos/video2.mkv"}]} | Change local file paths for your VLC source. Each {"value":"X"} represents one file. |
{"font": {"face": "Arial","flags": 8,"size": 48,"style": "Regular"}} | Change font settings of your GDI+ text source. Needs to include all values. |
Changes the text of a Text GDI+ source.
If you wish to change the text to a value saved in a variable, you need to wrap it: /$variable$/
.
Box Name | Type | Description |
---|---|---|
sourceName | String | Text GDI+ source name |
text | String | The new text |
Changes the text of a Freetype 2 text source.
If you wish to change the text to a value saved in a variable, you need to wrap it: /$variable$/
.
Box Name | Type | Description |
---|---|---|
sourceName | String | Freetype 2 source name |
text | String | The new text |
Changes the monitoring type of an audio source.
Same option as in OBS-Audio Mixer-Cogwheel-Advanced Audio Properties.
Box Name | Type | Description |
---|---|---|
sourceName | String | Audio source name |
monitorType | dropdown | Type of monitoring to use |