ProPresenter API 7.6

Documenting RenewedVision's undocumented network protocols with examples

This document refers to ProPresenter 7.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]

IMPORTANT DIFFERENCE FROM PRO 6

Pro 7 implements a slightly different WebSocket protocol that most websocket clients should handle transparently; however, in rare cases this implementation can cause problems for developers. Of note is that the protocol requires two HTTP request headers to be included in addition to the standard WebSocket upgrade headers.

Sec-WebSocket-Key and Sec-WebSocket-Version

The key must be a Base64 encoded key similar to this: a8STpzZ6qXqaQvnHNehseA==

The Version must be at least 13.

Note also that Pro7 incorrectly expects the HTTP header keys to appear in CamelCase which violates the HTTP spec, but nonetheless is what it is.

Therefore, a correctly formed connection to the Pro7 server must have headers looking like this:

GET /stagedisplay HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: /8STpzZ6qXqaQvnHNehseA==
Sec-WebSocket-Version: 13

Servers

  • ws://{host}:{port}/{channel_name}wspro6

    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."

    host
    required
    string

    The hostname or ip address of the computer running ProPresenter 6

    port
    required
    string

    The port specified in the ProPresenter Network settings

    channel_name
    required
    string

    remote for the remote control channel, or stagedisplay for the stage display channel

      Allowed values:
    • "remote"
    • "stagedisplay"

