Movie Recorder
The MovieRecorder action controls Softron MovieRecorder through its REST API.
Use it to:
- Start, stop, pause, and resume recordings
- Split, lock, or unlock individual recording sources
- Control multiple sources simultaneously
- Change recording names, reel names, destinations, and recording settings
- Update source metadata and metadata sets
- Create, update, or delete scheduled recordings
- Restore a MovieRecorder configuration
- Send custom REST API requests
The action runs in the background and is available on iPhone, iPad, and Mac.
Warning: Recording commands are sent immediately. A phrase can start or stop active recordings without additional confirmation.
Requirements
You will need:
- Action Phrase Core or higher
- A Mac running Softron MovieRecorder
- Remote Control enabled in MovieRecorder
- Network access between your Action Phrase device and the MovieRecorder Mac
- The MovieRecorder password, if password protection is enabled
Some endpoints depend on the installed MovieRecorder version and license. Consult the API documentation served by your copy of MovieRecorder for the exact capabilities available.
Enable Remote Control
On the Mac running MovieRecorder:
- Open MovieRecorder Settings.
- Enable Remote Control.
- Confirm the remote control port. The default is
8080. - Optionally enable password protection and set a password.
- Restart MovieRecorder if prompted.
Softron documents 1234 as the default password, but you should replace it with a unique password.
You can verify that the REST API is available by opening the following address on the MovieRecorder Mac:
http://localhost:8080/api.html
This page contains the API documentation for your installed version of MovieRecorder.
MovieRecorder also provides a browser-based remote interface at:
http://localhost:8080/index.html
See Softron’s MovieRecorder remote-control guide and REST API guide for additional information.
Add the action
- Create or edit a phrase in Action Phrase.
- Add an action.
- Select MovieRecorder.
- Enter the connection information for the MovieRecorder Mac.
- Enter the MovieRecorder password, if required.
- Leave Use Raw Request disabled.
- Select a command.
- Enter the parameters required by the command.
- Add a JSON body when required.
- Save the phrase.
Connection settings
| Setting | Description |
|---|---|
| Host | The IP address or hostname of the Mac running MovieRecorder. |
| Port | The MovieRecorder REST API port. The default is 8080. |
| Use HTTPS | Connect using HTTPS instead of HTTP. HTTPS must first be configured in MovieRecorder. |
Example host values include:
192.168.1.50
movierecorder.local
If Action Phrase and MovieRecorder are running on the same Mac, you can use:
localhost
Do not use localhost from an iPhone, iPad, or another Mac. On those devices, localhost refers to the device itself. Use the MovieRecorder Mac’s IP address or hostname instead.
Authentication
MovieRecorder uses password-based authentication.
Enter the Remote Control password in the action’s Password field. Action Phrase adds it to the request URL as a passwordquery parameter.
For example:
/sources/0/record?password=YOUR_PASSWORD
MovieRecorder does not use the username and token authorization flow used by OnTheAir Video.
If password protection is disabled in MovieRecorder, leave the Password field empty.
Security: The password is included in the request URL. Use HTTPS when requests travel over an untrusted network, and avoid exposing request URLs in logs.
HTTPS
Recent MovieRecorder versions support HTTPS for the REST API. Softron introduced this capability in MovieRecorder 4.6.5.
The certificate must be named:
tls_certificate.p12
Place it in:
/Library/Application Support/Softron/MovieRecorder/Certificates/tls_certificate.p12
After configuring the certificate:
- Restart MovieRecorder.
- Enable HTTPS in MovieRecorder’s Remote Control settings.
- Enable Use HTTPS in the Action Phrase action.
When HTTPS is enabled in a Softron application, HTTP is disabled. The certificate must also be trusted by the device running Action Phrase.
See Softron’s HTTPS setup guide for additional instructions.
Test the connection
The MovieRecorder action does not currently have a separate Test Connection button.
To verify the connection:
- From the device running Action Phrase, open:
http://HOST:PORT/api.html
- Confirm that the MovieRecorder API page loads.
- If password protection is enabled, confirm that the password works with MovieRecorder’s browser interface.
- Test recording commands using a non-critical source or a test MovieRecorder configuration.
You can also use a raw GET request to the following endpoint:
/info
The action sends the request but does not display its response. Use MovieRecorder’s interface or Activity & Logs window to confirm activity.
Warning: Avoid testing Record, Stop, Restore Configuration, or gang-control commands against production sources.
Identifying objects
Several commands require an object ID or index.
| Field | Accepted value |
|---|---|
| Source ID or Index | A MovieRecorder source ID or numerical index |
| Scheduled Recording ID or Index | A scheduled recording ID or index |
| Metadata Set ID or Index | A metadata-set ID or index |
Using IDs is generally safer than using indexes because indexes can change when sources or other objects are reordered.
Source indexes and disabled sources
By default, a source index refers to the list of enabled MovieRecorder sources.
Enable Include Disabled Sources when the index should refer to every available source, including sources that are currently disabled.
When enabled, Action Phrase adds:
include_disabled_sources=YES
This parameter requires a MovieRecorder version that supports disabled-source indexing. Softron added it in MovieRecorder 4.6.5.
If you use a stable source ID instead of an index, source ordering is less likely to affect the command.
Source-control commands
These commands target an individual MovieRecorder source.
| Command | Required parameters | Optional parameters | Description |
|---|---|---|---|
| Record Source | Source ID or Index | Duration, End Date, Include Disabled Sources | Starts recording the selected source. |
| Stop Source | Source ID or Index | Include Disabled Sources | Stops the selected source. |
| Pause Source | Source ID or Index | Include Disabled Sources | Pauses the selected source’s recording. |
| Resume Source | Source ID or Index | Include Disabled Sources | Resumes the selected source’s recording. |
| Manual Split Source | Source ID or Index | Include Disabled Sources | Closes the current recording segment and begins a new one. |
| Lock Source | Source ID or Index | Include Disabled Sources | Locks the selected source. |
| Unlock Source | Source ID or Index | Include Disabled Sources | Unlocks the selected source. |
Record Source parameters
| Parameter | Required | Description |
|---|---|---|
| Source ID or Index | Yes | The source to begin recording. |
| Duration (seconds) | No | Automatically stops the recording after the specified number of seconds. |
| End Date | No | Schedules the recording to stop at a particular date and time. |
| Include Disabled Sources | No | Includes disabled sources when resolving a numerical index. |
The format accepted by End Date can vary by MovieRecorder version. Consult the api.html page served by your installed version.
If neither Duration nor End Date is provided, the recording continues until it is stopped manually or by another MovieRecorder event.
Source-setting commands
Source-setting commands use a JSON body to provide the new value or configuration.
| Command | Required parameters | Body |
|---|---|---|
| Set Source Destinations | Source ID or Index | Destination configuration |
| Set Recording Name | Source ID or Index | Recording-name object |
| Set Reel Name | Source ID or Index | Reel-name object |
| Set Recording Settings | Source ID or Index | Recording-settings object |
| Set Source Metadata | Source ID or Index | Metadata object |
Each command also supports Include Disabled Sources.
Set Recording Name example
{
"recording_name": "Interview {{takeNumber}}"
}
The variable is replaced when the phrase runs. If takeNumber is 15, MovieRecorder receives:
{
"recording_name": "Interview 15"
}
The JSON structures accepted by the other source-setting commands depend on your installed MovieRecorder version. Open the local API documentation to obtain the expected properties:
http://localhost:8080/api.html
Important: Action Phrase sends the JSON exactly as entered. It does not validate whether the properties are supported by MovieRecorder.
Gang-control commands
Gang-control commands operate on multiple MovieRecorder sources.
| Command | Description |
|---|---|
| Record Sources | Starts recording on the targeted sources. |
| Pause Sources | Pauses recording on the targeted sources. |
| Resume Sources | Resumes recording on the targeted sources. |
| Stop Sources | Stops recording on the targeted sources. |
Each gang-control command provides:
| Parameter | Description |
|---|---|
| Include Disabled Sources | Includes disabled sources when MovieRecorder resolves source indexes. |
| Selected Sources Only | Limits the command to sources currently selected in MovieRecorder. |
| Body (JSON) | An optional source list or other body supported by the installed endpoint. |
When Selected Sources Only is enabled, Action Phrase adds:
selected_only=YES
Softron added this parameter in MovieRecorder 4.6.5.
If the Body field is empty, MovieRecorder determines the target sources from the query parameters and the endpoint’s default behavior.
Warning: Record Sources and Stop Sources can affect several recording channels simultaneously.
Scheduled recording commands
Scheduled-recording commands create or modify MovieRecorder’s recording schedule.
| Command | Required parameters | Body | Description |
|---|---|---|---|
| Create Scheduled Recording | None | Scheduled-recording JSON | Creates a scheduled recording. |
| Update Scheduled Recording | Scheduled Recording ID or Index | Scheduled-recording JSON | Updates an existing scheduled recording. |
| Delete Scheduled Recording | Scheduled Recording ID or Index | None | Deletes an existing scheduled recording. |
The JSON structure for scheduled recordings can change as scheduling features are added. Use the api.html page served by MovieRecorder to obtain the correct structure for your version.
MovieRecorder also provides a schedule interface at:
http://HOST:8080/schedule/index.html
This can help you create and inspect scheduled recordings before automating them.
Warning: Scheduled-recording changes can affect future production recordings. Confirm the source assignments, start time, duration, time zone, and recurrence settings before enabling the phrase.
Metadata commands
Set Source Metadata
Set Source Metadata updates the metadata assigned to a particular recording source.
Required fields:
- Source ID or Index
- Body (JSON)
Optional field:
- Include Disabled Sources
The JSON must match the metadata structure expected by your installed MovieRecorder version.
Metadata-set commands
| Command | Required parameters | Body | Description |
|---|---|---|---|
| Create Metadata Set | None | Metadata-set JSON | Creates a new metadata set. |
| Update Metadata Set | Metadata Set ID or Index | Metadata-set JSON | Updates an existing metadata set. |
| Delete Metadata Set | Metadata Set ID or Index | None | Deletes a metadata set. |
Warning: Deleting a metadata set may affect sources or recording workflows that reference it.
Restore Configuration
Select Restore Configuration to restore MovieRecorder settings from a JSON configuration.
The command requires a Body (JSON) containing the configuration data accepted by MovieRecorder’s /restore_configurationendpoint.
Warning: Restoring a configuration can change sources, destinations, recording settings, and other operational properties. It can interrupt an active workflow. Test the configuration on a non-production system before using this command on an active recorder.
Configuration formats can change between MovieRecorder versions. Only restore configuration data compatible with the target installation.
JSON bodies
Commands that support a body show a Body (JSON) field.
Enter a valid JSON object or array, such as:
{
"recording_name": "Camera A - {{take}}"
}
Action Phrase:
- Resolves variables before sending the request
- Sends the body as UTF-8
- Automatically sets
Content-Typetoapplication/jsonforPOST,PUT, andPATCH - Does not alter or validate the JSON structure
A JSON body is not sent with GET or DELETE requests.
If MovieRecorder does not perform the requested change, validate the JSON in a JSON editor and compare it with the endpoint description in api.html.
Variables
Text, number, path, and JSON fields support Action Phrase variables using double braces:
{{variableName}}
For example:
{
"recording_name": "{{programName}} - Take {{takeNumber}}"
}
A source field can also use a variable:
{{sourceId}}
Variables are resolved when the phrase runs.
Variables can be used in:
- Source, schedule, and metadata identifiers
- Recording duration
- End Date
- Raw Path
- Body JSON
- Recording names and metadata values
The command and HTTP method selectors cannot be replaced with template variables.
Raw REST requests
Enable Use Raw Request to call a MovieRecorder endpoint that is not included in the built-in command list.
The following methods are supported:
GETPOSTPUTPATCHDELETE
Configure:
| Setting | Description |
|---|---|
| Method | The HTTP method to send. |
| Raw Path | A relative MovieRecorder API path or complete HTTP/HTTPS URL. |
| Body (JSON) | An optional JSON request body. |
Read application information
Method:
GET
Raw Path:
/info
Read the source list
Method:
GET
Raw Path:
/sources
Dynamic source example
Method:
GET
Raw Path:
/sources/{{sourceId}}/record?duration={{duration}}
If a password is configured, Action Phrase automatically adds it to the URL.
If the Raw Path already contains a password parameter, that value is preserved instead of adding the configured password a second time.
For POST, PUT, and PATCH requests, Action Phrase automatically sets:
Content-Type: application/json
Bodies are not sent with GET or DELETE requests.
Security: A complete URL in Raw Path overrides the configured host. Because the configured password may be appended to that URL, use complete URLs only for trusted MovieRecorder servers.
Raw requests can call read endpoints, but response data is not exposed as an Action Phrase variable.
Command responses
The MovieRecorder action is intended for control rather than data retrieval.
When a phrase runs, the action:
- Builds the REST request.
- Sends it to MovieRecorder.
- Does not display the returned status or JSON.
- Does not save the response into a variable.
Confirm successful commands in MovieRecorder’s interface or its Activity & Logs window.
Troubleshooting
The API page does not load
Confirm that:
- MovieRecorder is running.
- Remote Control is enabled.
- The host and port are correct.
- The Mac’s firewall allows incoming connections.
- Both devices are on networks that can communicate.
- You are not using
localhostfrom a different device. - HTTP or HTTPS matches the MovieRecorder configuration.
The phrase runs, but nothing happens
Check that:
- A command has been selected.
- Every required identifier has a value.
- The source, scheduled recording, or metadata-set identifier is correct.
- The MovieRecorder version supports the endpoint.
- The password is correct.
- The JSON body is valid.
- Required recording destinations are enabled and available.
If a required path parameter is missing, Action Phrase does not send the request.
The wrong source is controlled
Source indexes can change when sources are enabled, disabled, added, removed, or reordered.
Use a stable source ID when possible. If you intentionally use an index that includes disabled sources, enable Include Disabled Sources.
The password is rejected
Verify that:
- Password protection is enabled in MovieRecorder.
- The Action Phrase password matches the Remote Control password.
- There are no leading or trailing spaces.
- A manually supplied
passwordparameter is not overriding the configured password.
If password protection is disabled, leave the action’s Password field empty.
A gang command affects the wrong sources
Check:
- Whether Selected Sources Only is enabled
- Which sources are selected in MovieRecorder
- Whether disabled sources are included
- Whether the Body contains an explicit source list
- Whether the installed version supports the selected query parameters
A JSON command fails
Confirm that:
- The body contains valid JSON.
- Property names match the installed MovieRecorder API.
- Strings are enclosed in double quotes.
- There are no trailing commas.
- IDs in the body refer to existing MovieRecorder objects.
Consult:
http://HOST:PORT/api.html
for the exact JSON structure expected by the endpoint.
HTTPS does not connect
Confirm that:
- The installed MovieRecorder version supports HTTPS.
- HTTPS is enabled in MovieRecorder.
- Use HTTPS is enabled in Action Phrase.
- The certificate is valid and has not expired.
- The certificate hostname matches the configured host.
- The certificate is trusted by the Action Phrase device.
- You are not attempting to use HTTP after HTTPS has been enabled.
A scheduled recording occurs at the wrong time
Check the scheduled recording’s:
- Start date
- End date or duration
- Time zone
- Daylight-saving-time behavior
- Recurrence settings
- Assigned sources and destinations
Review the schedule in MovieRecorder’s web interface before relying on the phrase in production.