Based on jeffmikels repository, I created (and went a bit further) on creating a documentation for the undocumented ProPresenter6 Websocket API. I am currently working on a generic Python API Client that I will be uploading soon, so it is easier to build apps based on it. These are not all the possible commands, but the ones that are used by the ProPresenter Remote app. If anyone find any other new commands and want to collaborate, you are welcome to create Pull Requests.
- Actions
- authenticate
- clockRequest
- messageRequest
- libraryRequest
- playRequestAll
- audioRequest
- audioCurrentSong
- audioStartCue
- audioPlayPause
- telestratorSettings
- presentationRequest
- presentationTriggerIndex
- presentationTriggerNext
- presentationTriggerPrevious
- presentationSlideIndex
- presentationCurrent
- clearAll
- clearVideo
- clearAudio
- clearText
- clearProps
- clearToLogo
- clockUpdate
- clockStart
- clockStop
- clockReset
- clockStartAll
- clockStopAll
- clockResetAll
- messageSend
- stageDisplaySets
- stageDisplaySendMessage
- stageDisplayHideMessage
- stageDisplaySetIndex
- Sent from server
Authentication
- protocol: int (default: 600)
- password: string
{
"protocol": 600,
"action": "authenticate",
"password": "password"
}
{
"controller": 1,
"authenticated": 1,
"error": "",
"action": "authenticate"
}
Returns clock information
{
"action": "clockRequest"
}
{
"action": "clockRequest",
"clockInfo": [
{
"clockDuration": "0:00:00",
"clockEndTime": "0:00:00",
"clockIsPM": 0,
"clockName": "Countdown 1",
"clockOverrun": true,
"clockState": true,
"clockTime": "0:02:13",
"clockType": 0
},
{
"clockDuration": "7:00:00",
"clockEndTime": "--:--:--",
"clockIsPM": 1,
"clockName": "Countdown 2",
"clockOverrun": false,
"clockState": false,
"clockTime": "--:--:--",
"clockType": 1
},
{
"clockDuration": "0:00:00",
"clockEndTime": "--:--:--",
"clockIsPM": 0,
"clockName": "Elapsed Time",
"clockOverrun": false,
"clockState": false,
"clockTime": "--:--:--",
"clockType": 2
}
]
}
Returns messages information
{
"action": "messageRequest"
}
{
"action": "messageRequest",
"messages": [
{
"messageComponents": [
"${Message}"
],
"messageTitle": "Message"
},
{
"messageComponents": [
"Session will start in: ",
"${Countdown 1: H:MM:SS}"
],
"messageTitle": "Countdown"
}
]
}
Send front message
{
"action": "messageSend",
"messageValues": ["22"],
"messageIndex": "2",
"messageKeys":["numero"]
}
No response
Hide front message
{
"action": "messageHide",
"messageIndex":"2"
}
No response
Returns library information
{
"action": "libraryRequest"
}
{
"library": [
"\/path\/to\/library\/Welcome To ProPresenter 6.pro6",
"\/path\/to\/library\/Untitled.pro6"
],
"action": "libraryRequest"
}
Returns playlists information
{
"action": "playRequestAll"
}
{
"playlistAll": [
{
"playlistLocation": "0",
"playlistType": "playlistTypePlaylist",
"playlistName": "Default",
"playlist": [
{
"playlistItemName": "Untitled",
"playlistItemLocation": "0:0",
"playlistItemType": "playlistItemTypePresentation"
}
]
}
],
"action": "playlistRequestAll"
}
Returns audio information
{
"action": "audioRequest"
}
{
"action": "audioRequest",
"audioPlaylist": [
{
"playlistLocation": "0",
"playlistType": "playlistTypePlaylist",
"playlistName": "Default",
"playlist": []
}
]
}
???
{
"action": "audioCurrentSong"
}
No response
Start playing audio
- audioChildPath (): ???
- audioPath (int): ???
{
"audioChildPath": "0:0",
"action": "audioStartCue",
"audioPath":"0"
}
{
"action": "audioPlayPause",
"audioPlayPause": "Play"
}
Play/Pause current audio
{
"action": "audioPlayPause"
}
No response
Returns telestrator settings
{
"action": "telestratorSettings"
}
{
"telestratorToolweight": 0.5,
"telestratorToolcolor": "0.135296 1.000000 0.024919 0.750000",
"telestratorOutputsize": "{1680, 1050}",
"telestratorTooltype": 1,
"action": "telestratorSettings"
}
- presentationPath: string
- presentationName: string
- presentationSlideQuality: int
{
"action": "presentationRequest",
"presentationPath": "\/path\/to\/library\/Untitled.pro6",
"presentationName": "\/path\/to\/library\/Untitled.pro6",
"presentationSlideQuality": "400"
}
No response
Switch to slide with index n
- presentationPath (string): Path to presentation file
- slideIndex (int): Index of the slide Index of the slide
{
"action": "presentationTriggerIndex",
"presentationPath": "\/path\/to\/library\/Untitled.pro6",
"slideIndex": "1"
}
{
"action": "presentationTriggerIndex",
"presentationPath": "Untitled.pro6",
"slideIndex": 1
}
Go to next slide
{
"action": "presentationTriggerNext"
}
Go to previous slide
{
"action": "presentationTriggerPrevious"
}
{
"slideIndex": 2,
"action": "presentationTriggerIndex",
"presentationPath": "Untitled.pro6"
}
{
"action": "presentationSlideIndex"
}
{
"action": "presentationSlideIndex",
"slideIndex": "1"
}
- presentationSlideQuality (int): Quality of the presentation to be shown in the app
{
"action": "presentationCurrent",
"presentationSlideQuality": "400"
}
{
"action": "presentationCurrent",
"presentation": {
"presentationSlideGroups": [
{
"groupName": "Group",
"groupColor": "0.2637968361377716 0.2637968361377716 0.2637968361377716 1",
"groupSlides": [
{
"slideEnabled": true,
"slideNotes": "",
"slideAttachmentMask": 0,
"slideText": "Some text",
"slideImage": ". . .",
"slideIndex": "0",
"slideTransitionType": -1,
"slideLabel": "",
"slideColor": ""
},
{
"slideEnabled": true,
"slideNotes": "",
"slideAttachmentMask": 0,
"slideText": "Some other text",
"slideImage": ". . .",
"slideIndex": "0",
"slideTransitionType": -1,
"slideLabel": "",
"slideColor": ""
}
]
}
],
"presentationName": "Untitled",
"presentationHasTimeline": 0,
"presentationCurrentLocation": "\/path\/to\/library\/Untitled.pro6"
}
}
Clear all (background and slides)
{
"action": "clearAll"
}
{
"action": "clearAll"
}
Clear background only
{
"action": "clearVideo"
}
No response
Clear audio
{
"action": "clearAudio"
}
{
"action": "clearAudio"
}
Clear slide text only
{
"action": "clearText"
}
{
"action": "clearText"
}
Clear props
{
"action": "clearProps"
}
No response
Clear all and go to logo
{
"action": "clearToLogo"
}
{
"action": "clearAll"
}
{
"action": "clearAudio"
}
Updates the settings of the Stage Display clock
- clockTime (time): Time set
- clockIsPm (int): 0 (AM) | 1 (PM) | 2 (24h)
- clockOverrun (boolean): Countdown finishes on 00:00 or keeps running on negative time
- clockName (string): Clock name
- clockIndex (int): Index of the clock being updated. There are 3 clocks, so it may be: 0, 1 or 2.
- clockType (int): 0 (Countdown timer) | 1 (Countdown to time) | 2 (Elapsed time)
- clockElapsedtime (time): Elapsed time
{
"clockTime": "00:05:00",
"action": "clockUpdate",
"clockIsPM": "0",
"clockOverrun": "true",
"clockName": "Countdown 1",
"clockIndex": "0",
"clockType": "0",
"clockElapsedTime": "0:00:00"
}
No response
Start clock with index n
- clockIndex (int): Index of Clock
{
"action": "clockStart",
"clockIndex": "0"
}
No response
Stop clock with index n
- clockIndex (int): Index of Clock
{
"action": "clockStop",
"clockIndex": "0"
}
No response
Reset clock with index n
- clockIndex (int): Index of Clock
{
"action": "clockReset",
"clockIndex": "0"
}
{
"action": "clockResetIndex",
"clockIndex": 0
}
Start all clocks
{
"action": "clockStartAll"
}
{
"clockInfo": [
[1, true, "0:05:00"],
[1, true, "--:--:--"],
[1, true, "--:--:--"]
],
"action": "clockStartStopAll"
}
Stop all clocks
{
"action": "clockStopAll"
}
{
"clockInfo": [
[1, false, "0:03:30"],
[1, false, "7:28:03"],
[1, false, "0:01:30"]
],
"action": "clockStartStopAll"
}
Reset all clocks
{
"action": "clockResetAll"
}
{
"action": "clockResetAll"
}
Send message to front-message (???)
- messageValues (array): ???
- messageIndex (int): ???
- messageKeys (array): ???
{
"action": "messageSend",
"messageValues": [""],
"messageIndex": "1",
"messageKeys": ["Countdown 1: H:MM:SS"]
}
{
"messageIndex": 1,
"action": "messageSend"
}
Request all Stage Display Sets available
{
"action": "stageDisplaySets"
}
{
"action": "stageDisplaySets",
"stageDisplayIndex": 1,
"stageDisplaySets": ["Default","Clocks"]
}
Send message to Message panel on Stage Display
- stageDisplayMessage (string): Message
{
"action": "stageDisplaySendMessage",
"stageDisplayMessage": "Hello"
}
No response
Hide message from Message panel on Stage Display
{
"action": "stageDisplayHideMessage"
}
No response
Set another Stage Display as active with index n
- stageDisplayIndex (int): Index of StageDisplay Set
{
"action": "stageDisplaySetIndex",
"stageDisplayIndex": "0"
}
{
"action": "stageDisplaySetIndex",
"stageDisplayIndex": "0"
}
Clock name was changed on ProPresenter
{
"clockName": "Countdown 1",
"clockIndex": 0,
"clockInfo": [1, "Countdown 1"],
"action": "clockNameChanged"
}
{
"action": "clockStopAll"
}
{
"audioArtist": "",
"action": "audioTriggered",
"audioName": "Dramatic Sound Effect"
}
{
"action": "presentationTriggerIndex",
"slideIndex": 3,
"presentationPath": "Untitled.pro6"
}