Documenting RenewedVision's undocumented network protocols with examples
This document refers to ProPresenter 6.
Warning: Be careful! It's easy to CRASH ProPresenter when sending invalid messages!
Both the Remote Control and the Stage Display protocols are unencrypted text-based websocket connections from the client to the ProPresenter instance.
NOTE: if both the Remote Control and the Stage Display interface are enabled in ProPresenter, they both operate over the Remote Control network port.
"Channels" refers to the communication channels opened up by ProPresenter. Both versions 6 and 7 expose two channels. One is the "remote" channel, and the other is the "stagedisplay" channel. They have two separate websocket endpoints that take the following form:
ws://[hostname]:[port]/[channel]
Connecting to ProPresenter involves making a Websocket connection using this address and then immediately following the connection with an authentication message (as described below) for the relevant "channel."
The hostname or ip address of the computer running ProPresenter 6
The port specified in the ProPresenter Network settings
remote for the remote control channel, or stagedisplay for the stage display channel
Remote Control
Send messages to the API
The remote
channel carries all the
information from the "ProPresenter Remote" app
CONNECT WITH:
ws://[hostname]:[port]/remote
Accepts one of the following messages:
RemoteAuthentication
This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.
For ProPresenter 6, the protocol must be 600
RELATED RESPONSE: authenticate (subscribe)
{
"action": "authenticate",
"protocol": 600,
"password": "myGreatPassword"
}
Get Library (all presentations)
Will return all items in the ProPresenter library.
RELATED RESPONSE: libraryRequest (subscribe)
{
"action": "libraryRequest"
}
Get Playlists
Will return all presentation playlists.
playlistTypePlaylist
or a playlistTypeGroup
playlistTypePlaylist
will contain a list of playlistItemTypePresentation
(or playlistItemTypeAudio
for audio playlists)playlistTypeGroup
may contain both playlistTypePlaylist
and playlistTypeGroup
RELATED RESPONSE: playlistRequestAll (subscribe)
{
"action": "playlistRequestAll"
}
Request a Playlist by Location
NOTE: even though the requested action is presentationRequest
Pro6 responds with
a presentationCurrent
but it will be different. See below.
RELATED RESPONSE: presentationRequest (subscribe)
{
"action": "presentationRequest",
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6",
"presentationSlideQuality": 25
}
Request Current Presentation
Requests the currently active presentation if there is one. If no presentation has a slide active, then nothing will be returned.
NOTE: You can distinguish this response from a presentationRequest request because this response will include presentationPath as a field at the root level of the response.
RELATED RESPONSE: presentationCurrent (subscribe)
{
"action": "presentationCurrent",
"presentationSlideQuality": 0
}
Get the Index of the Current Slide
string
valuepresentationRequest
RELATED RESPONSE: presentationSlideIndex (subscribe)
{
"action": "presentationSlideIndex"
}
Activate a Slide
Works just like clicking on a slide
RELATED RESPONSE: presentationTriggerIndex (subscribe)
{
"action": "presentationTriggerIndex",
"slideIndex": 0,
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Activate the Next Slide
Works just like hitting the right arrow or spacebar.
RELATED RESPONSE: presentationTriggerNext (subscribe)
{
"action": "presentationTriggerNext"
}
Activate the Previous Slide
Works just like hitting the left arrow.
RELATED RESPONSE: presentationTriggerPrevious (subscribe)
{
"action": "presentationTriggerPrevious"
}
Get Audio Library
Will return all the items in the audio library
RELATED RESPONSE: audioRequest (subscribe)
{
"action": "audioRequest"
}
Get the Current Song
Will return the data for the currently playing song, if there is one.
RELATED RESPONSE: audioCurrentSong (subscribe)
{
"action": "audioCurrentSong"
}
Is Audio Playing (BROKEN)
This api request exists, but it always reports false
RELATED RESPONSE: audioIsPlaying (subscribe)
{
"action": "audioIsPlaying"
}
Start Audio Cue
This command will result in an audioTriggered
message, but since the
play/pause status has changed, ProPresenter will also send an audioPlayPause
message.
RELATED RESPONSE: audioStartCue (subscribe)
{
"action": "audioStartCue",
"audioChildPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Toggle the Audio Play State
RELATED RESPONSE: audioPlayPause (subscribe)
{
"action": "audioPlayPause"
}
Toggle the Timeline Play State
If presentationPath
is missing, Pro6 will crash.
NO RESPONSE
{
"action": "timelinePlayPause",
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Reset the Timeline for a Presentation
If presentationPath
is missing, Pro6 will crash.
NO RESPONSE
{
"action": "timelineRewind",
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Request all Clock data
RELATED RESPONSE: clockRequest (subscribe)
{
"action": "clockRequest"
}
Get Current Times for All Clocks
RELATED RESPONSE: clockCurrentTimes (subscribe)
{
"action": "clockCurrentTimes"
}
Subscribe to Clock Updates
ProPresenter will send one clock update every second even if no clock values have changed.
The response payload is exactly the same as clockCurrentTimes
RELATED RESPONSE: clockStartSendingCurrentTime (subscribe)
{
"action": "clockStartSendingCurrentTime"
}
Unsubscribe from Clock Updates
NO RESPONSE
{
"action": "clockStopSendingCurrentTime"
}
Start a Specific Clock
RELATED RESPONSE: clockStart (subscribe)
{
"action": "clockStart",
"clockIndex": 0
}
Stop a Specific Clock
RELATED RESPONSE: clockStop (subscribe)
{
"action": "clockStop",
"clockIndex": 0
}
Reset a clock back to initial settings
RELATED RESPONSE: clockReset (subscribe)
{
"action": "clockReset",
"clockIndex": 0
}
Update a Clock (Timer) (eg edit time)
NO RESPONSE
{
"action": "clockUpdate",
"clockIndex": 1,
"clockType": 0,
"clockTime": "09:04:00",
"clockOverrun": false,
"clockIsPM": 1,
"clockName": "Countdown 2",
"clockElapsedTime": "0:02:00"
}
NO RESPONSE
{
"action": "clockResetAll"
}
NO RESPONSE
{
"action": "clockStopAll"
}
NO RESPONSE
{
"action": "clockStartAll"
}
Get all Messages
${}
so that the key for a countdown looks like this Countdown 1: H:MM:SS
.duration
field of the countdown timer, but will not perform a "reset".RELATED RESPONSE: messageRequest (subscribe)
{
"action": "messageRequest"
}
Display a Message
Display a message identified by its index. Add as many key, value pairs as you like.
See messageRequest
for more information about keys.
NO RESPONSE
{
"action": "messageSend",
"messageIndex": 0,
"messageKeys": [
"string"
],
"messageValues": [
"string"
]
}
Hide a Message
Hide a message identified by its index
NO RESPONSE
{
"action": "messageHide",
"messageIndex": 0
}
Show Stage Display Message
NO RESPONSE
{
"action": "stageDisplaySendMessage",
"stageDisplayMessage": "Type a Message Here"
}
Hide Stage Display Message
NO RESPONSE
{
"action": "stageDisplayHideMessage"
}
Select Stage Display Layout
EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND
RELATED RESPONSE: stageDisplaySetIndex (subscribe)
{
"action": "stageDisplaySetIndex",
"stageDisplayIndex": 0
}
Get Stage Display Layouts
RELATED RESPONSE: stageDisplaySets (subscribe)
{
"action": "stageDisplaySets"
}
Clear All
NO RESPONSE
{
"action": "clearAll"
}
Clear Slide
NO RESPONSE
{
"action": "clearText"
}
Clear Props
NO RESPONSE
{
"action": "clearProps"
}
Clear Audio
NO RESPONSE
{
"action": "clearAudio"
}
Clear Video
NO RESPONSE
{
"action": "clearVideo"
}
Clear Telestrator
NO RESPONSE
{
"action": "clearTelestrator"
}
Clear To Logo
NO RESPONSE
{
"action": "clearToLogo"
}
Remote Control
Receive messages from the API
The remote
channel carries all the
information from the "ProPresenter Remote" app
CONNECT WITH:
ws://[hostname]:[port]/remote
Accepts one of the following messages:
RemoteAuthentication
This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.
For ProPresenter 6, the protocol must be 600
RELATED COMMAND: authenticate (publish)
{
"controller": 1,
"authenticated": 1,
"error": "",
"action": "authenticate"
}
Get Library (all presentations)
Will return all items in the ProPresenter library.
RELATED COMMAND: libraryRequest (publish)
{
"library": [
"/Path/To/ProPresenter/Library/Come Alive (Dry Bones).pro6",
"/Path/To/ProPresenter/Library/Pour Out My Heart.pro6",
"/Path/To/ProPresenter/Library/Away in a manger.pro6",
"... ALL PRESENTATIONS IN THE LIBRARY ..."
],
"action": "libraryRequest"
}
Get Playlists
Will return all presentation playlists.
playlistTypePlaylist
or a playlistTypeGroup
playlistTypePlaylist
will contain a list of playlistItemTypePresentation
(or playlistItemTypeAudio
for audio playlists)playlistTypeGroup
may contain both playlistTypePlaylist
and playlistTypeGroup
RELATED COMMAND: playlistRequestAll (publish)
{
"playlistAll": [
{
"playlistLocation": "0",
"playlistType": "playlistTypePlaylist",
"playlistName": "Default",
"playlist": [
{
"playlistItemName": "!~ PRE-SERVICE",
"playlistItemLocation": "0:0",
"playlistItemType": "playlistItemTypePresentation"
}
]
},
{
"playlistLocation": "1",
"playlistType": "playlistTypeGroup",
"playlistName": "2017",
"playlist": [
{
"playlistLocation": "1.0",
"playlistType": "playlistTypePlaylist",
"playlistName": "2017-01-28-Vision Dinner",
"playlist": [
{
"playlistItemName": "!MISC2",
"playlistItemLocation": "1.0:0",
"playlistItemType": "playlistItemTypePresentation"
},
{
"playlistItemName": "!MISC1",
"playlistItemLocation": "1.0:1",
"playlistItemType": "playlistItemTypePresentation"
}
]
}
]
}
],
"action": "playlistRequestAll"
}
Request a Playlist by Location
NOTE: even though the requested action is presentationRequest
Pro6 responds with
a presentationCurrent
but it will be different. See below.
RELATED COMMAND: presentationRequest (publish)
{
"action": "presentationCurrent",
"presentation": {
"presentationSlideGroups": [
{
"groupName": "[SLIDE GROUP NAME]",
"groupColor": "0 0 0 1",
"groupSlides": [
{
"slideEnabled": true,
"slideNotes": "",
"slideAttachmentMask": 0,
"slideText": "[SLIDE TEXT HERE]",
"slideImage": "[BASE64 ENCODED IMAGE]",
"slideIndex": "0",
"slideTransitionType": -1,
"slideLabel": "[SLIDE LABEL]",
"slideColor": "0 0 0 1"
}
]
}
],
"presentationName": "[PRESENTATION TITLE]",
"presentationHasTimeline": 0,
"presentationCurrentLocation": "[PRESENTATION PATH OF CURRENTLY ACTIVE SLIDE]"
}
}
Request Current Presentation
Requests the currently active presentation if there is one. If no presentation has a slide active, then nothing will be returned.
NOTE: You can distinguish this response from a presentationRequest request because this response will include presentationPath as a field at the root level of the response.
RELATED COMMAND: presentationCurrent (publish)
{
"action": "presentationCurrent",
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6",
"presentation": {
"presentationSlideGroups": [
{
"groupsummary": "string",
"groupColor": "0.5 0.8 1 0.5",
"groupSlides": [
{
"slideEnabled": true,
"slideNotes": "string",
"slideAttachmentMask": 0,
"slideText": "string",
"slideImage": "string",
"slideIndex": 0,
"slideTransitionType": 0,
"slideLabel": "string",
"slideColor": "0.5 0.8 1 0.5"
}
]
}
],
"presentationsummary": "string",
"presentationHasTimeline": 0,
"presentationCurrentLocation": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
}
Get the Index of the Current Slide
string
valuepresentationRequest
RELATED COMMAND: presentationSlideIndex (publish)
{
"action": "presentationSlideIndex",
"slideIndex": 0
}
Activate a Slide
Works just like clicking on a slide
RELATED COMMAND: presentationTriggerIndex (publish)
{
"action": "presentationTriggerIndex",
"slideIndex": 0,
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Activate the Next Slide
Works just like hitting the right arrow or spacebar.
RELATED COMMAND: presentationTriggerNext (publish)
{
"action": "presentationTriggerIndex",
"slideIndex": 0,
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Activate the Previous Slide
Works just like hitting the left arrow.
RELATED COMMAND: presentationTriggerPrevious (publish)
{
"action": "presentationTriggerIndex",
"slideIndex": 0,
"presentationPath": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6"
}
Get Audio Library
Will return all the items in the audio library
RELATED COMMAND: audioRequest (publish)
{
"action": "audioRequest",
"audioPlaylist": [
{
"playlistType": "playlistTypeGroup",
"playlistsummary": "string",
"playlistLocation": "\\/Path\\/To\\/ProPresenter\\/Library\\/Song 1 Title.pro6",
"playlist": [
{}
]
}
]
}
Get the Current Song
Will return the data for the currently playing song, if there is one.
RELATED COMMAND: audioCurrentSong (publish)
{
"audioArtist": "",
"action": "audioCurrentSong",
"audioName": "Peaceful Instrumental - C"
}
Is Audio Playing (BROKEN)
This api request exists, but it always reports false
RELATED COMMAND: audioIsPlaying (publish)
{
"action": "audioIsPlaying",
"audioIsPlaying": false
}
Start Audio Cue
This command will result in an audioTriggered
message, but since the
play/pause status has changed, ProPresenter will also send an audioPlayPause
message.
RELATED COMMAND: audioStartCue (publish)
{
"audioArtist": "",
"action": "audioTriggered",
"audioName": "Peaceful Instrumental - C"
}
Toggle the Audio Play State
RELATED COMMAND: audioPlayPause (publish)
{
"action": "audioPlayPause",
"audioPlayPause": "Play"
}
Request all Clock data
RELATED COMMAND: clockRequest (publish)
{
"action": "clockRequest",
"clockInfo": [
{
"clockType": 0,
"clockState": true,
"clocksummary": "string",
"clockIsPM": 0,
"clockTime": "string",
"clockEndTime": "string",
"clockDuration": "string",
"clockOverrun": true
}
]
}
Get Current Times for All Clocks
RELATED COMMAND: clockCurrentTimes (publish)
{
"action": "clockCurrentTimes",
"clockTimes": [
"0:10:00",
"--:--:--",
"13:52:23"
]
}
Subscribe to Clock Updates
ProPresenter will send one clock update every second even if no clock values have changed.
The response payload is exactly the same as clockCurrentTimes
RELATED COMMAND: clockStartSendingCurrentTime (publish)
{
"action": "clockCurrentTimes",
"clockTimes": [
"0:10:00",
"--:--:--",
"13:52:23"
]
}
Start a Specific Clock
RELATED COMMAND: clockStart (publish)
{
"action": "clockStartStop",
"clockTime": "string",
"clockState": 0,
"clockIndex": 0,
"clockInfo": []
}
Stop a Specific Clock
RELATED COMMAND: clockStop (publish)
{
"action": "clockStartStop",
"clockTime": "string",
"clockState": 0,
"clockIndex": 0,
"clockInfo": []
}
Reset a clock back to initial settings
RELATED COMMAND: clockReset (publish)
{
"action": "clockResetIndex"
}
Get all Messages
${}
so that the key for a countdown looks like this Countdown 1: H:MM:SS
.duration
field of the countdown timer, but will not perform a "reset".RELATED COMMAND: messageRequest (publish)
{
"action": "messageRequest",
"messages": [
{
"messageComponents": [
"message:",
"${Message}"
],
"messageTitle": "Message"
},
{
"messageComponents": [
"Session will begin in: ",
"${Countdown 1: H:MM:SS}"
],
"messageTitle": "Countdown"
},
{
"messageComponents": [
"${Message}"
],
"messageTitle": "Message"
},
{
"messageComponents": [
"Service starts in ",
"${countDownTimerName_1: H:MM:SS}"
],
"messageTitle": "Countdown"
}
]
}
Select Stage Display Layout
EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND
RELATED COMMAND: stageDisplaySetIndex (publish)
{
"action": "stageDisplaySetIndex",
"stageDisplayIndex": 0
}
Get Stage Display Layouts
RELATED COMMAND: stageDisplaySets (publish)
{
"stageDisplayIndex": 4,
"action": "stageDisplaySets",
"stageDisplaySets": [
"Default",
"Easter Closer",
"Live Current - Static Next - no borders",
"Static Current - Static Next",
"Songs",
"Slides"
]
}
Stage Display API
Send messages to the API
The stagedisplay
channel carries all the
information from the "ProPresenter Stage" app
CONNECT WITH:
ws://[hostname]:[port]/stagedisplay
ProPresenter also provides a mechanism for getting a high quality thumbnail image for any slide or chord chart in the current presentation:
http://PROPRESENTER_IP:PROPRESENTER_PORT/stage/image/SLIDE_UID
In ProPresenter 6, the response will be the raw bytes of a jpeg image but the
response will NOT contain the proper Content-Type of image/jpeg
.
Accepts one of the following messages:
{
"pwd": "PASSWORD",
"ptl": 610,
"acn": "ath"
}
Get All Stage Display Layouts
acn
of asl
means "all stage layouts"ary
indicates array of stage layoutsRELATED RESPONSE: asl (subscribe)
{
"acn": "asl"
}
{
"acn": "psl"
}
Request Frame Values for Stage Display
When the frame value is pushed as a result of a slide trigger event,
only cs
, ns
, csn
, nsn
will be sent.
Applications should listen for all the other acn
values separately.
RELATED RESPONSE: fv (subscribe)
{
"acn": "fv",
"uid": "F8260B13-9C5B-4D2C-80F1-C72346759F11"
}
Stage Display API
Receive messages from the API
The stagedisplay
channel carries all the
information from the "ProPresenter Stage" app
CONNECT WITH:
ws://[hostname]:[port]/stagedisplay
ProPresenter also provides a mechanism for getting a high quality thumbnail image for any slide or chord chart in the current presentation:
http://PROPRESENTER_IP:PROPRESENTER_PORT/stage/image/SLIDE_UID
In ProPresenter 6, the response will be the raw bytes of a jpeg image but the
response will NOT contain the proper Content-Type of image/jpeg
.
Accepts one of the following messages:
{
"acn": "ath",
"ath": true,
"err": ""
}
Get All Stage Display Layouts
acn
of asl
means "all stage layouts"ary
indicates array of stage layoutsRELATED COMMAND: asl (publish)
{
"acn": "asl",
"ary": [
{
"brd": true,
"uid": "753B184F-CCCD-42F9-A883-D1DF86E1FFB8",
"zro": 0,
"oCl": "1.000000 0.000000 0.000000",
"fme": [
{
"ufr": "{{0.025000000000000001, 0.37418655097613884}, {0.40000000000000002, 0.50108459869848154}}",
"mde": 1,
"tCl": "1.000000 1.000000 1.000000",
"tAl": 2,
"tSz": 60,
"nme": "Current Slide",
"typ": 1
}
],
"ovr": true,
"acn": "sl",
"nme": "Default"
}
]
}
{
"acn": "psl",
"uid": "F8260B13-9C5B-4D2C-80F1-C72346759F11"
}
Request Frame Values for Stage Display
When the frame value is pushed as a result of a slide trigger event,
only cs
, ns
, csn
, nsn
will be sent.
Applications should listen for all the other acn
values separately.
RELATED COMMAND: fv (publish)
{
"acn": "fv",
"ary": [
{
"acn": "cs",
"uid": "FAFCA1CB-8CB8-4E53-8B7C-8D61154516D0",
"txt": ""
},
{
"acn": "ns",
"uid": "95D16968-589A-11EB-8D62-FCAA147AEF2F",
"txt": ""
},
{
"acn": "csn",
"txt": "[sermon_start]\nevent[2888]\nvmixoverlay[1,Out]\nlive[1]"
},
{
"acn": "nsn",
"txt": "vmixoverlay[2,Out]"
},
{
"acn": "msg",
"txt": ""
},
{
"acn": "sys",
"txt": " 9:57 AM"
},
{
"acn": "tmr",
"uid": "47E8B48C-0D61-4EFC-9517-BF9FB894C8E2",
"txt": "0:09:59"
},
{
"acn": "vid",
"txt": ""
},
{
"acn": "cc",
"uid": ""
}
]
}
On New Stage Display Selected
acn
of sl
indicates this is a single stage layoutTHIS IS A SUBSCRIBE-ONLY MESSAGE
nme
indicates layout nameovr
indicates if overrun color should be usedoCl
indicates color for timer overrunsbrd
indicates if borders and labels should be useduid
indicates layout uidzro
indicates if zeroes should be removed from timesfme
indicates array of frame layout specifications{
"nme": "string",
"brd": true,
"uid": "string",
"zro": 0,
"ovr": true,
"oCl": "1.000000 1.000000 1.000000 1.000000",
"fme": [
{
"ufr": "{{0.025000000000000001, 0.37418655097613884}, {0.40000000000000002, 0.50108459869848154}}",
"mde": 0,
"tAl": 0,
"tCl": "1.000000 1.000000 1.000000 1.000000",
"tSz": 0,
"nme": "string",
"typ": 1,
"fCl": "1.000000 1.000000 1.000000 1.000000",
"fCh": true,
"uid": "string"
}
],
"acn": "sl"
}
On New System Time
THIS IS A SUBSCRIBE-ONLY MESSAGE
{
"acn": "sys",
"txt": " 11:17 AM"
}
On New Video Countdown Time
Time follows the same H:MM:SS format as the remote protocol.
THIS IS A SUBSCRIBE-ONLY MESSAGE
{
"acn": "vid",
"txt": "0:00:18"
}
On New Chord Chart
Chord chart images can be downloaded in the same way as slide preview images
http://PROPRESENTER_IP:PROPRESENTER_PORT/stage/image/UID
THIS IS A SUBSCRIBE-ONLY MESSAGE
{
"acn": "cc",
"uid": "E65DF4DF-960D-4CF5-ADF5-60F200F6AFF7"
}
On Timer Update
THIS IS A SUBSCRIBE-ONLY MESSAGE
{
"acn": "tmr",
"uid": "[TIMER UID]",
"txt": "--:--:--"
}
RemoteAuthentication
This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.
For ProPresenter 6, the protocol must be 600
RELATED RESPONSE: authenticate (subscribe)
RemoteAuthentication
This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.
For ProPresenter 6, the protocol must be 600
RELATED COMMAND: authenticate (publish)
Get Library (all presentations)
Will return all items in the ProPresenter library.
RELATED RESPONSE: libraryRequest (subscribe)
Get Library (all presentations)
Will return all items in the ProPresenter library.
RELATED COMMAND: libraryRequest (publish)
Get Playlists
Will return all presentation playlists.
playlistTypePlaylist
or a playlistTypeGroup
playlistTypePlaylist
will contain a list of playlistItemTypePresentation
(or playlistItemTypeAudio
for audio playlists)playlistTypeGroup
may contain both playlistTypePlaylist
and playlistTypeGroup
RELATED RESPONSE: playlistRequestAll (subscribe)
Get Playlists
Will return all presentation playlists.
playlistTypePlaylist
or a playlistTypeGroup
playlistTypePlaylist
will contain a list of playlistItemTypePresentation
(or playlistItemTypeAudio
for audio playlists)playlistTypeGroup
may contain both playlistTypePlaylist
and playlistTypeGroup
RELATED COMMAND: playlistRequestAll (publish)
Request a Playlist by Location
NOTE: even though the requested action is presentationRequest
Pro6 responds with
a presentationCurrent
but it will be different. See below.
RELATED RESPONSE: presentationRequest (subscribe)
Request a Playlist by Location
NOTE: even though the requested action is presentationRequest
Pro6 responds with
a presentationCurrent
but it will be different. See below.
RELATED COMMAND: presentationRequest (publish)
Request Current Presentation
Requests the currently active presentation if there is one. If no presentation has a slide active, then nothing will be returned.
NOTE: You can distinguish this response from a presentationRequest request because this response will include presentationPath as a field at the root level of the response.
RELATED RESPONSE: presentationCurrent (subscribe)
Request Current Presentation
Requests the currently active presentation if there is one. If no presentation has a slide active, then nothing will be returned.
NOTE: You can distinguish this response from a presentationRequest request because this response will include presentationPath as a field at the root level of the response.
RELATED COMMAND: presentationCurrent (publish)
Get the Index of the Current Slide
string
valuepresentationRequest
RELATED RESPONSE: presentationSlideIndex (subscribe)
Get the Index of the Current Slide
string
valuepresentationRequest
RELATED COMMAND: presentationSlideIndex (publish)
Activate a Slide
Works just like clicking on a slide
RELATED RESPONSE: presentationTriggerIndex (subscribe)
Activate a Slide
Works just like clicking on a slide
RELATED COMMAND: presentationTriggerIndex (publish)
Activate the Next Slide
Works just like hitting the right arrow or spacebar.
RELATED RESPONSE: presentationTriggerNext (subscribe)
Activate the Next Slide
Works just like hitting the right arrow or spacebar.
RELATED COMMAND: presentationTriggerNext (publish)
Activate the Previous Slide
Works just like hitting the left arrow.
RELATED RESPONSE: presentationTriggerPrevious (subscribe)
Activate the Previous Slide
Works just like hitting the left arrow.
RELATED COMMAND: presentationTriggerPrevious (publish)
Get Audio Library
Will return all the items in the audio library
RELATED RESPONSE: audioRequest (subscribe)
Get Audio Library
Will return all the items in the audio library
RELATED COMMAND: audioRequest (publish)
Get the Current Song
Will return the data for the currently playing song, if there is one.
RELATED RESPONSE: audioCurrentSong (subscribe)
Get the Current Song
Will return the data for the currently playing song, if there is one.
RELATED COMMAND: audioCurrentSong (publish)
Is Audio Playing (BROKEN)
This api request exists, but it always reports false
RELATED RESPONSE: audioIsPlaying (subscribe)
Is Audio Playing (BROKEN)
This api request exists, but it always reports false
RELATED COMMAND: audioIsPlaying (publish)
Start Audio Cue
This command will result in an audioTriggered
message, but since the
play/pause status has changed, ProPresenter will also send an audioPlayPause
message.
RELATED RESPONSE: audioStartCue (subscribe)
Start Audio Cue
This command will result in an audioTriggered
message, but since the
play/pause status has changed, ProPresenter will also send an audioPlayPause
message.
RELATED COMMAND: audioStartCue (publish)
Toggle the Audio Play State
RELATED RESPONSE: audioPlayPause (subscribe)
Toggle the Audio Play State
RELATED COMMAND: audioPlayPause (publish)
Toggle the Timeline Play State
If presentationPath
is missing, Pro6 will crash.
NO RESPONSE
Reset the Timeline for a Presentation
If presentationPath
is missing, Pro6 will crash.
NO RESPONSE
Request all Clock data
RELATED RESPONSE: clockRequest (subscribe)
Request all Clock data
RELATED COMMAND: clockRequest (publish)
Get Current Times for All Clocks
RELATED RESPONSE: clockCurrentTimes (subscribe)
Get Current Times for All Clocks
RELATED COMMAND: clockCurrentTimes (publish)
Subscribe to Clock Updates
ProPresenter will send one clock update every second even if no clock values have changed.
The response payload is exactly the same as clockCurrentTimes
RELATED RESPONSE: clockStartSendingCurrentTime (subscribe)
Subscribe to Clock Updates
ProPresenter will send one clock update every second even if no clock values have changed.
The response payload is exactly the same as clockCurrentTimes
RELATED COMMAND: clockStartSendingCurrentTime (publish)
Unsubscribe from Clock Updates
NO RESPONSE
Start a Specific Clock
RELATED RESPONSE: clockStart (subscribe)
Start a Specific Clock
RELATED COMMAND: clockStart (publish)
Stop a Specific Clock
RELATED RESPONSE: clockStop (subscribe)
Stop a Specific Clock
RELATED COMMAND: clockStop (publish)
Reset a clock back to initial settings
RELATED RESPONSE: clockReset (subscribe)
Reset a clock back to initial settings
RELATED COMMAND: clockReset (publish)
Update a Clock (Timer) (eg edit time)
NO RESPONSE
NO RESPONSE
NO RESPONSE
NO RESPONSE
Get all Messages
${}
so that the key for a countdown looks like this Countdown 1: H:MM:SS
.duration
field of the countdown timer, but will not perform a "reset".RELATED RESPONSE: messageRequest (subscribe)
Get all Messages
${}
so that the key for a countdown looks like this Countdown 1: H:MM:SS
.duration
field of the countdown timer, but will not perform a "reset".RELATED COMMAND: messageRequest (publish)
Display a Message
Display a message identified by its index. Add as many key, value pairs as you like.
See messageRequest
for more information about keys.
NO RESPONSE
Hide a Message
Hide a message identified by its index
NO RESPONSE
Show Stage Display Message
NO RESPONSE
Hide Stage Display Message
NO RESPONSE
Select Stage Display Layout
EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND
RELATED RESPONSE: stageDisplaySetIndex (subscribe)
Select Stage Display Layout
EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND
RELATED COMMAND: stageDisplaySetIndex (publish)
Get Stage Display Layouts
RELATED RESPONSE: stageDisplaySets (subscribe)
Get Stage Display Layouts
RELATED COMMAND: stageDisplaySets (publish)
Clear All
NO RESPONSE
Clear Slide
NO RESPONSE
Clear Props
NO RESPONSE
Clear Audio
NO RESPONSE
Clear Video
NO RESPONSE
Clear Telestrator
NO RESPONSE
Clear To Logo
NO RESPONSE
Get All Stage Display Layouts
acn
of asl
means "all stage layouts"ary
indicates array of stage layoutsRELATED RESPONSE: asl (subscribe)
Get All Stage Display Layouts
acn
of asl
means "all stage layouts"ary
indicates array of stage layoutsRELATED COMMAND: asl (publish)
Request Current Stage Display Layout
RELATED RESPONSE: psl (subscribe)
Request Frame Values for Stage Display
When the frame value is pushed as a result of a slide trigger event,
only cs
, ns
, csn
, nsn
will be sent.
Applications should listen for all the other acn
values separately.
RELATED RESPONSE: fv (subscribe)
Request Frame Values for Stage Display
When the frame value is pushed as a result of a slide trigger event,
only cs
, ns
, csn
, nsn
will be sent.
Applications should listen for all the other acn
values separately.
RELATED COMMAND: fv (publish)
On New Stage Display Selected
acn
of sl
indicates this is a single stage layoutTHIS IS A SUBSCRIBE-ONLY MESSAGE
nme
indicates layout nameovr
indicates if overrun color should be usedoCl
indicates color for timer overrunsbrd
indicates if borders and labels should be useduid
indicates layout uidzro
indicates if zeroes should be removed from timesfme
indicates array of frame layout specificationsOn New System Time
THIS IS A SUBSCRIBE-ONLY MESSAGE
On New Video Countdown Time
Time follows the same H:MM:SS format as the remote protocol.
THIS IS A SUBSCRIBE-ONLY MESSAGE
On New Chord Chart
Chord chart images can be downloaded in the same way as slide preview images
http://PROPRESENTER_IP:PROPRESENTER_PORT/stage/image/UID
THIS IS A SUBSCRIBE-ONLY MESSAGE
On Timer Update
THIS IS A SUBSCRIBE-ONLY MESSAGE
0 for false, 1 for true, (in Pro6, these sometimes show up as strings)
four space-delimited doubles describing the r,g,b,a values of a color from 0-1
A slash-escaped full pathname, file basename, or playlist location.
Pathname locations need to escape the slashes BEFORE they are encoded to JSON.
\/Path\/To\/ProPresenter\/Library\/Song 1 Title.pro6
Playlist locations are specified by a zero-based index of the playlist and playlist group in which the item may be found.
The first item in the first playlist would be "0:0"
.
If the first playlist item is a playlist group, then the first item
in the first playlist in the first playlist group would be "0.0:0"
.
That is, the generalized location is this:
playlist_index[.child_playlist_index[.deeper_child_index[...]]]:item
NOTE: Pro6 supports full pathnames or basenames.
in ProPresenter 7, the "Play" option becomes "Playing"
"H:MM:SS"
(no padding on the leading H)-
."--:--:--"
0
is Countdown, 1
is Countdown to Time, 2
is Elapsed Time
Frame Geometry is delivered in x,y coordinates based on screen percentages in the following format:
{{upper_left_x_pct, upper_left_y_pct}, {lower_right_x_pct, lower_right_y_pct}}
Stage Display colors are strings of three or four space-delimited float values for RGB(A) from 0-1
A Stage Display Frame is a box of stage display information.
nme
indicates layout nameovr
indicates if overrun color should be usedoCl
indicates color for timer overrunsbrd
indicates if borders and labels should be useduid
indicates layout uidzro
indicates if zeroes should be removed from timesfme
indicates array of frame layout specifications