mimoLive User Manual

The mimoLive™ User Manual Developer Hub

Welcome to the mimoLive™ User Manual developer hub. You'll find comprehensive guides and documentation to help you start working with mimoLive™ User Manual as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Examples of API usage

Controlling mimoLive with php

We have a good documented sample php script on github:
https://github.com/boinx/mimoLive-HTTP-Demo

Controlling mimoLive with CURL

To control mimoLive via HTTP you can use the bash command "curl". For the curl commands to work you need to find the ID of your document you want to manipulate:

Prerequisites

  • Open the document you want to manipulate in mimoLive.
  • Make sure the the document is in a finished state so that the API endpoints like Layers do not change anymore. Please be aware that if you remove a layer and add it again this layer will have a different Layer ID when talking to it via the API.
  • Enable the HTTP-Server in mimoLive Remote Control Preferences. Check the "Allow Remote Control Access" option:

Getting an API Endpoint

Befor mimoLive 5.5 it was hard to get the Document ID and e.g. a Layer ID with Terminal commands looking through long JSON data. Since mimoLive 5.5 its much easier:

First of all copy the mimoLive HTTP server base URL from the Remote Control section of the mimoLive Preference window (see screenshot above). Open a text editor (e.g. TextEdit by Apple) and paste the Clipboard content into a newly created text document. Please make sure, that there is no backslash at the end of the URL! The result should look like this:

http://172.28.30.202:8989

In the mimoLive document window with your mouse you can right-cilck (or control-click, or two-finger-click) on the object of interest (e.g. a Layer or a Source) to get a context menu. There is one menu item that let you copy the API Endpoint to the macOS Clipboard for using it in your mimoLive API project.

Go back to your text editor and paste the just copied API Endpoint after the HTTP Server base URL. Now the URL in your text browser should look like this:

http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B

This is the final API Endpoint to address a layer in your document. In this example 458706932 is the document ID and BA868701-8131-49CB-8EDD-8C7E6E7CD60B is the specific layer ID of a certain layer in this document.

Switching ON and OFF a Layer

  • With the retrieved API Endpoint for a certain layer you can toggle it on and off with the following terminal commands.

Please make sure to replace xxxxxxxxx with the API Endpoint from the previous step!

curl xxxxxxxxx/setLive

curl xxxxxxxxx/setOff

curl xxxxxxxxx/toggleLive

# our example will look like this:

curl http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive

The URLs also work in a Internet browser

Those URLs (without the "curl" command) can also be put into the address bar of an Internet browser. Once you hit return the browser will call the mimoLive HTTP-server and perform the command you specified.

Setting a Value of a Layer

  • All the parameter of a layer can be set via the HTTP API. You need to find the correct key in order to set a new value. In our example we will set the Title of a Lower Third Layer] with the key tvGroup_Content__Title. Because we need to send the new value in a JSON file to the HTTP server with a PUT request the curl command gets a bit crowded.

Please make sure to replace xxxxxxxxx with your specific layer API Endpoint!

curl -d '{"input-values":{"tvGroup_Content__Title":"My new title"}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxx"

Collection of Useful Curl Commands for you to explore

Set the RTMP URL and Streaming key of a Live Streaming Output Destination:

curl --data '{"data": { "attributes": {"settings": {"rtmpurl":"rtmp://mystreaminghost.com", "streamingkey":"MYTOTALLYSECRETSTREAMKEY"} } } }' --request PATCH http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110

Set the file name and path of a File Writer Output Destination

curl --data '{"data": { "attributes": {"settings": { "location": "~/Destktop/Recordings", "filename": "MyGreatShow %year-%month-%day-%hour-%minute.%extension" } } } }' --request PATCH http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59EDA388BB

Controlling mimoLive with Apple Script

Currently mimoLive doesn't natively support Apple Script. However you can use a workaround to reach out to mimoLive: There is a "do shell script" command in apple script that let you perform bash commands like "curl". The previous section explains how to create a curl command to manipulate a certain layer or layer value.

Once you are satisfied with your curl command you need to wrap it in a "do shell script" command in Apple Script:

Pitfalls in Apple Script

In Apple Script there are two pitfalls when bringing a terminal command like "curl" over to the do shell script command:

  1. All " needs to be prefixed with a \ in oder to let the Apple-Script parser to know that those are not the end markers for the do shell script command. The \ is an escape character to tell the parser to ignore the following character.

  2. If you concatenate multiple text parts with & then this is a "list of text" to Apple Script rather than a single text. The do shell command won't work with "list of text" and therefore your need to convert it back to a single text with the "as text" at the end of your curl command text.

This example shows how to set the title of a lower third:

Please make sure to replace xxxxxxxxx with your specific layer API Endpoint!

set layerAPIEndpoint to "xxxxxxxxx" -- in our example this would be "http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B"
set lowerThirdTitle to "Hello World!"

do shell script "curl -d '{\"input-values\":{\"tvGroup_Content__Title\":\"" & lowerThirdTitle & "\"}}' -H \"Content-Type: application/json\" -X PUT \"" & layerAPIEndpoint & "\"" as text

The following example Apple script shows how to switch on a layer every half an hour on the hour: This is could be useful for commercial overlays. Make sure to use a layer that will switch it self off after a certain time (e.g. a Placer Layer with a non looping movie source will do so).

Please make sure to replace xxxxxxxxx with your specific layer API Endpoint!

-- configure your Layer API Endpoint:
set layerAPIEndpoint to "xxxxxxxxx" -- in our example this would be "http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B"


-- repeat endlessly:
repeat
	
	-- get the seconds last in this hour
	set currentDate to current date
	set secondsToNextHour to 3600 - ((minutes of currentDate) * 60 + (seconds of currentDate))
	
	-- --------------------------------------------
	-- The following code snippet is useful only if you want to
	-- switch the layer live on half hours also.
	-- if you don't want this behaviour you can delete this part.
	-- --------------------------------------------
	-- check if we are currently in the first half of the hour
	if secondsToNextHour > 1800 then
		-- yes, we are in the first half of the hour, so only wait half the time
		set secondsToNextHour to secondsToNextHour - 1800
	end if
	-- --------------------------------------------
	
	-- wait until the time to trigger the layer
	delay secondsToNextHour
	
	-- set the specified layer to live:
	do shell script "curl \"" & layerAPIEndpoint & "/setLive\"" as text
	
	-- wait a couple of seconds to make sure we don't glitch in time
	delay 5
	
end repeat

Updated 29 days ago

Examples of API usage


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.