Operations

  • PUB /remote

    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
    
    • The value of the protocol parameter is used to perform a version check on the remote client.
    • ProPresenter 7.0 - 7.4.1 checks for a value here of at least 700 - otherwise it denies authentication and returns "Protocol out of date. Update application"
    • ProPresenter 7.4.2 and later checks for a value here of at least 701 - otherwise it denies authentication and returns "Protocol out of date. Update application"

    Accepts one of the following messages:

    • #0authenticate (publish)authenticate__pub

      RemoteAuthentication

      This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.

      For ProPresenter 7.4.2 and later, the protocol must be 701

      RELATED RESPONSE: authenticate (subscribe)

      object

      Examples

    • #1libraryRequest (publish)libraryRequest__pub

      Get Library (all presentations)

      Will return all items in the ProPresenter library.

      • unlike Pro6, Pro7 sends the pathnames with slashes correctly encoded.

      RELATED RESPONSE: libraryRequest (subscribe)

      object

      Examples

    • #2playlistRequestAll (publish)playlistRequestAll__pub

      Get Playlists

      Will return all presentation playlists.

      • Presentation playlists and Audio playlists have a similar format
      • A playlist may be a 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)

      object

      Examples

    • #3presentationRequest (publish)presentationRequest__pub

      Request a Playlist by Location

      NOTE: even though the requested action is presentationRequest ProPresenter responds with an action value of presentationCurrent but it will be slightly different from the response to an actual presentationCurrent request. See below.

      RELATED RESPONSE: presentationRequest (subscribe)

      object

      Examples

    • #4presentationCurrent (publish)presentationCurrent__pub

      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 presentationDestination as a field at the root level of the response.

      NOTE: In Pro6, the extra field was presentationPath at the root level. Now, both requests return a presentationPath. I still consider this a bug.

      NOTE: Pro7 ignores the presentationSlideQuality field unless it is a string. This is a bug.

      RELATED RESPONSE: presentationCurrent (subscribe)

      object

      Examples

    • #5presentationSlideIndex (publish)presentationSlideIndex__pub

      Get the Index of the Current Slide

      • Slides are indexed from 0
      • This response always sends the slideIndex as a string value
      • The ProPresenter remote issues this action every time it does a presentationRequest

      NOTE: The ProPresenter remote issues this action every time it issues a presentationRequest action.

      NOTE; In Pro7, when a presentation is automatically advancing on the announcements layer while a user is triggering slides in another presentation on the normal output layer, the index returns can sometimes vary between the two different presentations!

      RELATED RESPONSE: presentationSlideIndex (subscribe)

      object

      Examples

    • #6presentationTriggerIndex (publish)presentationTriggerIndex__pub

      Activate a Slide

      Works just like clicking on a slide.

      NOTE: This is different from Pro6. Only string numerics are accepted for slideIndex even though the presentationTriggerMessage responds with an integer. This is a bug.

      RELATED RESPONSE: presentationTriggerIndex (subscribe)

      object

      Examples

    • #7presentationTriggerNext (publish)presentationTriggerNext__pub

      Activate the Next Slide

      Works just like hitting the right arrow or spacebar.

      RELATED RESPONSE: presentationTriggerNext (subscribe)

      object

      Examples

    • #8presentationTriggerPrevious (publish)presentationTriggerPrevious__pub

      Activate the Previous Slide

      Works just like hitting the left arrow.

      RELATED RESPONSE: presentationTriggerPrevious (subscribe)

      object

      Examples

    • #9audioRequest (publish)audioRequest__pub

      Get Audio Library

      Will return all the items in the audio library

      RELATED RESPONSE: audioRequest (subscribe)

      object

      Examples

    • #10audioCurrentSong (publish)audioCurrentSong__pub

      Get the Current Song

      Will return the data for the currently playing song, if there is one.

      RELATED RESPONSE: audioCurrentSong (subscribe)

      object

      Examples

    • #11audioIsPlaying (publish)audioIsPlaying__pub

      Is Audio Playing (BROKEN)

      This api request exists, but in Pro7 always reports true

      RELATED RESPONSE: audioIsPlaying (subscribe)

      object

      Examples

    • #12audioStartCue (publish)audioStartCue__pub

      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)

      object

      Examples

    • #13audioPlayPause (publish)audioPlayPause__pub

      Toggle the Audio Play State

      NOTE: this is different from Pro6. Pro6 used Play but Pro7 uses Playing

      RELATED RESPONSE: audioPlayPause (subscribe)

      object

      Examples

    • #14timelinePlayPause (publish)timelinePlayPause__pub

      Toggle the Timeline Play State

      If presentationPath is missing, Pro6 would crash, but Pro7 doesn't.

      NO RESPONSE

      object

      Examples

    • #15timelineRewind (publish)timelineRewind__pub

      Reset the Timeline for a Presentation

      If presentationPath is missing, Pro6 will crash.

      NO RESPONSE

      object

      Examples

    • #16clockRequest (publish)clockRequest__pub

      Request all Clock data

      RELATED RESPONSE: clockRequest (subscribe)

      object

      Examples

    • #17clockCurrentTimes (publish)clockCurrentTimes__pub

      Get Current Times for All Clocks

      REMOVED FROM PRO7 !!

      RELATED RESPONSE: clockCurrentTimes (subscribe)

      object

      Examples

    • #18clockStartSendingCurrentTime (publish)clockStartSendingCurrentTime__pub

      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)

      object

      Examples

    • #19clockStopSendingCurrentTime (publish)clockStopSendingCurrentTime__pub

      Unsubscribe from Clock Updates

      NO RESPONSE

      object

      Examples

    • #20clockStart (publish)clockStart__pub

      Start a Specific Clock

      RELATED RESPONSE: clockStart (subscribe)

      object

      Examples

    • #21clockStop (publish)clockStop__pub

      Stop a Specific Clock

      RELATED RESPONSE: clockStop (subscribe)

      object

      Examples

    • #22clockReset (publish)clockReset__pub

      Reset a clock back to initial settings

      RELATED RESPONSE: clockReset (subscribe)

      object

      Examples

    • #23clockUpdate (publish)clockUpdate__pub

      Update a Clock (Timer) (eg edit time)

      • Clocks are referenced by index. See reply from "clockRequest" action above to learn indexes.
      • Not all parameters are required for each clock type.
        • Countdown clocks only need "clockTime".
        • Elapsed Time Clocks need "clockTime" and optionally will use "clockElapsedTime" if you send it (to set the End Time).
        • You can rename a clock by optionally including the clockName.
        • Type 0 is Countdown
        • Type 1 is CountDown to Time
        • Type 2 is Elapsed Time.
        • Overrun can be modified if you choose to include that as well.

      NO RESPONSE

      object

      Examples

    • #24clockResetAll (publish)clockResetAll__pub

      NO RESPONSE

      object

      Examples

    • #25clockStopAll (publish)clockStopAll__pub

      NO RESPONSE

      object

      Examples

    • #26clockStartAll (publish)clockStartAll__pub

      NO RESPONSE

      object

      Examples

    • #27messageRequest (publish)messageRequest__pub

      Get all Messages

      • The key is everything inside the curly braces ${} so that the key for a countdown looks like this Countdown 1: H:MM:SS.
      • If the key refers to a countdown, the value is used to update the duration field of the countdown timer, but will not perform a "reset".
      • If the key refers to a countdown and the countdown is not running, this will resume it from its current value.

      RELATED RESPONSE: messageRequest (subscribe)

      object

      Examples

    • #28messageSend (publish)messageSend__pub

      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

      object

      Examples

    • #29messageHide (publish)messageHide__pub

      Hide a Message

      Hide a message identified by its index

      NO RESPONSE

      object

      Examples

    • #30stageDisplaySendMessage (publish)stageDisplaySendMessage__pub

      Show Stage Display Message

      NO RESPONSE

      object

      Examples

    • #31stageDisplayHideMessage (publish)stageDisplayHideMessage__pub

      Hide Stage Display Message

      NO RESPONSE

      object

      Examples

    • #32stageDisplaySetIndex (publish)stageDisplaySetIndex__pub

      Select Stage Display Layout

      EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND

      RELATED RESPONSE: stageDisplaySetIndex (subscribe)

      object

      Examples

    • #33stageDisplaySets (publish)stageDisplaySets__pub

      Get Stage Display Layouts

      NOTE: this is much different from Pro6 also.

      RELATED RESPONSE: stageDisplaySets (subscribe)

      object

      Examples

    • #34stageDisplayChangeLayout (publish)stageDisplayChangeLayout__pub

      Select Stage Display Layout

      object

      Examples

    • #35macrosTrigger (publish)macrosTrigger__pub

      Trigger a Macro

      Trigger a macro using macroName, macroID, or macroIndex, must have at least one.

      If you send multiple identifier parameters, they are handled in the following order of precedence:

      1. macroID
      2. macroName
      3. macroIndex

      NO RESPONSE

      object

      Examples

    • #36macrosRequest (publish)macrosRequest__pub

      Request a list of Pro7 Macros

      RELATED RESPONSE: macrosRequest (subscribe)

      object

      Examples

    • #37looksTrigger (publish)looksTrigger__pub

      Trigger a Look

      Trigger a look. Similar to triggering a Macro.

      If you send multiple identifier parameters, they are handled in the following order of precedence:

      1. lookID
      2. lookName
      3. lookIndex

      NO RESPONSE

      object

      Examples

    • #38looksRequest (publish)looksRequest__pub

      Request a list of Pro7 Looks

      Includes the currently active Look (activeLook)

      RELATED RESPONSE: looksRequest (subscribe)

      object

      Examples

    • #39clearAll (publish)clearAll__pub

      Clear All

      NO RESPONSE

      object

      Examples

    • #40clearText (publish)clearText__pub

      Clear Slide

      NO RESPONSE

      object

      Examples

    • #41clearMessages (publish)clearMessages__pub

      Clear Messages

      NO RESPONSE

      object

      Examples

    • #42clearAnnouncements (publish)clearAnnouncements__pub

      Clear Announcements

      NO RESPONSE

      object

      Examples

    • #43clearProps (publish)clearProps__pub

      Clear Props

      NO RESPONSE

      object

      Examples

    • #44clearAudio (publish)clearAudio__pub

      Clear Audio

      NO RESPONSE

      object

      Examples

    • #45clearVideo (publish)clearVideo__pub

      Clear Video

      NO RESPONSE

      object

      Examples

    • #46clearTelestrator (publish)clearTelestrator__pub

      Clear Telestrator

      NO RESPONSE

      object

      Examples

    • #47clearToLogo (publish)clearToLogo__pub

      Clear To Logo

      NO RESPONSE

      object

      Examples

  • SUB /remote

    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
    
    • The value of the protocol parameter is used to perform a version check on the remote client.
    • ProPresenter 7.0 - 7.4.1 checks for a value here of at least 700 - otherwise it denies authentication and returns "Protocol out of date. Update application"
    • ProPresenter 7.4.2 and later checks for a value here of at least 701 - otherwise it denies authentication and returns "Protocol out of date. Update application"

    Accepts one of the following messages:

    • #0authenticate (subscribe)authenticate__sub

      RemoteAuthentication

      This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.

      For ProPresenter 7.4.2 and later, the protocol must be 701

      RELATED COMMAND: authenticate (publish)

      object

      Examples

    • #1libraryRequest (subscribe)libraryRequest__sub

      Get Library (all presentations)

      Will return all items in the ProPresenter library.

      • unlike Pro6, Pro7 sends the pathnames with slashes correctly encoded.

      RELATED COMMAND: libraryRequest (publish)

      object

      Examples

    • #2playlistRequestAll (subscribe)playlistRequestAll__sub

      Get Playlists

      Will return all presentation playlists.

      • Presentation playlists and Audio playlists have a similar format
      • A playlist may be a 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)

      object

      Examples

    • #3presentationRequest (subscribe)presentationRequest__sub

      Request a Playlist by Location

      NOTE: even though the requested action is presentationRequest ProPresenter responds with an action value of presentationCurrent but it will be slightly different from the response to an actual presentationCurrent request. See below.

      RELATED COMMAND: presentationRequest (publish)

      object

      Examples

    • #4presentationCurrent (subscribe)presentationCurrent__sub

      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 presentationDestination as a field at the root level of the response.

      NOTE: In Pro6, the extra field was presentationPath at the root level. Now, both requests return a presentationPath. I still consider this a bug.

      NOTE: Pro7 ignores the presentationSlideQuality field unless it is a string. This is a bug.

      RELATED COMMAND: presentationCurrent (publish)

      object

      Examples

    • #5presentationSlideIndex (subscribe)presentationSlideIndex__sub

      Get the Index of the Current Slide

      • Slides are indexed from 0
      • This response always sends the slideIndex as a string value
      • The ProPresenter remote issues this action every time it does a presentationRequest

      NOTE: The ProPresenter remote issues this action every time it issues a presentationRequest action.

      NOTE; In Pro7, when a presentation is automatically advancing on the announcements layer while a user is triggering slides in another presentation on the normal output layer, the index returns can sometimes vary between the two different presentations!

      RELATED COMMAND: presentationSlideIndex (publish)

      object

      Examples

    • #6presentationTriggerIndex (subscribe)presentationTriggerIndex__sub

      Activate a Slide

      Works just like clicking on a slide.

      NOTE: This is different from Pro6. Only string numerics are accepted for slideIndex even though the presentationTriggerMessage responds with an integer. This is a bug.

      RELATED COMMAND: presentationTriggerIndex (publish)

      object
      uid: presentationTriggerMessage

      Examples

    • #7presentationTriggerNext (subscribe)presentationTriggerNext__sub

      Activate the Next Slide

      Works just like hitting the right arrow or spacebar.

      RELATED COMMAND: presentationTriggerNext (publish)

      object
      uid: presentationTriggerMessage

      Examples

    • #8presentationTriggerPrevious (subscribe)presentationTriggerPrevious__sub

      Activate the Previous Slide

      Works just like hitting the left arrow.

      RELATED COMMAND: presentationTriggerPrevious (publish)

      object
      uid: presentationTriggerMessage

      Examples

    • #9audioRequest (subscribe)audioRequest__sub

      Get Audio Library

      Will return all the items in the audio library

      RELATED COMMAND: audioRequest (publish)

      object

      Examples

    • #10audioCurrentSong (subscribe)audioCurrentSong__sub

      Get the Current Song

      Will return the data for the currently playing song, if there is one.

      RELATED COMMAND: audioCurrentSong (publish)

      object

      Examples

    • #11audioIsPlaying (subscribe)audioIsPlaying__sub

      Is Audio Playing (BROKEN)

      This api request exists, but in Pro7 always reports true

      RELATED COMMAND: audioIsPlaying (publish)

      object

      Examples

    • #12audioStartCue (subscribe)audioStartCue__sub

      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)

      object

      Examples

    • #13audioPlayPause (subscribe)audioPlayPause__sub

      Toggle the Audio Play State

      NOTE: this is different from Pro6. Pro6 used Play but Pro7 uses Playing

      RELATED COMMAND: audioPlayPause (publish)

      object

      Examples

    • #14clockRequest (subscribe)clockRequest__sub

      Request all Clock data

      RELATED COMMAND: clockRequest (publish)

      object

      Examples

    • #15clockCurrentTimes (subscribe)clockCurrentTimes__sub

      Get Current Times for All Clocks

      REMOVED FROM PRO7 !!

      RELATED COMMAND: clockCurrentTimes (publish)

      object
      uid: clockCurrentTimesMessage
        Examples values:
      • {"action":"clockCurrentTimes","clockTimes":["0:10:00","--:--:--","13:52:23"]}

      Examples

    • #16clockStartSendingCurrentTime (subscribe)clockStartSendingCurrentTime__sub

      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)

      object
      uid: clockCurrentTimesMessage
        Examples values:
      • {"action":"clockCurrentTimes","clockTimes":["0:10:00","--:--:--","13:52:23"]}

      Examples

    • #17clockStart (subscribe)clockStart__sub

      Start a Specific Clock

      RELATED COMMAND: clockStart (publish)

      object
      uid: clockStartStopMessage

      Pro7 no longer sends the clockInfo parameter.

      Examples

    • #18clockStop (subscribe)clockStop__sub

      Stop a Specific Clock

      RELATED COMMAND: clockStop (publish)

      object
      uid: clockStartStopMessage

      Pro7 no longer sends the clockInfo parameter.

      Examples

    • #19clockReset (subscribe)clockReset__sub

      Reset a clock back to initial settings

      RELATED COMMAND: clockReset (publish)

      object

      Examples

    • #20messageRequest (subscribe)messageRequest__sub

      Get all Messages

      • The key is everything inside the curly braces ${} so that the key for a countdown looks like this Countdown 1: H:MM:SS.
      • If the key refers to a countdown, the value is used to update the duration field of the countdown timer, but will not perform a "reset".
      • If the key refers to a countdown and the countdown is not running, this will resume it from its current value.

      RELATED COMMAND: messageRequest (publish)

      object

      Examples

    • #21stageDisplaySetIndex (subscribe)stageDisplaySetIndex__sub

      Select Stage Display Layout

      EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND

      RELATED COMMAND: stageDisplaySetIndex (publish)

      object

      Examples

    • #22stageDisplaySets (subscribe)stageDisplaySets__sub

      Get Stage Display Layouts

      NOTE: this is much different from Pro6 also.

      RELATED COMMAND: stageDisplaySets (publish)

      object
      uid: stageDisplaySetsMessage
        Examples values:
      • {"action":"stageDisplaySets","stageScreens":[{"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}],"stageLayouts":[{"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"},{"stageLayoutName":"Slides","stageLayoutUUID":"89A2AC43-B47F-44C5-8E21-CE0E424A70C1"}]}

      Examples

    • #23stageDisplayChangeLayout (subscribe)stageDisplayChangeLayout__sub

      Select Stage Display Layout

      object
      uid: stageDisplaySetsMessage
        Examples values:
      • {"action":"stageDisplaySets","stageScreens":[{"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}],"stageLayouts":[{"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"},{"stageLayoutName":"Slides","stageLayoutUUID":"89A2AC43-B47F-44C5-8E21-CE0E424A70C1"}]}

      Examples

    • #24macrosRequest (subscribe)macrosRequest__sub

      Request a list of Pro7 Macros

      RELATED COMMAND: macrosRequest (publish)

      object

      Examples

    • #25looksRequest (subscribe)looksRequest__sub

      Request a list of Pro7 Looks

      Includes the currently active Look (activeLook)

      RELATED COMMAND: looksRequest (publish)

      object

      Examples

  • PUB /stagedisplay

    Stage Display API

    Send messages to the API

    NOTE: Pro7 maintains the same protocol number as Pro6: 610

    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.

    In ProPresenter 7, the response will be the raw bytes of a TIFF image, but the response will INCORRECTLY claim it is a Content-Type of image/jpeg.

    Accepts one of the following messages:

    • #0ath (publish)ath__pub

      StageDisplayAuthentication

      RELATED RESPONSE: ath (subscribe)

      object

      Examples

    • #1asl (publish)asl__pub

      Get All Stage Display Layouts

      • acn of asl means "all stage layouts"
      • ary indicates array of stage layouts

      RELATED RESPONSE: asl (subscribe)

      object

      Examples

    • #2psl (publish)psl__pub

      Request Current Stage Display Layout

      RELATED RESPONSE: psl (subscribe)

      object

      Examples

    • #3fv (publish)fv__pub

      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)

      object

      Examples

  • SUB /stagedisplay

    Stage Display API

    Receive messages from the API

    NOTE: Pro7 maintains the same protocol number as Pro6: 610

    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.

    In ProPresenter 7, the response will be the raw bytes of a TIFF image, but the response will INCORRECTLY claim it is a Content-Type of image/jpeg.

    Accepts one of the following messages:

    • #0ath (subscribe)ath__sub

      StageDisplayAuthentication

      RELATED COMMAND: ath (publish)

      object

      Examples

    • #1asl (subscribe)asl__sub

      Get All Stage Display Layouts

      • acn of asl means "all stage layouts"
      • ary indicates array of stage layouts

      RELATED COMMAND: asl (publish)

      object

      Examples

    • #2psl (subscribe)psl__sub

      Request Current Stage Display Layout

      RELATED COMMAND: psl (publish)

      object

      Examples

    • #3fv (subscribe)fv__sub

      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)

      object

      Examples

    • #4sl (subscribe)sl__sub

      On New Stage Display Selected

      • acn of sl indicates this is a single stage layout

      THIS IS A SUBSCRIBE-ONLY MESSAGE

      object
      uid: stageDisplayLayout
      • nme indicates layout name
      • ovr indicates if overrun color should be used
      • oCl indicates color for timer overruns
      • brd indicates if borders and labels should be used
      • uid indicates layout uid
      • zro indicates if zeroes should be removed from times
      • fme indicates array of frame layout specifications

      Examples

    • #5sys (subscribe)sys__sub

      On New System Time

      THIS IS A SUBSCRIBE-ONLY MESSAGE

      object

      Examples

    • #6vid (subscribe)vid__sub

      On New Video Countdown Time

      Time follows the same H:MM:SS format as the remote protocol.

      THIS IS A SUBSCRIBE-ONLY MESSAGE

      object

      Examples

    • #7cc (subscribe)cc__sub

      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

      object

      Examples

    • #8tmr (subscribe)tmr__sub

      On Timer Update

      THIS IS A SUBSCRIBE-ONLY MESSAGE

      object

      Examples

Messages

  • #1authenticate (publish)authenticate__pub

    RemoteAuthentication

    This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.

    For ProPresenter 7.4.2 and later, the protocol must be 701

    RELATED RESPONSE: authenticate (subscribe)

    object
  • #2authenticate (subscribe)authenticate__sub

    RemoteAuthentication

    This is the first command ProPresenter expects to receive over the websocket. This command requests authentication.

    For ProPresenter 7.4.2 and later, the protocol must be 701

    RELATED COMMAND: authenticate (publish)

    object
  • #3libraryRequest (publish)libraryRequest__pub

    Get Library (all presentations)

    Will return all items in the ProPresenter library.

    • unlike Pro6, Pro7 sends the pathnames with slashes correctly encoded.

    RELATED RESPONSE: libraryRequest (subscribe)

    object
  • #4libraryRequest (subscribe)libraryRequest__sub

    Get Library (all presentations)

    Will return all items in the ProPresenter library.

    • unlike Pro6, Pro7 sends the pathnames with slashes correctly encoded.

    RELATED COMMAND: libraryRequest (publish)

    object
  • #5playlistRequestAll (publish)playlistRequestAll__pub

    Get Playlists

    Will return all presentation playlists.

    • Presentation playlists and Audio playlists have a similar format
    • A playlist may be a 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)

    object
  • #6playlistRequestAll (subscribe)playlistRequestAll__sub

    Get Playlists

    Will return all presentation playlists.

    • Presentation playlists and Audio playlists have a similar format
    • A playlist may be a 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)

    object
  • #7presentationRequest (publish)presentationRequest__pub

    Request a Playlist by Location

    NOTE: even though the requested action is presentationRequest ProPresenter responds with an action value of presentationCurrent but it will be slightly different from the response to an actual presentationCurrent request. See below.

    RELATED RESPONSE: presentationRequest (subscribe)

    object
  • #8presentationRequest (subscribe)presentationRequest__sub

    Request a Playlist by Location

    NOTE: even though the requested action is presentationRequest ProPresenter responds with an action value of presentationCurrent but it will be slightly different from the response to an actual presentationCurrent request. See below.

    RELATED COMMAND: presentationRequest (publish)

    object
  • #9presentationCurrent (publish)presentationCurrent__pub

    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 presentationDestination as a field at the root level of the response.

    NOTE: In Pro6, the extra field was presentationPath at the root level. Now, both requests return a presentationPath. I still consider this a bug.

    NOTE: Pro7 ignores the presentationSlideQuality field unless it is a string. This is a bug.

    RELATED RESPONSE: presentationCurrent (subscribe)

    object
  • #10presentationCurrent (subscribe)presentationCurrent__sub

    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 presentationDestination as a field at the root level of the response.

    NOTE: In Pro6, the extra field was presentationPath at the root level. Now, both requests return a presentationPath. I still consider this a bug.

    NOTE: Pro7 ignores the presentationSlideQuality field unless it is a string. This is a bug.

    RELATED COMMAND: presentationCurrent (publish)

    object
  • #11presentationSlideIndex (publish)presentationSlideIndex__pub

    Get the Index of the Current Slide

    • Slides are indexed from 0
    • This response always sends the slideIndex as a string value
    • The ProPresenter remote issues this action every time it does a presentationRequest

    NOTE: The ProPresenter remote issues this action every time it issues a presentationRequest action.

    NOTE; In Pro7, when a presentation is automatically advancing on the announcements layer while a user is triggering slides in another presentation on the normal output layer, the index returns can sometimes vary between the two different presentations!

    RELATED RESPONSE: presentationSlideIndex (subscribe)

    object
  • #12presentationSlideIndex (subscribe)presentationSlideIndex__sub

    Get the Index of the Current Slide

    • Slides are indexed from 0
    • This response always sends the slideIndex as a string value
    • The ProPresenter remote issues this action every time it does a presentationRequest

    NOTE: The ProPresenter remote issues this action every time it issues a presentationRequest action.

    NOTE; In Pro7, when a presentation is automatically advancing on the announcements layer while a user is triggering slides in another presentation on the normal output layer, the index returns can sometimes vary between the two different presentations!

    RELATED COMMAND: presentationSlideIndex (publish)

    object
  • #13presentationTriggerIndex (publish)presentationTriggerIndex__pub

    Activate a Slide

    Works just like clicking on a slide.

    NOTE: This is different from Pro6. Only string numerics are accepted for slideIndex even though the presentationTriggerMessage responds with an integer. This is a bug.

    RELATED RESPONSE: presentationTriggerIndex (subscribe)

    object
  • #14presentationTriggerIndex (subscribe)presentationTriggerIndex__sub

    Activate a Slide

    Works just like clicking on a slide.

    NOTE: This is different from Pro6. Only string numerics are accepted for slideIndex even though the presentationTriggerMessage responds with an integer. This is a bug.

    RELATED COMMAND: presentationTriggerIndex (publish)

    object
    uid: presentationTriggerMessage
  • #15presentationTriggerNext (publish)presentationTriggerNext__pub

    Activate the Next Slide

    Works just like hitting the right arrow or spacebar.

    RELATED RESPONSE: presentationTriggerNext (subscribe)

    object
  • #16presentationTriggerNext (subscribe)presentationTriggerNext__sub

    Activate the Next Slide

    Works just like hitting the right arrow or spacebar.

    RELATED COMMAND: presentationTriggerNext (publish)

    object
    uid: presentationTriggerMessage
  • #17presentationTriggerPrevious (publish)presentationTriggerPrevious__pub

    Activate the Previous Slide

    Works just like hitting the left arrow.

    RELATED RESPONSE: presentationTriggerPrevious (subscribe)

    object
  • #18presentationTriggerPrevious (subscribe)presentationTriggerPrevious__sub

    Activate the Previous Slide

    Works just like hitting the left arrow.

    RELATED COMMAND: presentationTriggerPrevious (publish)

    object
    uid: presentationTriggerMessage
  • #19audioRequest (publish)audioRequest__pub

    Get Audio Library

    Will return all the items in the audio library

    RELATED RESPONSE: audioRequest (subscribe)

    object
  • #20audioRequest (subscribe)audioRequest__sub

    Get Audio Library

    Will return all the items in the audio library

    RELATED COMMAND: audioRequest (publish)

    object
  • #21audioCurrentSong (publish)audioCurrentSong__pub

    Get the Current Song

    Will return the data for the currently playing song, if there is one.

    RELATED RESPONSE: audioCurrentSong (subscribe)

    object
  • #22audioCurrentSong (subscribe)audioCurrentSong__sub

    Get the Current Song

    Will return the data for the currently playing song, if there is one.

    RELATED COMMAND: audioCurrentSong (publish)

    object
  • #23audioIsPlaying (publish)audioIsPlaying__pub

    Is Audio Playing (BROKEN)

    This api request exists, but in Pro7 always reports true

    RELATED RESPONSE: audioIsPlaying (subscribe)

    object
  • #24audioIsPlaying (subscribe)audioIsPlaying__sub

    Is Audio Playing (BROKEN)

    This api request exists, but in Pro7 always reports true

    RELATED COMMAND: audioIsPlaying (publish)

    object
  • #25audioStartCue (publish)audioStartCue__pub

    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)

    object
  • #26audioStartCue (subscribe)audioStartCue__sub

    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)

    object
  • #27audioPlayPause (publish)audioPlayPause__pub

    Toggle the Audio Play State

    NOTE: this is different from Pro6. Pro6 used Play but Pro7 uses Playing

    RELATED RESPONSE: audioPlayPause (subscribe)

    object
  • #28audioPlayPause (subscribe)audioPlayPause__sub

    Toggle the Audio Play State

    NOTE: this is different from Pro6. Pro6 used Play but Pro7 uses Playing

    RELATED COMMAND: audioPlayPause (publish)

    object
  • #29timelinePlayPause (publish)timelinePlayPause__pub

    Toggle the Timeline Play State

    If presentationPath is missing, Pro6 would crash, but Pro7 doesn't.

    NO RESPONSE

    object
  • #30timelineRewind (publish)timelineRewind__pub

    Reset the Timeline for a Presentation

    If presentationPath is missing, Pro6 will crash.

    NO RESPONSE

    object
  • #31clockRequest (publish)clockRequest__pub

    Request all Clock data

    RELATED RESPONSE: clockRequest (subscribe)

    object
  • #32clockRequest (subscribe)clockRequest__sub

    Request all Clock data

    RELATED COMMAND: clockRequest (publish)

    object
  • #33clockCurrentTimes (publish)clockCurrentTimes__pub

    Get Current Times for All Clocks

    REMOVED FROM PRO7 !!

    RELATED RESPONSE: clockCurrentTimes (subscribe)

    object
  • #34clockCurrentTimes (subscribe)clockCurrentTimes__sub

    Get Current Times for All Clocks

    REMOVED FROM PRO7 !!

    RELATED COMMAND: clockCurrentTimes (publish)

    object
    uid: clockCurrentTimesMessage
      Examples values:
    • {"action":"clockCurrentTimes","clockTimes":["0:10:00","--:--:--","13:52:23"]}
  • #35clockStartSendingCurrentTime (publish)clockStartSendingCurrentTime__pub

    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)

    object
  • #36clockStartSendingCurrentTime (subscribe)clockStartSendingCurrentTime__sub

    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)

    object
    uid: clockCurrentTimesMessage
      Examples values:
    • {"action":"clockCurrentTimes","clockTimes":["0:10:00","--:--:--","13:52:23"]}
  • #37clockStopSendingCurrentTime (publish)clockStopSendingCurrentTime__pub

    Unsubscribe from Clock Updates

    NO RESPONSE

    object
  • #38clockStart (publish)clockStart__pub

    Start a Specific Clock

    RELATED RESPONSE: clockStart (subscribe)

    object
  • #39clockStart (subscribe)clockStart__sub

    Start a Specific Clock

    RELATED COMMAND: clockStart (publish)

    object
    uid: clockStartStopMessage

    Pro7 no longer sends the clockInfo parameter.

  • #40clockStop (publish)clockStop__pub

    Stop a Specific Clock

    RELATED RESPONSE: clockStop (subscribe)

    object
  • #41clockStop (subscribe)clockStop__sub

    Stop a Specific Clock

    RELATED COMMAND: clockStop (publish)

    object
    uid: clockStartStopMessage

    Pro7 no longer sends the clockInfo parameter.

  • #42clockReset (publish)clockReset__pub

    Reset a clock back to initial settings

    RELATED RESPONSE: clockReset (subscribe)

    object
  • #43clockReset (subscribe)clockReset__sub

    Reset a clock back to initial settings

    RELATED COMMAND: clockReset (publish)

    object
  • #44clockUpdate (publish)clockUpdate__pub

    Update a Clock (Timer) (eg edit time)

    • Clocks are referenced by index. See reply from "clockRequest" action above to learn indexes.
    • Not all parameters are required for each clock type.
      • Countdown clocks only need "clockTime".
      • Elapsed Time Clocks need "clockTime" and optionally will use "clockElapsedTime" if you send it (to set the End Time).
      • You can rename a clock by optionally including the clockName.
      • Type 0 is Countdown
      • Type 1 is CountDown to Time
      • Type 2 is Elapsed Time.
      • Overrun can be modified if you choose to include that as well.

    NO RESPONSE

    object
  • #45clockResetAll (publish)clockResetAll__pub

    NO RESPONSE

    object
  • #46clockStopAll (publish)clockStopAll__pub

    NO RESPONSE

    object
  • #47clockStartAll (publish)clockStartAll__pub

    NO RESPONSE

    object
  • #48messageRequest (publish)messageRequest__pub

    Get all Messages

    • The key is everything inside the curly braces ${} so that the key for a countdown looks like this Countdown 1: H:MM:SS.
    • If the key refers to a countdown, the value is used to update the duration field of the countdown timer, but will not perform a "reset".
    • If the key refers to a countdown and the countdown is not running, this will resume it from its current value.

    RELATED RESPONSE: messageRequest (subscribe)

    object
  • #49messageRequest (subscribe)messageRequest__sub

    Get all Messages

    • The key is everything inside the curly braces ${} so that the key for a countdown looks like this Countdown 1: H:MM:SS.
    • If the key refers to a countdown, the value is used to update the duration field of the countdown timer, but will not perform a "reset".
    • If the key refers to a countdown and the countdown is not running, this will resume it from its current value.

    RELATED COMMAND: messageRequest (publish)

    object
  • #50messageSend (publish)messageSend__pub

    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

    object
  • #51messageHide (publish)messageHide__pub

    Hide a Message

    Hide a message identified by its index

    NO RESPONSE

    object
  • #52stageDisplaySendMessage (publish)stageDisplaySendMessage__pub

    Show Stage Display Message

    NO RESPONSE

    object
  • #53stageDisplayHideMessage (publish)stageDisplayHideMessage__pub

    Hide Stage Display Message

    NO RESPONSE

    object
  • #54stageDisplaySetIndex (publish)stageDisplaySetIndex__pub

    Select Stage Display Layout

    EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND

    RELATED RESPONSE: stageDisplaySetIndex (subscribe)

    object
  • #55stageDisplaySetIndex (subscribe)stageDisplaySetIndex__sub

    Select Stage Display Layout

    EXPECTED RESPONSE IS THE SAME AS THE SENT COMMAND

    RELATED COMMAND: stageDisplaySetIndex (publish)

    object
  • #56stageDisplaySets (publish)stageDisplaySets__pub

    Get Stage Display Layouts

    NOTE: this is much different from Pro6 also.

    RELATED RESPONSE: stageDisplaySets (subscribe)

    object
  • #57stageDisplaySets (subscribe)stageDisplaySets__sub

    Get Stage Display Layouts

    NOTE: this is much different from Pro6 also.

    RELATED COMMAND: stageDisplaySets (publish)

    object
    uid: stageDisplaySetsMessage
      Examples values:
    • {"action":"stageDisplaySets","stageScreens":[{"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}],"stageLayouts":[{"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"},{"stageLayoutName":"Slides","stageLayoutUUID":"89A2AC43-B47F-44C5-8E21-CE0E424A70C1"}]}
  • #58stageDisplayChangeLayout (publish)stageDisplayChangeLayout__pub

    Select Stage Display Layout

    object
  • #59stageDisplayChangeLayout (subscribe)stageDisplayChangeLayout__sub

    Select Stage Display Layout

    object
    uid: stageDisplaySetsMessage
      Examples values:
    • {"action":"stageDisplaySets","stageScreens":[{"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}],"stageLayouts":[{"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"},{"stageLayoutName":"Slides","stageLayoutUUID":"89A2AC43-B47F-44C5-8E21-CE0E424A70C1"}]}
  • #60macrosTrigger (publish)macrosTrigger__pub

    Trigger a Macro

    Trigger a macro using macroName, macroID, or macroIndex, must have at least one.

    If you send multiple identifier parameters, they are handled in the following order of precedence:

    1. macroID
    2. macroName
    3. macroIndex

    NO RESPONSE

    object
  • #61macrosRequest (publish)macrosRequest__pub

    Request a list of Pro7 Macros

    RELATED RESPONSE: macrosRequest (subscribe)

    object
  • #62macrosRequest (subscribe)macrosRequest__sub

    Request a list of Pro7 Macros

    RELATED COMMAND: macrosRequest (publish)

    object
  • #63looksTrigger (publish)looksTrigger__pub

    Trigger a Look

    Trigger a look. Similar to triggering a Macro.

    If you send multiple identifier parameters, they are handled in the following order of precedence:

    1. lookID
    2. lookName
    3. lookIndex

    NO RESPONSE

    object
  • #64looksRequest (publish)looksRequest__pub

    Request a list of Pro7 Looks

    Includes the currently active Look (activeLook)

    RELATED RESPONSE: looksRequest (subscribe)

    object
  • #65looksRequest (subscribe)looksRequest__sub

    Request a list of Pro7 Looks

    Includes the currently active Look (activeLook)

    RELATED COMMAND: looksRequest (publish)

    object
  • #66clearAll (publish)clearAll__pub

    Clear All

    NO RESPONSE

    object
  • #67clearText (publish)clearText__pub

    Clear Slide

    NO RESPONSE

    object
  • #68clearMessages (publish)clearMessages__pub

    Clear Messages

    NO RESPONSE

    object
  • #69clearAnnouncements (publish)clearAnnouncements__pub

    Clear Announcements

    NO RESPONSE

    object
  • #70clearProps (publish)clearProps__pub

    Clear Props

    NO RESPONSE

    object
  • #71clearAudio (publish)clearAudio__pub

    Clear Audio

    NO RESPONSE

    object
  • #72clearVideo (publish)clearVideo__pub

    Clear Video

    NO RESPONSE

    object
  • #73clearTelestrator (publish)clearTelestrator__pub

    Clear Telestrator

    NO RESPONSE

    object
  • #74clearToLogo (publish)clearToLogo__pub

    Clear To Logo

    NO RESPONSE

    object
  • #75ath (publish)ath__pub

    StageDisplayAuthentication

    RELATED RESPONSE: ath (subscribe)

    object
  • #76ath (subscribe)ath__sub

    StageDisplayAuthentication

    RELATED COMMAND: ath (publish)

    object
  • #77asl (publish)asl__pub

    Get All Stage Display Layouts

    • acn of asl means "all stage layouts"
    • ary indicates array of stage layouts

    RELATED RESPONSE: asl (subscribe)

    object
  • #78asl (subscribe)asl__sub

    Get All Stage Display Layouts

    • acn of asl means "all stage layouts"
    • ary indicates array of stage layouts

    RELATED COMMAND: asl (publish)

    object
  • #79psl (publish)psl__pub

    Request Current Stage Display Layout

    RELATED RESPONSE: psl (subscribe)

    object
  • #80psl (subscribe)psl__sub

    Request Current Stage Display Layout

    RELATED COMMAND: psl (publish)

    object
  • #81fv (publish)fv__pub

    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)

    object
  • #82fv (subscribe)fv__sub

    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)

    object
  • #83sl (subscribe)sl__sub

    On New Stage Display Selected

    • acn of sl indicates this is a single stage layout

    THIS IS A SUBSCRIBE-ONLY MESSAGE

    object
    uid: stageDisplayLayout
    • nme indicates layout name
    • ovr indicates if overrun color should be used
    • oCl indicates color for timer overruns
    • brd indicates if borders and labels should be used
    • uid indicates layout uid
    • zro indicates if zeroes should be removed from times
    • fme indicates array of frame layout specifications
  • #84sys (subscribe)sys__sub

    On New System Time

    THIS IS A SUBSCRIBE-ONLY MESSAGE

    object
  • #85vid (subscribe)vid__sub

    On New Video Countdown Time

    Time follows the same H:MM:SS format as the remote protocol.

    THIS IS A SUBSCRIBE-ONLY MESSAGE

    object
  • #86cc (subscribe)cc__sub

    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

    object
  • #87tmr (subscribe)tmr__sub

    On Timer Update

    THIS IS A SUBSCRIBE-ONLY MESSAGE

    object

Schemas

  • boolint
    integer
    uid: boolint

    0 for false, 1 for true, (in Pro6, these sometimes show up as strings)

  • colorRGB
    string
    uid: colorRGB

    four space-delimited numbers describing the r,g,b values of a color r,g,b values are 0-1

      Examples values:
    • "0.5 0.8 1"
  • colorRGBA
    string
    uid: colorRGBA

    four space-delimited doubles describing the r,g,b,a values of a color from 0-1

      Examples values:
    • "0.5 0.8 1 0.5"
  • object
    uid: pro7Macro
  • object
    uid: pro7Look
  • itemLocation
    string
    uid: itemLocation

    Unlike Pro6, Pro7 handles pathnames correctly without superfluous slashes.

    Also, unlike Pro6, Pro7 always sends and expects the full pathname. No basenames here.

    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:

    • On Mac, paths are delimited with a single forward slash /
    • On Windows, paths begin with the drive letter, but then also use the forward slash delimeter
      Examples values:
    • "C:/Path/To/ProPresenter/Library/Song 1 Title.pro6"
  • object
    uid: presentationSlide
  • object
    uid: presentationSlideGroup
  • object
    uid: presentation
  • object
    uid: presentationTriggerMessage
  • object
    uid: playlistItemType
  • object
    uid: playlistTypePlaylist
  • object
    uid: playlistTypeGroup
  • oneOf
    uid: playlistUnionType
  • audioPlayPause
    string
    uid: audioPlayPause

    in ProPresenter 7, the "Play" option becomes "Playing"

      Allowed values:
    • "Play"
    • "Pause"
  • clockTimeString
    string
    uid: clockTimeString

    NOTE: This is different from Pro6

    • real times are formatted as "HH:MM:SS.mm" with milliseconds
    • negative times are possible with a leading -.
    • empty times are "00:00:00.00"
  • clockType
    integer
    uid: clockType

    0 is Countdown, 1 is Countdown to Time, 2 is Elapsed Time

      Allowed values:
    • 0
    • 1
    • 2
  • object
    uid: clockFormat

    UNKNOWN / TODO

      Examples values:
    • {"clockMillisecondFormat":2,"clockWallTimeFormat":true,"clockSecondFormat":2,"clockTimePeriodFormat":0,"clockMinuteFormat":2,"clockHourForma\"":2}
  • object
    uid: clockDetail

    clockDetail is greatly expanded over Pro6

  • array<any>
    uid: clockQuickInfo
  • object
    uid: clockStartStopMessage

    Pro7 no longer sends the clockInfo parameter.

  • object
    uid: clockCurrentTimesMessage
      Examples values:
    • {"action":"clockCurrentTimes","clockTimes":["0:10:00","--:--:--","13:52:23"]}
  • object
    uid: screenMessage
      Examples values:
    • {"messageComponents":["Session will begin in: ","${Countdown 1: H:MM:SS}","."],"messageTitle":"Countdown"}
  • object
    uid: stageScreenItem
      Examples values:
    • {"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}
  • object
    uid: stageLayoutInfo
      Examples values:
    • {"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"}
  • stageDisplayFrameGeometry
    string
    uid: stageDisplayFrameGeometry

    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}}

    NOTE: this is not valid JSON, so don't parse it that way!

      Examples values:
    • "{{0.025000000000000001, 0.37418655097613884}, {0.40000000000000002, 0.50108459869848154}} "
  • stageDisplayColor
    string
    uid: stageDisplayColor

    Stage Display colors are strings of three or four space-delimited float values for RGB(A) from 0-1

      Examples values:
    • "1.000000 1.000000 1.000000 1.000000"
  • object
    uid: stageDisplayFrame

    A Stage Display Frame is a box of stage display information.

  • object
    uid: stageDisplayLayout
    • nme indicates layout name
    • ovr indicates if overrun color should be used
    • oCl indicates color for timer overruns
    • brd indicates if borders and labels should be used
    • uid indicates layout uid
    • zro indicates if zeroes should be removed from times
    • fme indicates array of frame layout specifications
  • object
    uid: stageDisplayFrameValue
      Examples values:
    • {"acn":"cs","uid":"FAFCA1CB-8CB8-4E53-8B7C-8D61154516D0","txt":""}
  • object
    uid: stageDisplayLiveSlideFrame
      Examples values:
    • {"RVLiveStream_action":"RVLiveStream_frameData","RVLiveStream_frameDataLength":14625,"RVLiveStream_frameData":"..."}
  • object
    uid: stageDisplaySetsMessage
      Examples values:
    • {"action":"stageDisplaySets","stageScreens":[{"stageLayoutSelectedLayoutUUID":"12CB7383-FA02-47BB-B501-747ADCA860D3","stageScreenName":"Stage Screen 1","stageScreenUUID":"22B3B653-97AB-4371-9958-E42915C8F24A"}],"stageLayouts":[{"stageLayoutName":"Default","stageLayoutUUID":"753B184F-CCCD-42F9-A883-D1DF86E1FFB8"},{"stageLayoutName":"Slides","stageLayoutUUID":"89A2AC43-B47F-44C5-8E21-CE0E424A70C1"}]}