ProPresenter API 6

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]

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
    

    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 6, the protocol must be 600

      RELATED RESPONSE: authenticate (subscribe)

      object

      Examples

    • #1libraryRequest (publish)libraryRequest__pub

      Get Library (all presentations)

      Will return all items in the ProPresenter library.

      • Note that the response will include escaped slashes in path names.

      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 Pro6 responds with a presentationCurrent but it will be different. 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 presentationPath as a field at the root level of the response.

      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

      RELATED RESPONSE: presentationSlideIndex (subscribe)

      object

      Examples

    • #6presentationTriggerIndex (publish)presentationTriggerIndex__pub

      Activate a Slide

      Works just like clicking on a slide

      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 it always reports false

      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

      RELATED RESPONSE: audioPlayPause (subscribe)

      object

      Examples

    • #14timelinePlayPause (publish)timelinePlayPause__pub

      Toggle the Timeline Play State

      If presentationPath is missing, Pro6 will crash.

      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

      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

      RELATED RESPONSE: stageDisplaySets (subscribe)

      object

      Examples

    • #34clearAll (publish)clearAll__pub

      Clear All

      NO RESPONSE

      object

      Examples

    • #35clearText (publish)clearText__pub

      Clear Slide

      NO RESPONSE

      object

      Examples

    • #36clearProps (publish)clearProps__pub

      Clear Props

      NO RESPONSE

      object

      Examples

    • #37clearAudio (publish)clearAudio__pub

      Clear Audio

      NO RESPONSE

      object

      Examples

    • #38clearVideo (publish)clearVideo__pub

      Clear Video

      NO RESPONSE

      object

      Examples

    • #39clearTelestrator (publish)clearTelestrator__pub

      Clear Telestrator

      NO RESPONSE

      object

      Examples

    • #40clearToLogo (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
    

    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 6, the protocol must be 600

      RELATED COMMAND: authenticate (publish)

      object

      Examples

    • #1libraryRequest (subscribe)libraryRequest__sub

      Get Library (all presentations)

      Will return all items in the ProPresenter library.

      • Note that the response will include escaped slashes in path names.

      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 Pro6 responds with a presentationCurrent but it will be different. 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 presentationPath as a field at the root level of the response.

      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

      RELATED COMMAND: presentationSlideIndex (publish)

      object

      Examples

    • #6presentationTriggerIndex (subscribe)presentationTriggerIndex__sub

      Activate a Slide

      Works just like clicking on a slide

      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 it always reports false

      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

      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

      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

      Examples

    • #18clockStop (subscribe)clockStop__sub

      Stop a Specific Clock

      RELATED COMMAND: clockStop (publish)

      object
      uid: clockStartStopMessage

      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

      RELATED COMMAND: stageDisplaySets (publish)

      object

      Examples

  • PUB /stagedisplay

    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:

    • #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

    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:

    • #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 6, the protocol must be 600

    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 6, the protocol must be 600

    RELATED COMMAND: authenticate (publish)

    object
  • #3libraryRequest (publish)libraryRequest__pub

    Get Library (all presentations)

    Will return all items in the ProPresenter library.

    • Note that the response will include escaped slashes in path names.

    RELATED RESPONSE: libraryRequest (subscribe)

    object
  • #4libraryRequest (subscribe)libraryRequest__sub

    Get Library (all presentations)

    Will return all items in the ProPresenter library.

    • Note that the response will include escaped slashes in path names.

    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 Pro6 responds with a presentationCurrent but it will be different. See below.

    RELATED RESPONSE: presentationRequest (subscribe)

    object
  • #8presentationRequest (subscribe)presentationRequest__sub

    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)

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

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

    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

    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

    RELATED COMMAND: presentationSlideIndex (publish)

    object
  • #13presentationTriggerIndex (publish)presentationTriggerIndex__pub

    Activate a Slide

    Works just like clicking on a slide

    RELATED RESPONSE: presentationTriggerIndex (subscribe)

    object
  • #14presentationTriggerIndex (subscribe)presentationTriggerIndex__sub

    Activate a Slide

    Works just like clicking on a slide

    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 it always reports false

    RELATED RESPONSE: audioIsPlaying (subscribe)

    object
  • #24audioIsPlaying (subscribe)audioIsPlaying__sub

    Is Audio Playing (BROKEN)

    This api request exists, but it always reports false

    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

    RELATED RESPONSE: audioPlayPause (subscribe)

    object
  • #28audioPlayPause (subscribe)audioPlayPause__sub

    Toggle the Audio Play State

    RELATED COMMAND: audioPlayPause (publish)

    object
  • #29timelinePlayPause (publish)timelinePlayPause__pub

    Toggle the Timeline Play State

    If presentationPath is missing, Pro6 will crash.

    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

    object
  • #34clockCurrentTimes (subscribe)clockCurrentTimes__sub

    Get Current Times for All Clocks

    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
  • #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
  • #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

    RELATED RESPONSE: stageDisplaySets (subscribe)

    object
  • #57stageDisplaySets (subscribe)stageDisplaySets__sub

    Get Stage Display Layouts

    RELATED COMMAND: stageDisplaySets (publish)

    object
  • #58clearAll (publish)clearAll__pub

    Clear All

    NO RESPONSE

    object
  • #59clearText (publish)clearText__pub

    Clear Slide

    NO RESPONSE

    object
  • #60clearProps (publish)clearProps__pub

    Clear Props

    NO RESPONSE

    object
  • #61clearAudio (publish)clearAudio__pub

    Clear Audio

    NO RESPONSE

    object
  • #62clearVideo (publish)clearVideo__pub

    Clear Video

    NO RESPONSE

    object
  • #63clearTelestrator (publish)clearTelestrator__pub

    Clear Telestrator

    NO RESPONSE

    object
  • #64clearToLogo (publish)clearToLogo__pub

    Clear To Logo

    NO RESPONSE

    object
  • #65ath (publish)ath__pub

    StageDisplayAuthentication

    RELATED RESPONSE: ath (subscribe)

    object
  • #66ath (subscribe)ath__sub

    StageDisplayAuthentication

    RELATED COMMAND: ath (publish)

    object
  • #67asl (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
  • #68asl (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
  • #69psl (publish)psl__pub

    Request Current Stage Display Layout

    RELATED RESPONSE: psl (subscribe)

    object
  • #70psl (subscribe)psl__sub

    Request Current Stage Display Layout

    RELATED COMMAND: psl (publish)

    object
  • #71fv (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
  • #72fv (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
  • #73sl (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
  • #74sys (subscribe)sys__sub

    On New System Time

    THIS IS A SUBSCRIBE-ONLY MESSAGE

    object
  • #75vid (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
  • #76cc (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
  • #77tmr (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)

  • color
    string
    uid: color

    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"
  • itemLocation
    string
    uid: itemLocation

    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.

      Examples values:
    • "\/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
    • real times are formatted as "H:MM:SS" (no padding on the leading H)
    • negative times are possible with a leading -.
    • empty times are "--:--:--"
  • clockType
    integer
    uid: clockType

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

      Allowed values:
    • 0
    • 1
    • 2
  • object
    uid: clockDetail
  • array<any>
    uid: clockQuickInfo
  • object
    uid: clockStartStopMessage
  • 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"}
  • 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}}

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