{"id":32488,"date":"2023-03-08T16:32:47","date_gmt":"2023-03-08T15:32:47","guid":{"rendered":"https:\/\/mimolive.com\/?post_type=user-manual&#038;p=32488"},"modified":"2026-04-14T07:27:22","modified_gmt":"2026-04-14T05:27:22","slug":"%d0%ba%d1%96%d0%bd%d1%86%d0%b5%d0%b2%d1%96-%d1%82%d0%be%d1%87%d0%ba%d0%b8","status":"publish","type":"user-manual","link":"https:\/\/mimolive.com\/uk\/user-manual\/remote-control-automation\/http-api\/endpoints\/","title":{"rendered":"\u041a\u0456\u043d\u0446\u0435\u0432\u0456 \u0442\u043e\u0447\u043a\u0438"},"content":{"rendered":"<section class=\"boinx_exclamation\">\n    <div class=\"main_div_exclamation\">\n        <div class=\"left_div_icon_exclamation\">\n                <i class=\"icon_exclamation\">&#10071;<\/i>\n        <\/div>\n\n        <div class=\"right_div_text_exclamation\">\n                <div><p class=\"text_exclamation_headline\">Using Claude, Codex, Github Copilot or other coding AI?<\/p><\/div>\n                <div><p class=\"text_exclamation\">Check out the <a href=\"https:\/\/github.com\/boinx\/mimoLive-API-Reference\" target=\"_blank\" rel=\"noopener\">mimoLive API Reference<\/a>. Drop it into your favorite AI coding agent and instantly use the mimoLive API correctly.<\/p><\/div>\n        <\/div>    \n    <\/div>\n<\/section>\n\n\t\t<style>.boinx_exclamation {\n    margin:30px 0;\n    padding:10px;\n    background-color:rgb(242,222,222);\n    border-radius: 8px;\n}\n.icon_exclamation {\n    display:block;\n    padding:5px;\n    font-size:80px;\n    color:rgb(184,74,72);\n    line-height:60px;\n}\n.text_exclamation {\n    color:rgb(184,74,72);\n}\n\n.text_exclamation_headline{\n    font-weight:bold;\n    color:rgb(184,74,72);\n}\n\n\n.main_div_exclamation\n{\n    display:flex !IMPORTANT;\n    flex-wrap: wrap;\n    flex-direction: row;\n    justify-content : flex-start;\n    align-items : flex-start\n    align-content : flex-start;\n    \n}\n\n.left_div_icon_exclamation{\n    display:flex !IMPORTANT;\n    width:80px;\n    padding:10px;\n    margin:20px 20px 20px 0;\n    height:40px;\n}\n.right_div_text_exclamation{\n    display:flex !IMPORTANT;\n    flex-direction: column;\n    flex-grow: 1;\n    width:200px;\n    padding:10px;\n    margin:0;\n}<\/style>\n\t\t\n\n\n<h2 class=\"wp-block-heading\">General<\/h2>\n\n\n\n<p>The <span class=\"caps\">API<\/span>, when enabled, is available at \u201chttp:\/\/localhost:8989\/api\/v1\u201d. This is the base <span class=\"caps\">URL<\/span> that must be prepended to every method <span class=\"caps\">URL<\/span> listed below.<\/p>\n\n\n\n<p>If a resource was introduced after the initial launch of the <span class=\"caps\">HTTP<\/span> <span class=\"caps\">API<\/span>, the method is marked with an <strong>Available since<\/strong> information.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Redirects to the list of open documents at \u201c\/documents\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/devices<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d<br>Returns a list of currently available <strong>video devices<\/strong> on the host system. Each entry contains an identifier and human-readable name. Useful for mapping capture devices to Sources.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/devices\/(DeviceID)<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d<br>Returns details for the device specified by \u201c(DeviceID)\u201d, including its name and properties.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documents<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Documents<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Results in a list of open documents. See the documents data type on what information the returned objects contain.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, <strong>\u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><\/strong><br>GET returns a single document specified by the \u201c(DocumentID)\u201d. In the included section of the response all \u201clayer\u201d objects used by this document and all \u201csource\u201d objects contained in this document will be returned as well (sideloading). See the documents data type for more information on the data returned.<\/p>\n\n\n\n<p>PUT updates document-level properties such as the program output master volume and show metadata (title, author, resolution, frame rate, sample rate, and more). Send only the fields you want to change.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/programOut<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>The program output that is currently produced by the document specified by the \u201c(DocumentID)\u201d.<br>Takes the same parameters as source previews.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Document Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/setLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Starts a show\/document and triggers all asociated events. Calling this on an already running document will not result in an error. The updated document object will be returned.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/setOff<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Stops a show\/document. Calling this on an already stopped show will not result in an error. The updated document object will be returned.<\/p>\n\n\n\n<p><i>*<\/i>Because a document can decide to keep running after you call this method the returned layer object might be in state \u201cshutdown\u201d instead of \u201coff\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/toggleLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Toggles a show\/document between live and off.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Layers<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Layers<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>POST \/documents\/(DocumentID)\/layers<\/strong><\/h4>\n\n\n\n<p>Creates a new layer from a layer template and inserts it into the document&#8217;s layer stack. Specify the template via its layer-identifier, and optionally set the position in the stack, a name, and initial input values. Returns the newly created layer object.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \"http:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/layers\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"layer-identifier\": \"com.boinx.mimoLive.layer.lowerthird\",\n    \"index\": 4,\n    \"name\": \"My Lower Third\"\n  }'\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Layers<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">GET \/documents\/(DocumentID)\/layers<\/h4>\n\n\n\n<p>Returns a list of layers for the document specified by \u201c(DocumentID)\u201d. For information on the objects returned see the layers data type.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><br>Returns a single layer specified by the \u201c(LayerID)\u201d in the document specified by \u201c(DocumentID)\u201d. In the \u201cincluded\u201d section of the response all \u201cvariant\u201d objects related to this layer will be returned as well (sideloading). See the layers data type for more information on the data returned. Please keep in mind that the \u201cinput-values\u201d from the layer endpoint reflect the \u201cinput-values\u201d of the associated \u201cliveVariant\u201d variant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying a Layer<\/h3>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><br>To set the name of the layer, audio volume or input values perform a \u201c<span class=\"caps\">PUT<\/span>\u201d request with a <span class=\"caps\">JSON<\/span> encoded object to the layer endpoint. Alternatively you can use a \u201c<span class=\"caps\">GET<\/span>\u201d request by adding the <span class=\"caps\">JSON<\/span> data to the <span class=\"caps\">URL<\/span> with the key \u201c?update=\u201d. In this case the <span class=\"caps\">JSON<\/span> data must be <span class=\"caps\">URL<\/span> encoded.<\/p>\n\n\n\n<p>Values you don\u2019t want to change should be simply excluded from the <span class=\"caps\">JSON<\/span> data. Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"name\": \"New name of the Layer\",\n    \"volume\": 0.5,\n    \"input-values\": { \n        \"tvGroup_Content__Subtitle\": \"This is a Test\"\n    }\n}<\/code><\/pre>\n\n\n\n<p>After updating the values mimoLive will respond with an updated layer object. Keep in mind that not all values can be applied instantly or might only have an effect after another render cycle.<\/p>\n\n\n\n<p>Note: The \u201cvolume\u201d attribute has been added in mimoLive 5.6 and is ignored in earlier versions or if the layer has no volume control. Value will be clipped to (0, 1), where 0 is silent and 1 is full volume.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deleting a Layer<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">DELETE \/documents\/(DocumentID)\/layers\/(LayerID)<\/h4>\n\n\n\n<p>Removes the specified layer from the document. Returns 204 No Content on success. Deletion will be refused if the layer is a required demo layer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Layer Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/setLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Activates a layer, when this is called directly on the layer, the last selected layer variant will be used. Calling this on an already active layer will not result in an error. The updated layer object will be returned.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/setOff<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Deactivates a layer. Calling this on an already deactivated layer will not result in an error. The updated layer object will be returned.<\/p>\n\n\n\n<p><i>*<\/i>Because a layer can decide to do some animations after you call this method the returned layer object might be in state \u201cshutdown\u201d instead of \u201coff\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/toggleLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Toggles a layer between \u201clive\u201d and \u201coff\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/signals\/(SignalID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Triggers the signal specified by \u201c(SignalID)\u201d in the current \u201clive-variant\u201d or if the layer is not live in the \u201cactive-variant\u201d. You can get the \u201c(SignalID)\u201d from the \u201cinput-values\u201d field of the layer (identified by the key suffix \u201c_TypeSignal\u201d).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/cycleThroughVariants<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br><strong>Available since: mimoLive 5.6<\/strong><br>Selects the next variant after the currently active variant of layer \u201c(LayerID)\u201d to be the layer\u2019s new active variant. This can be used to select the variant (e.g. of a Lower Third Layer) that should go live <b>next<\/b>.<br>Calling this endpoint does not disturb your show if the layer is currently live. The effect only shows when the layer is set live afterwards.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/cycleThroughVariantsBackwards<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Selects the <strong>previous<\/strong> variant (the inverse of <code>\/cycleThroughVariants<\/code>) without affecting the current live state. Effect becomes visible when the layer or selected variant is set live.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/setLiveFirstVariant<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Activates the <strong>first<\/strong> variant of the layer and sets the layer live.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/setLiveLastVariant<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Activates the <strong>last<\/strong> variant of the layer and sets the layer live.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/inputs\/(SourceInputKey)\/mediacontrol\/(MediaControlCommand)<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Sends a media control command to the media bound to input \u201c(SourceInputKey)\u201d of the specified layer. Please note that the source of the input is reporting which commands its supports; see \/documents\/(DocumentID)\/sources\/(SourceID).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Media Control Command<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>play<\/td><td>Starts media playback.<\/td><\/tr><tr><td>pause<\/td><td>Pauses the current playback without resetting the position.<\/td><\/tr><tr><td>stop<\/td><td>Stops playback and resets the media position to the beginning.<\/td><\/tr><tr><td>reverse<\/td><td>Plays media in reverse direction.<\/td><\/tr><tr><td>rewind<\/td><td>Moves playback backward, typically at a faster-than-normal rate.<\/td><\/tr><tr><td>fastforward<\/td><td>Moves playback forward quickly.<\/td><\/tr><tr><td>skiptostart<\/td><td>Jumps to the beginning of the media.<\/td><\/tr><tr><td>skiptoend<\/td><td>Jumps to the end of the media.<\/td><\/tr><tr><td>skipback<\/td><td>Skips backward by a 10 seconds interval.<\/td><\/tr><tr><td>skipahead<\/td><td>Skips forward by a 10 seconds interval.<\/td><\/tr><tr><td>record<\/td><td>Starts recording media input.<\/td><\/tr><tr><td>shuffle<\/td><td>Toggles random playback order for media items.<\/td><\/tr><tr><td>repeat<\/td><td>Repeat current media.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Variants<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Variants<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Returns a list of variants for the layer specified by \u201c(LayerID)\u201d and the document specified by \u201c(DocumentID)\u201d. For information on the objects returned see the \u201cvariants\u201d data type.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants\/(VariantID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><br>Returns a single variant specified by the \u201c(VariantID)\u201d and the \u201c(LayerID)\u201d in the document specified by \u201c(DocumentID)\u201d. See the \u201cvariants\u201d data type for more information on the data returned.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying a Variant<\/h3>\n\n\n\n<p>To set the name of the variant or input values perform a \u201c<span class=\"caps\">PUT<\/span>\u201d request with a <span class=\"caps\">JSON<\/span> encoded object to the variant endpoint. Values you don\u2019t want to change should be simply excluded from the <span class=\"caps\">JSON<\/span> you \u201c<span class=\"caps\">PUT<\/span>\u201d. Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"name\": \"New name of the Variant\",\n    \"input-values\": { \n        \"tvGroup_Content__Subtitle\": \"This is a Test\"\n    }\n}<\/code><\/pre>\n\n\n\n<p>After updating the values mimoLive will respond with an updated variant object. Keep in mind that not all values can be applied instantly or might only have an effect after another render cycle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Variant Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants\/(VariantID)\/setLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Activates a variant, if the owning layer is not live it will be switched to live too. Calling this on an already active variant will not result in an error. The updated variant object will be returned.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants\/(VariantID)\/setOff<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Deactivates a variant. This will also cause the owning layer to be turned off.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants\/(VariantID)\/toggleLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Toggles a variant between live and off.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layers\/(LayerID)\/variants\/(VariantID)\/signals\/(SignalID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Triggers the signal specified by \u201c(SignalID)\u201d on the variant. You can get the \u201c(SignalID)\u201d from the \u201cinput-values\u201d field of the layer (identified by the key suffix \u201c_TypeSignal\u201d).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Sources<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">POST \/documents\/(DocumentID)\/sources<\/h4>\n\n\n\n<p>Creates a new source in the document from a given source type. Specify the type via source-type (e.g. com.boinx.mimoLive.sources.deviceVideoSource), optionally provide a display name and all the parameters that can be updated via the HTTP API. Returns the newly created source object.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \"http:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/sources\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"source-type\": \"com.boinx.mimoLive.sources.deviceVideoSource\",\n    \"name\": \"Main Camera\"\n  }'\n\nValid source type identifiers:<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Source Type Identifiers<\/strong><\/td><td><strong>Source<\/strong><\/td><\/tr><tr><td>com.boinx.mimoLive.sources.webBrowserSource<\/td><td>Web Browser<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.screenCaptureSource<\/td><td>Screen Capture<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.ffmpegSource<\/td><td>NDI \/ Video Capture<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.webRTCSource<\/td><td>mimoCall<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.windowCaptureSource<\/td><td>Window Capture<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.deviceAudioSource<\/td><td>Audio Device<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.deviceVideoSource<\/td><td>Combining Video and Audio Device (Camera)<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.lastRecordingSource<\/td><td>Last Recording<\/td><\/tr><tr><td>com.boinx.mimoLive.sources.zoomparticipant<\/td><td>Zoom Participant<\/td><\/tr><tr><td>and many more&#8230;<\/td><td><\/td><\/tr><tr><td><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Sources<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Returns a list of sources for the document specified by \u201c(DocumentID)\u201d. For information on the objects returned see the \u201csources layer\u201d data type.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><br>Returns a single source specified by the \u201c(SourceID)\u201d in the document specified by \u201c(DocumentID)\u201d. In the included section of the response all \u201cfilter\u201d objects related to this source will be returned as well (sideloading). See the \u201csources\u201d data type for more information on the data returned.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/preview<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Returns a graphical preview of the source specified by the \u201c(SourceID)\u201d in the document specified by \u201c(DocumentID)\u201d. The endpoint supports the following parameters:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Parameter<\/th><th>Default<\/th><th>Description<\/th><\/tr><tr><td>format<\/td><td>png<\/td><td>The format in which the preview is returned. Allowed values: png, jpeg, mjpeg, mpng<\/td><\/tr><tr><td>fps<\/td><td>10<\/td><td>The framerate for motion image previews. Only applicable to mjpeg and mpng formats. Please note that 1 fps roughly equals to 1% of <span class=\"caps\">CPU<\/span> utilization.<\/td><\/tr><tr><td>width<\/td><td>(document width)<\/td><td>The maximum width of the preview. The image will be scaled down to fit into the given width.<\/td><\/tr><tr><td>height<\/td><td>(document width)<\/td><td>The maximum height of the preview. The image will be scaled down to fit into the given height.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/mediacontrol\/(MediaControlCommand)<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Controls playback for media-capable sources (e.g., Media File\/Playlist). Supported commands depend on the source type. See \/documents\/(DocumentID)\/layers\/(LayerID)\/inputs\/(SourceInputKey)\/mediacontrol\/(MediaControlCommand) .<\/p>\n\n\n\n<h4 class=\"\u201dwp-block-heading\u201d wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/openwebbrowser<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d<br>In case the source is a Web Browser Capture source this action will open the corresponding web browser window.<\/p>\n\n\n\n<p><em>Note: This endpoint is kept for backwards compatibility. New integrations should use the generic actions endpoint instead: <code>\/documents\/(DocumentID)\/sources\/(SourceID)\/actions\/openwebbrowser<\/code><\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying a Source<\/h3>\n\n\n\n<p>To set the name of the source or input values (only if the source has any, e. g. it is a Composition Source) perform a \u201c<span class=\"caps\">PUT<\/span>\u201d request with a <span class=\"caps\">JSON<\/span> encoded object to the source endpoint. Values you don\u2019t want to change should be simply excluded from the <span class=\"caps\">JSON<\/span> you \u201c<span class=\"caps\">PUT<\/span>\u201d. Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"name\": \"New name of the Source\",\n    \"gain\": 1.25,\n    \"input-values\": { \n        \"tvGroup_Content__Subtitle\": \"This is a Test\"\n    }\n}<\/code><\/pre>\n\n\n\n<p><i>*<\/i>The \u201cgain\u201d attribute has been added in mimoLive 5.6 and is ignored in earlier versions or if the source has no gain control. Value will be clipped to (0, 2), where 0 is silent, 1 is default and 2 approximately doubles the volume.<\/p>\n\n\n\n<h3 class=\"\u201dwp-block-heading\u201d wp-block-heading\">mimoCall Source Properties<\/h3>\n\n\n\n<p><strong>Available since:<\/strong> mimoLive 6.18<\/p>\n\n\n\n<p>mimoCall sources (<code>com.boinx.mimoLive.sources.webRTCSource<\/code>) expose additional attributes that can be read via GET and modified via PUT\/PATCH:<\/p>\n\n\n\n<figure class=\u201dwp-block-table\u201d><table class=\u201dhas-fixed-layout\u201d><thead><tr><th>Attribute<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>video-codec<\/code><\/td><td>string<\/td><td>Video codec preference: <code>\u201dauto\u201d<\/code>, <code>\u201dh264\u201d<\/code>, or <code>\u201dvp9\u201d<\/code>.<\/td><\/tr><tr><td><code>prefers-high-quality-audio<\/code><\/td><td>boolean<\/td><td>Enable stereo &amp; reserve bandwidth for high quality audio.<\/td><\/tr><tr><td><code>partner-sees<\/code><\/td><td>object<\/td><td>What video the mimoCall partner sees (see below).<\/td><\/tr><tr><td><code>partner-hears<\/code><\/td><td>object<\/td><td>What audio the mimoCall partner hears (see below).<\/td><\/tr><tr><td><code>available-actions<\/code><\/td><td>array<\/td><td>Actions that can be triggered via the actions endpoint (e.g. <code>[\u201creconnect\u201d]<\/code>).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><code>partner-sees<\/code> object formats:<\/strong><\/p>\n\n\n\n<figure class=\u201dwp-block-table\u201d><table class=\u201dhas-fixed-layout\u201d><thead><tr><th>Type<\/th><th>JSON<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Program Output<\/td><td><code>{\u201ctype\u201d: \u201cprogram-output\u201d}<\/code><\/td><td>Partner sees the program output.<\/td><\/tr><tr><td>Video Source<\/td><td><code>{\u201ctype\u201d: \u201csource\u201d, \u201csource-id\u201d: \u201c(SourceID)\u201d}<\/code><\/td><td>Partner sees a specific video source.<\/td><\/tr><tr><td>Above Layer<\/td><td><code>{\u201ctype\u201d: \u201cabove-layer\u201d, \u201clayer-index\u201d: 3}<\/code><\/td><td>Partner sees the layer stack above a given index.<\/td><\/tr><tr><td>None<\/td><td><code>{\u201ctype\u201d: \u201cnone\u201d}<\/code><\/td><td>No video sent to partner.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><code>partner-hears<\/code> object formats:<\/strong><\/p>\n\n\n\n<figure class=\u201dwp-block-table\u201d><table class=\u201dhas-fixed-layout\u201d><thead><tr><th>Type<\/th><th>JSON<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Mix-Minus<\/td><td><code>{\u201ctype\u201d: \u201cmix-minus\u201d}<\/code><\/td><td>Program mix minus the partner&#8217;s own audio (default).<\/td><\/tr><tr><td>Master Mix<\/td><td><code>{\u201ctype\u201d: \u201cmaster-mix\u201d}<\/code><\/td><td>The full master audio mix.<\/td><\/tr><tr><td>Custom Mix<\/td><td><code>{\u201ctype\u201d: \u201ccustom-mix\u201d, \u201cmix-name\u201d: \u201cAudio Mix 2\u201d}<\/code><\/td><td>A named custom audio mix.<\/td><\/tr><tr><td>Solo Source<\/td><td><code>{\u201ctype\u201d: \u201csolo-source\u201d, \u201csource-id\u201d: \u201c(SourceID)\u201d}<\/code><\/td><td>Audio from a single source only.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Example \u2014 change codec and what the partner sees:<\/p>\n\n\n\n<pre class=\u201dwp-block-code\u201d><code>curl -X PATCH \u201chttp:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/sources\/(SourceID)\u201d \\\n  -H \u201cContent-Type: application\/json\u201d \\\n  -d '{\u201cvideo-codec\u201d: \u201ch264\u201d, \u201cpartner-sees\u201d: {\u201ctype\u201d: \u201cprogram-output\u201d}}'<\/code><\/pre>\n\n\n\n<h3 class=\"\u201dwp-block-heading\u201d wp-block-heading\">Deleting a Source<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">DELETE \/documents\/(DocumentID)\/sources\/(SourceID)<\/h4>\n\n\n\n<p>Removes the specified source from the document. Returns 204 No Content on success.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Source Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/signals\/(SignalID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\u201dcaps\u201d>GET<\/span>\u201d \u201c<span class=\u201dcaps\u201d>POST<\/span>\u201d<\/strong><br>Triggers the signal specified by \u201c(SignalID)\u201d on the source (only if the source has \u201cinput-values\u201d, e. g. it is a Composition Source). You can get the \u201c(SignalID)\u201d from the \u201cinput-values\u201d field of the source (identified by the key suffix \u201c_TypeSignal\u201d).<\/p>\n\n\n\n<h4 class=\"\u201dwp-block-heading\u201d wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/actions\/(ActionName)<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d<br><strong>Available since:<\/strong> mimoLive 6.18<\/p>\n\n\n\n<p>Triggers a named action on the source. Available actions depend on the source type and are listed in the <code>available-actions<\/code> attribute of each source object. Returns the updated source object on success, or \u201c409 Conflict\u201d if the action is not supported or fails.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\u201dwp-block-code\u201d><code>curl \u201chttp:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/sources\/(SourceID)\/actions\/reconnect\u201d<\/code><\/pre>\n\n\n\n<p><strong>Available actions by source type:<\/strong><\/p>\n\n\n\n<figure class=\u201dwp-block-table\u201d><table class=\u201dhas-fixed-layout\u201d><thead><tr><th>Source Type<\/th><th>Action Name<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>mimoCall (<code>com.boinx.mimoLive.sources.webRTCSource<\/code>)<\/td><td><code>reconnect<\/code><\/td><td>Disconnects and reconnects to the mimoCall partner.<\/td><\/tr><tr><td>Web Browser (<code>com.boinx.mimoLive.sources.webBrowserSource<\/code>)<\/td><td><code>openwebbrowser<\/code><\/td><td>Opens the corresponding web browser window.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"\u201dwp-block-heading\u201d wp-block-heading\">Filters<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Filters<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/filters<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Returns a list of filters for the source specified by \u201c(SourceID)\u201d and the document specified by \u201c(DocumentID)\u201d. For information on the objects returned see the \u201cfilters\u201d data type.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/filters\/(FilterID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d<\/strong><br>Returns a single filter specified by the \u201c(FilterID)\u201d and the \u201c(SourceID)\u201d in the document specified by \u201c(DocumentID)\u201d. See the \u201cfilters\u201d data type for more information on the data returned.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying a Filter<\/h3>\n\n\n\n<p>To set the input values perform a \u201c<span class=\"caps\">PUT<\/span>\u201d request with a <span class=\"caps\">JSON<\/span> encoded object to the filter endpoint. Values you don\u2019t want to change should be simply excluded from the <span class=\"caps\">JSON<\/span> you \u201c<span class=\"caps\">PUT<\/span>\u201d. Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"input-values\": { \n        \"tvGroup_Content__Subtitle\": \"This is a Test\"\n    }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/sources\/(SourceID)\/filters\/(FilterID)\/signals\/(SignalID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Triggers the signal specified by \u201c(SignalID)\u201d on the filter. You can get the \u201c(SignalID)\u201d from the \u201cinput-values\u201d field of the filter (identified by the key suffix \u201c_TypeSignal\u201d).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Output Destinations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Output Destinations<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">POST \/documents\/(DocumentID)\/output-destinations<\/h4>\n\n\n\n<p>Creates a new output destination in the document. Specify the type via output-destination-type and optionally set the position with index and the parameter that can be updated via the HTTP API. Returns the newly created output destination object.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\"><code>Output Destination Identifier<\/code><\/th><th class=\"has-text-align-left\" data-align=\"left\">Output Destination<\/th><\/tr><\/thead><tbody><tr><td><code>com.boinx.mimoLive.outputDestination.liveStreaming<\/code><\/td><td>Live Streaming (RTMP, etc.)<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.fileRecording<\/code><\/td><td>File Recording<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.blackmagicDesign<\/code><\/td><td>Playout (Blackmagic SDI\/HDMI)<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.ndi<\/code><\/td><td>NDI Output<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.fullscreen<\/code><\/td><td>Fullscreen Output<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.virtualCamera<\/code><\/td><td>Virtual Camera<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.mimoCall<\/code><\/td><td>mimoCall<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.audioMonitor<\/code><\/td><td>Audio Monitor<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.imageSequence<\/code><\/td><td>Image Writer<\/td><\/tr><tr><td><code>com.boinx.mimoLive.outputDestination.fileUploader<\/code><\/td><td>File Uploader<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \"http:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/output-destinations\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"output-destination-type\": \"com.boinx.mimoLive.outputDestination.fileRecording\",\n    \"index\": 0\n  }'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Output Destinations<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/output-destinations<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Lists all output destinations for the specified document.<br>For information on the objects returned see the \u201c\u201coutput-destinations\u201d data type\u201d:{TOPIC-<span class=\"caps\">LINK<\/span>+data-typesh1(}. section-output-destinations).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/output-destinations\/(OutputDestinationID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201cGET\u201d<\/strong><br>Returns the output destination specified by \u201c(OutputDestinationID)\u201d.<br>For information on the objects returned see the \u201c\u201coutput-destinations\u201d data type\u201d:{TOPIC-<span class=\"caps\">LINK<\/span>+data-typesh1(}. section-output-destinations).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying an Output Destination<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/output-destinations\/(OutputDestinationID)<\/h4>\n\n\n\n<p><strong>Supported methods: &#8220;PUT&#8221;, \u201c<span class=\"caps\">PATCH<\/span>\u201d<\/strong><br>Update selected properties of the output destination specified by \u201c(OutputDestinationID)\u201d.<br>Returns the updated output destination.<\/p>\n\n\n\n<p>The following properties are modifiable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201ctitle\u201d<\/li>\n\n\n\n<li>\u201cstarts-with-show\u201d<\/li>\n\n\n\n<li>\u201cstops-with-show\u201d<\/li>\n\n\n\n<li>Contents of the \u201csettings\u201d object (see the <a href=\"%7BTOPIC-LINK+data-typesh1%28%7D\" target=\"_blank\" rel=\"noreferrer noopener\">settings description<\/a>. section-individual-settings) for more information)<\/li>\n<\/ul>\n\n\n\n<p>Update description must be given in <a href=\"http:\/\/jsonapi.org\/format\/h1%28\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"caps\">JSON<\/span>:API update format<\/a> . crud-updating). Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"data\": {\n    \"type\": \"output-destinations\",\n    \"id\": \"4FF003EA-D071-43FD-845F-DCD4A25DFA00\",\n    \"attributes\": {\n      \"title\": \"Our Recording\",\n      \"starts-with-show\": true,\n      \"settings\": {\n        \"location\": \"~\/Movies\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Output Destination Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/output-destinations\/(OutputDestinationID)\/setLive<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Causes the output destination specified by \u201c(OutputDestinationID)\u201d to go live, if it is properly configured and the allowed to go live (e.g. based on the mimoLive licensing state).<br>If the output destination is able to go live, the output destination with its new \u201clive-state\u201d is returned, otherwise a \u201c409 Conflict\u201d error is returned.<\/p>\n\n\n\n<p><i>*<\/i>Because an output destination may need to perform some work before being live (e.g. contacting an external service to create a live stream), the returned output destination object may be in state \u201cstartup\u201d instead of \u201clive\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/output-destinations\/(OutputDestinationID)\/setOff<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Causes the output destination specified by \u201c(OutputDestinationID)\u201d to stop.<br>If the output destination is allowed to stop, the output destination is returned, otherwise a \u201c409 Conflict\u201d error is returned.<\/p>\n\n\n\n<p><i>*<\/i>Because an output destination may need to perform some work before stopping operations, the returned output destination may be in state \u201cshutdown\u201d instead of \u201cpreview\u201d (which would be the default for a well-configured output destination).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Layer Sets<\/h2>\n\n\n\n<p>Layer sets were introduced in mimoLive 5.0 and allow setting the live state of multiple layers at once, enabling the creation of lightweight <strong>scenes<\/strong> for different situations in a show.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Layer Sets<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">POST \/documents\/(DocumentID)\/layer-sets<\/h4>\n\n\n\n<p>Creates a new layer set in the document. A layer set is a saved collection of actions that are applied to one or more layers when the layer set is recalled. For each layer you specify an action: &#8220;live&#8221; (go live, optionally with a specific variant), &#8220;off&#8221; (graceful switch off), or &#8220;force-off&#8221; (immediate switch off). You can also set recall-on-show-start and recall-on-show-end to automatically recall the layer set when the show starts or ends. Returns the newly created layer set object.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \"http:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/layer-sets\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"data\": {\n      \"attributes\": {\n        \"name\": \"Interview Scene\",\n        \"recall-on-show-start\": false,\n        \"recall-on-show-end\": false,\n        \"layers\": &#91;\n          {\n            \"layer-id\": \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\",\n            \"action\": \"live\",\n            \"variant\": \"edit-variant\"\n          },\n          {\n            \"layer-id\": \"YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY\",\n            \"action\": \"off\"\n          },\n          {\n            \"layer-id\": \"ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ\",\n            \"action\": \"force-off\"\n          }\n        ]\n      }\n    }\n  }'\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Querying Layer Sets<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layer-sets<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d<\/strong><br>Lists all layer sets for the specified document.<br>For information on the objects returned see the \u201clayer-sets\u201d data type\u201d.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layer-sets\/(LayerSetID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201cGET\u201d<\/strong><br>Returns the layer set specified by \u201c(LayerSetID)\u201d.<br>For information on the objects returned see the \u201c\u201clayer-sets\u201d data type\u201d:{TOPIC-<span class=\"caps\">LINK<\/span>+data-typesh1(}. section-layer-sets).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modifying Layer Sets<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layer-sets\/(LayerSetID)<\/h4>\n\n\n\n<p><strong>Supported methods: &#8220;PUT&#8221;, \u201c<span class=\"caps\">PATCH<\/span>\u201d<\/strong><\/p>\n\n\n\n<p>Updates an existing layer set. You can rename it, change its auto-recall behavior, or replace its layer action entries. Only include the attributes you want to change. Returns the updated layer set object.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X PUT \"http:\/\/localhost:8989\/api\/v1\/documents\/(DocumentID)\/layer-sets\/(LayerSetID)\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"data\": {\n      \"attributes\": {\n        \"name\": \"Wide Shot Scene\",\n        \"layers\": &#91;\n          {\n            \"layer-id\": \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\",\n            \"action\": \"live\",\n            \"variant\": \"VVVVVVVV-VVVV-VVVV-VVVV-VVVVVVVVVVVV\"\n          },\n          {\n            \"layer-id\": \"YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY\",\n            \"action\": \"force-off\"\n          }\n        ]\n      }\n    }\n  }'\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deleting a Layer Set<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">DELETE \/documents\/(DocumentID)\/layer-sets\/(LayerSetID)<\/h4>\n\n\n\n<p>Permanently removes the specified layer set from the document. Returns 204 No Content on success.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Layer Set Actions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/layer-sets\/(LayerSetID)\/recall<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d \u201c<span class=\"caps\">POST<\/span>\u201d<\/strong><br>Recalls (activates) the layer set specified by \u201c(LayerSetID)\u201d, causing all layers to assume the live state recorded in the layer set.<br>Returns the layer set after recalling, i.e. with \u201cactive == true\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Data Stores<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">\/documents\/(DocumentID)\/datastores\/(StoreID)<\/h4>\n\n\n\n<p><strong>Supported methods: \u201c<span class=\"caps\">GET<\/span>\u201d, \u201c<span class=\"caps\">PUT<\/span>\u201d, \u201c<span class=\"caps\">DELETE<\/span>\u201d<\/strong><br>mimoLive offers the ability to store data you provide inside the document file, for example to restore a state at a later time. You are free to choose a \u201cStoreID\u201d yourself, but be aware that there is no way to list all data stores associated with a document (however, you may create some kind of <strong>index<\/strong> store that keeps track of your other, dynamically named stores).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Create\/Update a data store<\/h4>\n\n\n\n<p>To create or update a data store send a \u201c<span class=\"caps\">PUT<\/span>\u201d request to a \u201cStoreID\u201d of your choice with the associated data in the body of your request. If the operation was successfull mimoLive will respond with a \u201c200 OK\u201d status.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Read contents of a data store<\/h4>\n\n\n\n<p>To read a previously stored data store simple request it via \u201c<span class=\"caps\">GET<\/span>\u201d. The data will be returned exactly as you provided it in the \u201c<span class=\"caps\">PUT<\/span>\u201d request to store it. If no data store with that ID was found for this document mimoLive will return a \u201c404 Not Found\u201d error.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Delete an existing data store<\/h4>\n\n\n\n<p>To delete a data store when you no longer need it simply issue an \u201c<span class=\"caps\">DELETE<\/span>\u201d request for the \u201cStoreID\u201d you want to delete. In the event that the data store was not there in the first place mimoLive will respond with a \u201c404 Not Found\u201d error.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zoom Meetings<\/h2>\n\n\n\n<p>These endpoints control mimoLive\u2019s built-in Zoom client integration.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/zoom\/join<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Joins a Zoom meeting. Typical parameters (send as JSON body for POST or <code>?param=value<\/code> for GET):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Value Type<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td><code>meetingid<\/code><\/td><td><em>String<\/em><\/td><td>Zoom meeting number (use &#8220;Demo-Meeting-ID&#8221; if you want to join the mimoLive demo meeting)<\/td><\/tr><tr><td><code>passcode<\/code><\/td><td><em>String, optional<\/em><\/td><td>Meeting passcode<\/td><\/tr><tr><td><code>webinartoken<\/code><\/td><td><em>String, optional<\/em><\/td><td>If you want to join a webinar you need to provide the webinar token<\/td><\/tr><tr><td><code>displayname<\/code><\/td><td><em><em>String<\/em>, optional<\/em><\/td><td>Name to appear in meeting<\/td><\/tr><tr><td><code>zoomaccountname<\/code><\/td><td><em><em><em>String<\/em><\/em><\/em><\/td><td>Name of the Zoom account as displayed in mimoLive Zoom account settings<\/td><\/tr><tr><td>virtualcamera<\/td><td>String, optional<\/td><td>When set to &#8220;true&#8221; mimoLive will send the program out as video feed to Zoom<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Returns a status object indicating connection progress or success.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/zoom\/leave<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Leaves the currently joined meeting. Returns a status object.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/zoom\/end<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Attempts to end\/terminate the current Zoom meeting (host-only action). Returns success if the meeting was ended or a conflict if the client lacks permission.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\/zoom\/participants<\/h4>\n\n\n\n<p><strong>Supported methods:<\/strong> \u201cGET\u201d \u201cPOST\u201d<br>Returns the current participant list for the joined meeting (names, IDs and basic states).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Value Key<\/strong><\/td><td><strong>Value Type<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>name<\/td><td><em>String<\/em><\/td><td>Name of the Zoom participant<\/td><\/tr><tr><td>id<\/td><td><em>Integer<\/em><\/td><td>User ID of the Zoom participant<\/td><\/tr><tr><td>userRole<\/td><td><em>String<\/em><\/td><td><\/td><\/tr><tr><td>isHost<\/td><td><em>Bool<\/em><\/td><td>true if the user is host of the meeting<\/td><\/tr><tr><td>isCoHost<\/td><td><em>Bool<\/em><\/td><td>true if the user is co host of the meeting<\/td><\/tr><tr><td>isVideoOn<\/td><td><em>Bool<\/em><\/td><td>true if the user has video enabled<\/td><\/tr><tr><td>isAudioOn<\/td><td><em>Bool<\/em><\/td><td>true if the user has audio enabled<\/td><\/tr><tr><td>isTalking<\/td><td><em>Bool<\/em><\/td><td>true if the user is currently talking<\/td><\/tr><tr><td>isRaisingHand<\/td><td><em>Bool<\/em><\/td><td>true if the user is currently rasing their hand<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\/zoom\/meetingaction<\/h4>\n\n\n\n<p>Executes a meeting-scoped action. Provide <code>action<\/code> and optional arguments via JSON body or query string.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Value Type<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>command<\/td><td><em>String<\/em><\/td><td>A command from the list below<\/td><\/tr><tr><td>userid<\/td><td><em>String, optional<\/em><\/td><td>Some commands requires a user ID<\/td><\/tr><tr><td>screentype<\/td><td><em>String, optional<\/em><\/td><td>Some commands requires a screentype<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Command<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>requestRecordingPermission<\/td><td>Send a request for local recording permission.<\/td><\/tr><tr><td>muteVideo<\/td><td>Mute the video of a user. (requires userid parameter)<\/td><\/tr><tr><td>unmuteVideo<\/td><td>Unmute the video of a user. (requires userid parameter)<\/td><\/tr><tr><td>muteAudio<\/td><td>Mute the audio of a user. (requires userid parameter)<\/td><\/tr><tr><td>unmuteAudio<\/td><td>Unmute the audio of a user. (requires userid parameter)<\/td><\/tr><tr><td>enableUnmuteBySelf<\/td><td>Enable the feature that users can unmute themselves when muted, available only for the host\/co-host.<\/td><\/tr><tr><td>disableUnmuteBySelf<\/td><td>Disable the feature that users cannot unmute themselves when muted, available only for the host\/co-host.<\/td><\/tr><tr><td>muteAll<\/td><td>Mute all participants in the meeting, available only for the host\/co-host.<\/td><\/tr><tr><td>unmuteAll<\/td><td>Unmute all participants in the meeting, available only for the host\/co-host.<\/td><\/tr><tr><td>lockMeeting<\/td><td>Lock the meeting, available only for the host\/co-host. Once locked, new participants can no longer join.<\/td><\/tr><tr><td>unlockMeeting<\/td><td>Unlock the meeting, available only for the host\/co-host.<\/td><\/tr><tr><td>lowerAllHands<\/td><td>Put all participants&#8217; hands down, available only for the host\/co-host.<\/td><\/tr><tr><td>shareFitWindowMode<\/td><td>Adjust the display size to fit the window.<\/td><\/tr><tr><td>pauseShare<\/td><td>Pause sharing.<\/td><\/tr><tr><td>resumeShare<\/td><td>Resume sharing.<\/td><\/tr><tr><td>joinVoip<\/td><td>Join meeting by VoIP.<\/td><\/tr><tr><td>leaveVoip<\/td><td>Disconnect VoIP from meeting.<\/td><\/tr><tr><td>allowParticipantsToChat<\/td><td>Enable the feature that users can chat between each other.<\/td><\/tr><tr><td>disallowParticipantsToChat<\/td><td>Disable the feature that users can chat between each other.<\/td><\/tr><tr><td>allowParticipantsToShare<\/td><td>Enable the feature that users can share their screen.<\/td><\/tr><tr><td>disallowParticipantsToShare<\/td><td>Disable the feature that users can share their screen.<\/td><\/tr><tr><td>allowParticipantsToStartVideo<\/td><td>Enable the feature that users can start their video.<\/td><\/tr><tr><td>disallowParticipantsToStartVideo<\/td><td>Disable the feature that users can start their video.<\/td><\/tr><tr><td>allowParticipantsToShareWhiteBoard<\/td><td>Enable the feature that users can share a white board.<\/td><\/tr><tr><td>disallowParticipantsToShareWhiteBoard<\/td><td>Disable the feature that users can share a white board.<\/td><\/tr><tr><td>enableAutoAllowLocalRecordingRequest<\/td><td>Enable the feature that users request for recording will be automatically accepted.<\/td><\/tr><tr><td>disableAutoAllowLocalRecordingRequest<\/td><td>Disable the feature that users request for recording will be automatically accepted.<\/td><\/tr><tr><td>allowParticipantsToRename<\/td><td>Enable the feature that users can rename themselfs.<\/td><\/tr><tr><td>disallowParticipantsToRename<\/td><td>Disable the feature that users can rename themselfs.<\/td><\/tr><tr><td>showParticipantProfilePictures<\/td><td>Switch on the option to show participiants profile pictures.<\/td><\/tr><tr><td>hideParticipantProfilePictures<\/td><td>Switch off the option to show participiants profile pictures.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Example Usage<\/h2>\n\n\n\n<p>These endpoints of the mimoLive HTTP API can be utilized in many ways. Please refer to the <a href=\"https:\/\/mimolive.com\/user-manual\/customization\/http-api\/examples-of-api-usage\/\" data-type=\"user-manual\" data-id=\"32490\">Examples of API Usage<\/a> section to learn more.<\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>General The API, when enabled, is available at \u201chttp:\/\/localhost:8989\/api\/v1\u201d. This is the base URL that must be prepended to every method URL listed below. If a resource was introduced after the initial launch of the HTTP API, the method is marked with an Available since information. \/ Supported methods: \u201cGET\u201dRedirects to the list of open [&hellip;]<\/p>","protected":false},"author":3,"featured_media":0,"parent":32486,"menu_order":0,"template":"","meta":{"_acf_changed":false,"_angie_page":false,"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[258],"tags":[],"class_list":["post-32488","user-manual","type-user-manual","status-publish","hentry","category-manual"],"acf":[],"_links":{"self":[{"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/user-manual\/32488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/user-manual"}],"about":[{"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/types\/user-manual"}],"author":[{"embeddable":true,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":10,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/user-manual\/32488\/revisions"}],"predecessor-version":[{"id":43779,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/user-manual\/32488\/revisions\/43779"}],"up":[{"embeddable":true,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/user-manual\/32486"}],"wp:attachment":[{"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/media?parent=32488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/categories?post=32488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimolive.com\/uk\/wp-json\/wp\/v2\/tags?post=32488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}