mimoLive
The mimoLive action lets Action Phrase control mimoLive through its built-in HTTP API.
Use spoken phrases, scripts, Rooms, manual controls, and other Action Phrase triggers to:
- Start, stop, or toggle a show.
- Bring layers and variants live or take them off.
- Trigger layer and source signals.
- Control media playback.
- Start and stop output destinations.
- Recall layer sets.
- Update sources, layers, variants, and output destinations.
- Control mimoLive’s Zoom integration.
- Send custom requests to additional API endpoints.
The integration uses the mimoLive HTTP API, which is normally available on port 8989.
Requirements
You need:
- Action Phrase Core or higher.
- A Mac running mimoLive.
- The mimoLive HTTP API enabled.
- Network access between Action Phrase and the mimoLive Mac.
- An open mimoLive document for document-specific commands.
If Action Phrase and mimoLive run on different devices, both devices should normally be connected to the same trusted local network.
Enable the mimoLive HTTP API
- Open mimoLive.
- Open mimoLive > Settings > Remote Controls.
- Enable the mimoLive HTTP server.
- Note the displayed address and port.
- Optionally enable password authentication.
- Keep mimoLive running while Action Phrase sends commands.
The default API address on the mimoLive Mac is:
http://localhost:8989/api/v1
When Action Phrase runs on another device, replace localhost with the mimoLive Mac’s IP address or local hostname:
http://192.168.1.50:8989/api/v1
http://studio-mac.local:8989/api/v1
Important: On an iPhone or iPad,
localhostrefers to that iPhone or iPad—not the mimoLive Mac. Use the Mac’s IP address or.localhostname instead.
Configure the action
- In Action Phrase, open Actions.
- Create a new action or edit an existing action.
- Select mimoLive as the action type.
- Enter the mimoLive Mac’s host and port.
- Configure authentication if mimoLive requires a password.
- Leave Use Raw Request off.
- Select a command.
- Enter the required document, layer, source, or other identifiers.
- Select Test Connection.
- Add the action to a phrase, script, Room trigger, or other automation.
Connection settings
| Setting | Default | Description |
|---|---|---|
| Host | localhost |
The IP address or hostname of the Mac running mimoLive. |
| Port | 8989 |
The port configured in mimoLive’s Remote Controls settings. |
| Use HTTPS | Off | Connect using HTTPS instead of HTTP. Enable only when the endpoint supports HTTPS. |
For a direct local connection to mimoLive, leave Use HTTPS off. The built-in API normally uses HTTP.
Authentication
mimoLive can require a password for HTTP API requests. Action Phrase hashes the password with SHA-256 before sending it.
| Setting | Description |
|---|---|
| Password | The password configured in mimoLive’s Remote Controls settings. Leave empty if authentication is disabled. |
| Auth Method | Determines how the SHA-256 password hash is included in each request. |
Header SHA-256
This is the recommended authentication method.
Action Phrase sends the password hash using the following HTTP header:
X-MimoLive-Password-SHA256: HASH
Query SHA-256
Action Phrase appends the password hash to the request URL:
?pwSHA256=HASH
Header authentication is preferable because query parameters may appear in URL logs, browser history, or diagnostic tools.
Security warning: Do not expose the mimoLive HTTP API directly to the public internet. mimoLive recommends using a secure tunnel or another protected network connection for remote access. See Access Remote Control Surfaces and HTTP API remotely.
Test the connection
Select Test Connection in the mimoLive action’s Connection section.
Action Phrase sends a request to:
GET /api/v1/documents
The test reports one of the following results:
- Connected to mimoLive.
- mimoLive returned HTTP status code.
- Connection failed: error.
- Missing mimoLive connection details.
A successful test confirms that Action Phrase can reach the HTTP API and that the configured authentication is accepted.
Find API identifiers
Most commands require stable mimoLive identifiers, such as:
- Document ID
- Layer ID
- Variant ID
- Source ID
- Output Destination ID
- Layer Set ID
- Signal ID
In recent versions of mimoLive, you can Control-click or right-click an object in a document and copy its API endpoint. This is usually the easiest way to find the correct identifier.
For example:
http://192.168.1.50:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B
From this URL:
Document ID: 458706932
Layer ID: BA868701-8131-49CB-8EDD-8C7E6E7CD60B
mimoLive stores these IDs with the document, so they remain stable as long as you continue using the same document. See mimoLive’s API usage examples for instructions on copying endpoints.
Available commands
Documents
| Command | Description | Required parameters |
|---|---|---|
| List Documents | Request a list of open mimoLive documents. | None |
| Get Document | Request information about one document. | Document ID |
| Get Program Output | Request the current program output for a document. | Document ID |
| Start Show | Start the selected document and trigger its show-start events. | Document ID |
| Stop Show | Stop the selected document and trigger its show-stop behavior. | Document ID |
| Toggle Show | Toggle the document between live and off. | Document ID |
Starting an already running show or stopping an already stopped show is accepted by mimoLive.
Layers
| Command | Description | Required parameters |
|---|---|---|
| List Layers | Request the layers in a document. | Document ID |
| Create Layer | Create a layer using a JSON:API request body. | Document ID, Body |
| Get Layer | Request information about one layer. | Document ID, Layer ID |
| Update Layer | Update a layer’s name, volume, input values, or other supported properties. | Document ID, Layer ID, Body |
| Delete Layer | Permanently remove a layer. | Document ID, Layer ID |
| Set Layer Live | Put the layer live. | Document ID, Layer ID |
| Set Layer Off | Take the layer off air. | Document ID, Layer ID |
| Toggle Layer | Toggle the layer between live and off. | Document ID, Layer ID |
| Trigger Layer Signal | Trigger a signal on the layer’s live or active variant. | Document ID, Layer ID, Signal ID |
| Cycle Layer Variants | Select the next variant without changing the current live state. | Document ID, Layer ID |
| Cycle Layer Variants Backwards | Select the previous variant without changing the current live state. | Document ID, Layer ID |
| Set First Variant Live | Select the first variant and put the layer live. | Document ID, Layer ID |
| Set Last Variant Live | Select the last variant and put the layer live. | Document ID, Layer ID |
| Layer Media Control | Send a media command to a source connected to a layer input. | Document ID, Layer ID, Source Input Key, Media Command |
Cycling a layer’s variants changes the active variant but does not disturb a layer that is currently live. The selected variant becomes visible the next time the layer goes live.
Media commands
Layer Media Control and Source Media Control accept commands supported by the underlying media source.
Common values include:
playpausestopreverserewindfastforwardskiptostartskiptoendskipbackskipaheadrecordshufflerepeat
Not every source supports every command.
Variants
| Command | Description | Required parameters |
|---|---|---|
| List Variants | Request all variants for a layer. | Document ID, Layer ID |
| Get Variant | Request information about one variant. | Document ID, Layer ID, Variant ID |
| Update Variant | Update a variant’s name or input values. | Document ID, Layer ID, Variant ID, Body |
| Set Variant Live | Activate the variant and put its layer live if necessary. | Document ID, Layer ID, Variant ID |
| Set Variant Off | Deactivate the variant and take its layer off. | Document ID, Layer ID, Variant ID |
| Toggle Variant | Toggle the variant between live and off. | Document ID, Layer ID, Variant ID |
Sources
| Command | Description | Required parameters |
|---|---|---|
| List Sources | Request all sources in a document. | Document ID |
| Create Source | Create a source using a JSON:API request body. | Document ID, Body |
| Get Source | Request information about one source. | Document ID, Source ID |
| Update Source | Update a source’s supported properties. | Source ID, Body |
| Delete Source | Permanently remove a source from a document. | Document ID, Source ID |
| Get Source Preview | Request a graphical preview of a source. | Document ID, Source ID |
| Source Media Control | Send a media playback command to a source. | Document ID, Source ID, Media Command |
| Trigger Source Signal | Trigger a signal exposed by a source. | Document ID, Source ID, Signal ID |
Signal identifiers can be discovered in the source or layer’s input-values. Signal keys generally end with _TypeSignal.
Output destinations
| Command | Description | Required parameters |
|---|---|---|
| List Output Destinations | Request all output destinations in a document. | Document ID |
| Create Output Destination | Create an output destination using a JSON:API body. | Document ID, Body |
| Get Output Destination | Request information about one output destination. | Document ID, Output Destination ID |
| Update Output Destination | Update supported properties such as its title, automatic start/stop behavior, or settings. | Document ID, Output Destination ID, Body |
| Delete Output Destination | Permanently remove an output destination. | Document ID, Output Destination ID |
| Start Output Destination | Start streaming, recording, playout, NDI, virtual camera, or another configured destination. | Document ID, Output Destination ID |
| Stop Output Destination | Stop the selected output destination. | Document ID, Output Destination ID |
| Toggle Output Destination | Toggle the output destination between live and stopped. | Document ID, Output Destination ID |
An output destination may temporarily report a startup or shutdown state while mimoLive connects to or disconnects from an external service.
Warning: Starting an output destination can begin a real stream, recording, playout, or virtual-camera output. Test with a non-production destination first.
Layer sets
| Command | Description | Required parameters |
|---|---|---|
| List Layer Sets | Request all layer sets in a document. | Document ID |
| Create Layer Set | Create a layer set using a JSON:API body. | Document ID, Body |
| Get Layer Set | Request information about one layer set. | Document ID, Layer Set ID |
| Update Layer Set | Update a layer set’s name, recall behavior, or saved layer actions. | Document ID, Layer Set ID, Body |
| Delete Layer Set | Permanently remove a layer set. | Document ID, Layer Set ID |
| Recall Layer Set | Apply the saved live states to the layer set’s layers. | Document ID, Layer Set ID |
Layer sets act like scenes by changing the live state of multiple layers together.
Data stores
| Command | Description | Required parameters |
|---|---|---|
| List Data Stores | Request the data stores available through the selected document endpoint. | Document ID |
| Get Data Store | Request one data store. | Document ID, Data Store ID |
| List Data Store Rows | Request the rows in a data store. | Document ID, Data Store ID |
| Focus Data Store Row | Focus one row. | Document ID, Data Store ID, Row ID |
| Unfocus Data Store Row | Remove focus from one row. | Document ID, Data Store ID, Row ID |
| Toggle Data Store Row Focus | Toggle a row’s focus state. | Document ID, Data Store ID, Row ID |
| Trigger Data Store Row Signal | Trigger the selected row’s signal. | Document ID, Data Store ID, Row ID |
Data-store capabilities vary by mimoLive version and the type of data store used by the document. Verify the supported endpoints for your mimoLive installation.
Devices
| Command | Description | Required parameters |
|---|---|---|
| List Devices | Request the video and audio devices currently available to mimoLive. | None |
| Get Device | Request information about one video or audio device. | Device ID |
These commands refer to capture devices available to the mimoLive Mac, such as cameras, microphones, and audio interfaces.
Zoom
| Command | Description | Required parameters |
|---|---|---|
| Join Zoom Meeting | Join a Zoom meeting using mimoLive’s built-in Zoom integration. | Meeting ID and Zoom Account Name |
| Leave Zoom Meeting | Leave the current Zoom meeting. | None |
| End Zoom Meeting | End the current meeting when the logged-in user has host permission. | None |
| List Zoom Participants | Request the current participant list. | None |
| Run Zoom Meeting Action | Run a meeting-level or participant-level Zoom command. | Command; User ID for participant-specific commands |
Join Zoom Meeting parameters
| Parameter | Description |
|---|---|
| Meeting ID | The Zoom meeting number. |
| Passcode | The meeting passcode, when required. |
| Display Name | The name shown for mimoLive in the meeting. |
| Zoom Account Name | The name of a Zoom account logged in under mimoLive Settings > Accounts. |
| Virtual Camera | Send mimoLive’s program output to Zoom as the camera feed. |
| Webinar Token | The token required when joining certain webinars. |
Current mimoLive versions require Zoom Account Name to match an account logged in under mimoLive Settings, even if the Action Phrase field does not appear as required.
Zoom meeting actions
Enter the mimoLive command name in the Command field. Add a User ID for participant-specific commands.
Common command values include:
requestRecordingPermission
muteVideo
unmuteVideo
muteAudio
unmuteAudio
enableUnmuteBySelf
disableUnmuteBySelf
muteAll
unmuteAll
lockMeeting
unlockMeeting
lowerAllHands
pauseShare
resumeShare
joinVoip
leaveVoip
allowParticipantsToChat
disallowParticipantsToChat
allowParticipantsToShare
disallowParticipantsToShare
allowParticipantsToStartVideo
disallowParticipantsToStartVideo
allowParticipantsToShareWhiteBoard
disallowParticipantsToShareWhiteBoard
allowParticipantsToRename
disallowParticipantsToRename
showParticipantProfilePictures
hideParticipantProfilePictures
Commands such as muteAudio, unmuteAudio, muteVideo, and unmuteVideo require the participant’s numeric User ID.
See the official mimoLive API endpoint reference for the current list of Zoom commands and their permission requirements.
JSON request bodies
Commands that create or update resources display a Body (JSON:API) field.
Action Phrase sends a non-empty body with:
Content-Type: application/vnd.api+json
The expected object depends on the selected endpoint. For example, updating an output destination may use a body similar to:
{
"data": {
"type": "output-destinations",
"id": "OUTPUT-DESTINATION-ID",
"attributes": {
"title": "Main Stream",
"starts-with-show": true
}
}
}
Only include properties supported by the selected mimoLive resource. Refer to the mimoLive endpoint documentation for request examples.
Use phrase variables
Command parameters and request bodies support Action Phrase template variables.
For example, a phrase could use:
Show lower third for {{speaker}}
An Update Variant action could use the captured value in its JSON body:
{
"name": "{{speaker}}"
}
Identifiers can also use variables:
Document ID: {{documentId}}
Layer ID: {{layerId}}
Variant ID: {{variantId}}
The resolved value must be a valid mimoLive identifier.
For production workflows, fixed IDs are generally safer than speaking long identifiers. A common approach is to create separate actions for each frequently used layer, variant, output destination, or layer set.
Raw requests
Turn on Use Raw Request to call a mimoLive endpoint that is not included in the command picker.
| Setting | Description |
|---|---|
| Raw Method | GET, POST, PUT, PATCH, or DELETE. |
| Raw Path | A path relative to the mimoLive /api/v1 base. Query parameters are supported. |
| Body (JSON) | An optional request body for POST, PUT, and PATCH. |
Example:
Method: POST
Path: /documents/458706932/layers/LAYER-ID/toggleLive
You may also include the API prefix:
/api/v1/documents/458706932/layers/LAYER-ID/toggleLive
Action Phrase detects the existing /api/v1 prefix and does not add it a second time.
Raw paths and bodies support Action Phrase template variables.
A request body is not sent with GET or DELETE.
Security warning: Raw Path accepts absolute HTTP and HTTPS URLs. If you enter an absolute URL, Action Phrase may send the configured mimoLive authentication hash to that destination. Use relative paths unless you have verified and trust the absolute URL.
Read-command results
Commands such as List Documents, Get Document, List Layers, Get Source Preview, List Devices, and List Zoom Participants send read-only requests to mimoLive.
Action Phrase does not currently expose the returned JSON, image, or media response as a phrase variable or action output. Use these commands only when making the request itself is useful, or use mimoLive’s API directly when you need to inspect the returned data.
Destructive commands
The following commands permanently remove resources:
- Delete Layer
- Delete Source
- Delete Output Destination
- Delete Layer Set
Warning: Action Phrase does not display a separate confirmation prompt when a phrase reaches one of these commands. Use destructive actions only in carefully restricted phrases or manual workflows.
Troubleshooting
Test Connection fails
Confirm that:
- mimoLive is running.
- The HTTP server is enabled under mimoLive’s Remote Controls settings.
- The host and port are correct.
- The device running Action Phrase can reach the mimoLive Mac.
- The macOS firewall permits access to mimoLive.
- Action Phrase has permission to access the local network.
- Use HTTPS is off for a normal direct connection.
localhost does not work
Use localhost only when Action Phrase runs on the same Mac as mimoLive.
From an iPhone, iPad, or another computer, use the mimoLive Mac’s IP address or .local hostname.
mimoLive returns an authentication error
Confirm that:
- The password matches the one configured in mimoLive.
- Header SHA-256 is selected.
- Authentication is configured consistently in mimoLive and Action Phrase.
- There are no accidental spaces before or after the password.
Action Phrase hashes the password automatically. Enter the original password, not a manually calculated hash.
A command runs but nothing changes
Confirm that:
- Every required ID is present.
- The IDs came from the currently open mimoLive document.
- The selected resource still exists.
- The selected layer, source, or output destination supports the requested operation.
- A create or update command includes a valid body.
- The mimoLive user or Zoom account has permission to perform the operation.
Zoom Join returns HTTP 400
Confirm that Zoom Account Name exactly matches a Zoom account logged in under mimoLive Settings > Accounts.
An output destination does not start
The destination must be fully configured in mimoLive and permitted by the current mimoLive license. Streaming destinations must also be able to connect to their configured service.
A media command does nothing
Media commands depend on the source type. Verify that the source reports support for the selected command in the mimoLive API.
A read command does not display its response
Action Phrase currently sends the request but does not convert the response into a variable or visible result. Use the mimoLive API directly when you need to inspect returned JSON or preview media.