MovieRecorder REST API
MovieRecorder's REST API allows you to retrieve MovieRecorder's inputs and outputs, control the playback, create clips, etc... If you have additional needs, don't hesitate to reach out to us.
MovieRecorder uses port 8080 by default , but this can be configured in the preferences of MovieRecorder.
This API is meant to be RESTful, then, using different verbs on requests leads to different behaviour on request processing. In general manner, consider theses verbs to have the described behaviour:
GET -> Retrieve data of a processable entity.
POST -> Create a new entity.
PUT -> Update a specified entity.
DELETE -> Delete an entity.
When you modify or retrieving data, be sure to handle properly the return code that is returned by the API as it indicates if the operation was successfull or not.
For POST & PUT requests you MUST supply the 'Content-Type' header with value 'application/json' .
Here is a short list common codes returned by the API:
Code
Meaning
Description
200
OK
The request was succesfully processed.
201
Created
A new resource has been created on server side.
202
Accepted
The resquest was accepted but was not processed.
400
Bad Request
The resquest was not well formed.
401
Unauthorized
The request needs an access token to proceed. See Authorization
403
Forbidden
The token provided doesn't have sufficient privileges/permissions. See Authorization
404 Not found
The resquest couldn't be processed. The path is not recognized.
422
Unprocessable entity
The resquest is well formed but is sementically incorrect
To know if your request succeded; command, update, create and delete requests are followed with this kind of response:
Command response object:
{
"success" : boolean,
"error" : string OPTIONAL
}
"success": Indicates if the request was accepted and processed or not by MovieRecorder. "error": In case of success false, indicates what was wrong when processing the request.
NOTE:
OPTIONAL marked parameters indicates that these parameters can be or not be present in the response object, this is due to internal logics.
However for requests that require a body , like PUT or POST , it means that it can be passed but they are not mandatory .
Authorization
Since controlling your ingest can be sensitive content at a time, an authorization mechanism will be required if you decide to enable it in MovieRecorder's preferences. (General -> HTTP Remote Control -> Require Password).
If this feature is enabled, it implies that you have to send the password defined in MovieRecorder and send the password with each request.
So for example if your password is "1234", you will have to add it to your request:
GET http://localhost:8080 /sources?password=1234
Unique ID, or Index?
Each source, destination or scheduled recording can be addressed using either its unique_id or its index.
The unique_id of an item is unique. It will not change.
The index is the position of the item (source, destination or scheduled recording) in opening order. The index '0' would represent the first item, then '1' would represent the second and so on. WARNING! Indexes can change if you connect/disconnect or enable/disable a source for example. With "Sources", you can pass a "include_disabled_sources" parameter in the URL, the index can either be the one of all the sources, or only of the enabled ones. If you don't pass the parameter, it will be only the enabled ones. Make sure to be consistent between your request to be sure to address the appropriate source index, or prefer using unique ids.
Getting information about the MovieRecorder Instance
Get info about MovieRecorder
You can get some info about the application itself
GET http://localhost:8080 /info
Response:
{
"time_zone": string, eg: "Europe\/Brussels" ⓘ
"computer_name": string, eg: "Admin's computer" ⓘ
"application_name": string, eg: "MovieRecorder" ⓘ
"application_build_number": string, eg: "402090" ⓘ
"mac_os_version": string, eg: "14.1" ⓘ
"application_in_demo": boolean ⓘ ,
"application_version": string eg: "4.2" ⓘ
}
Working with Destinations
Retrieve an array of available destinations
This request will list all the destinations available, as well as potential warnings that are not related to the source itself.
GET http://localhost:8080 /destinations
Response (array):
[
{
"warning_messages" : {
"NotRelatedToSource" : [
{
"message" : "DEMO Mode: Make sure you have a valid 'Softron Streaming Pack' license and that it is activated in the application 'Streaming Center'.",
"warningMessageType" : 10
}
]
},
"unique_id" : "61DE90E2-0FB4-4129-86DD-1C21D91A7D0A",
"name" : "Streaming Destination",
"streaming_preset_unique_id" : "9AF70DED-29E3-4928-8EE9-304760F8CCAA"
},
{
"path" : "\/Users\/pierre\/Movies",
"preset_display_name" : "Apple ProRes 422",
"unique_id" : "705F99B0-5F62-4758-BB65-8BF55E520E1F",
"name" : "QuickTime Destination",
"warning_messages" : {
}
}
]
Retrieve the info of a specific destinations
GET http://localhost:8080 /destinations/{n} /
Response:
{
"path" : "\/Volumes\/SharedVolume\/MR",
"preset_display_name" : "ProREs",
"unique_id" : "122A4FAC-44B5-4547-862C-660EA142BE65",
"name" : "QuickTime Destination",
"warning_messages" : {
}
}
Working with Sources
Like other items, each source can be addressed by unique_id (stable) or by index (its position in the list).
By default, an index is evaluated among enabled sources only . To evaluate indices among all sources (including disabled), append the URL parameter include_disabled_sources=YES .
You may pass this parameter on any request that uses a source index — both when listing sources and on per‑source endpoints (e.g. /sources/{n} , /sources/{n}/info , /sources/{n}/thumbnail , /sources/{n}/destinations , etc.).
Important — be consistent: if you choose to include disabled sources, append include_disabled_sources=YES to every related request that uses an index; otherwise the same index may refer to a different source. Prefer unique_id when possible.
Retrieve an array of sources
GET http://localhost:8080 /sources
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response (array):
[
{
"recording_name" : "My Recording Name",
"recording_start_date" : "",
"is_paused" : false,
"is_locked" : false,
"enabled_destinations" : [
{
"destination_name" : "QuickTime Destination",
"destination_unique_id" : "122A4FAC-44B5-4547-862C-660EA142BE65"
}
],
"can_be_paused" : true,
"unique_id" : "2745338660-0",
"device_name" : "UltraStudio 4K Mini",
"display_name" : "My UltraStudio",
"reel_name" : "001",
"frame_rate" : 59.94,
"video_format" : "2160p59.94",
"is_recording" : false,
"recording_end_date" : "",
"is_enabled" : true
},
{
"recording_name" : "My Recording Name",
"recording_start_date" : "",
"is_paused" : false,
"is_locked" : false,
"enabled_destinations" : [
{
"destination_name" : "QuickTime Destination",
"destination_unique_id" : "122A4FAC-44B5-4547-862C-660EA142BE65"
}
],
"can_be_paused" : true,
"unique_id" : "135568746543",
"device_name" : "AJ Io X3",
"display_name" : "AJ Io X3",
"reel_name" : "001",
"frame_rate" : 59.94,
"video_format" : "2160p59.94",
"is_recording" : false,
"recording_end_date" : "",
"is_enabled" : true
}
]
Retrieve the info of a specific source
GET http://localhost:8080 /sources/{n} /
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response:
{
"recording_name" : "Untitled Recording",
"recording_start_date" : "",
"is_paused" : false,
"is_locked" : false,
"enabled_destinations" : [
{
"destination_name" : "QuickTime Destination",
"destination_unique_id" : "122A4FAC-44B5-4547-862C-660EA142BE65"
}
],
"can_be_paused" : true,
"unique_id" : "2745338660-0",
"device_name" : "UltraStudio 4K Mini",
"display_name" : "My UltraStudio",
"reel_name" : "001",
"frame_rate" : 29.969999999999999,
"video_format" : "525i59.94 NTSC",
"is_recording" : false,
"recording_end_date" : "",
"is_enabled" : true
}
Retrieve the status of a specific source
The following request returns information about the source feed: last received timecode (string), if it is recording (bool), last warning (string), vuMeterLevels (array of values from 0 to 1.0).
GET http://localhost:8080 /sources/{n} /info
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response:
{
"elapsed_seconds" : 0,
"timecode" : "13:15:09;08",
"vu_meter_levels" : [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"is_recording" : false,
"timecode_frame_rate" : 29.970029970029969,
"timecode_is_drop_frame" : true,
"is_paused" : false
}
Retrieve a JPEG thumbnail of the last received image
GET http://localhost:8080 /sources/{n} /thumbnail
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response: jpeg data
Controlling the enabled destinations of a source
Check which destinations are enabled on the source. You will receive a list of destination unique ids
GET http://localhost:8080 /sources/{n} /destinations
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response:
[
"122A4FAC-44B5-4547-862C-660EA142BE65",
"E0EDC89D-0988-4F70-8E71-AC659DD3E042"
]
To set which destinations are enabled for a source, pass an array with their unique ids to the source
PUT http://localhost:8080 /sources/{n} /destinations
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Body:
[
"122A4FAC-44B5-4547-862C-660EA142BE65",
"E0EDC89D-0988-4F70-8E71-AC659DD3E042"
]
Controlling the recording name of a source
The following request returns the recording name of the source.
GET http://localhost:8080 /sources/{n} /recording_name
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response:
{
"recording_name": "My Recording Name"
}
To set the recording name of a source:
PUT http://localhost:8080 /sources/{n} /recording_name
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Body:
{
"recording_name": "My Recording Name"
}
Controlling the "reel" name of a source
The following request returns the reel name of the source.
GET http://localhost:8080 /sources/{n} /reel_name
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Response:
{
"reel_name": "001"
}
To set the reel name of a source:
PUT http://localhost:8080 /sources/{n} /reel_name
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Body:
{
"reel_name": "001"
}
Change Recording Settings
Pass a dictionary with the keys recording_name and destinations where recording name is a string and destinations is an array of destination unique ids. This method is there for your convenience and groups destinations and recording_name methods into one.
PUT http://localhost:8080 /sources/{n} /recording_settings
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Body:
{
"recording_name": "Recording Name",
"destinations": [
"B0271E68-68CF-4382-9DA5-93502305D333",
"A5A762A9-6128-4A4C-9CA4-6CCF720D5DBD"
]
}
Control the Recording
Note: For any per‑source control endpoint addressed by index — /sources/{n}/record , /stop , /pause , /resume , /manual_split , /lock , /unlock — append ?include_disabled_sources=YES if you want indices evaluated among all sources (enabled + disabled). Be consistent across related requests to avoid addressing a different source.
Record
GET http://localhost:8080 /sources/{n} /record
Optional parameters:
"duration": integer eg: "duration=60" ⓘ
"end_date": string eg: "end_date=2017-03-08T09%3A44%3A00.069Z" ⓘ
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Stop
Stops the recording of the source identified by the unique id or the index.
GET http://localhost:8080 /sources/{n} /stop
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Other Controls
Pauses the recording of the source identified by the unique id or the index.
GET http://localhost:8080 /sources/{n} /pause
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Resumes (after a pause) the recording of the source identified by the unique id or the index.
GET http://localhost:8080 /sources/{n} /resume
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Continues the recording in a new file.
GET http://localhost:8080 /sources/{n} /manual_split
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Disables/Enables the ability to start/pause/resume/stop recording on the source identified by the unique id or the index.
GET http://localhost:8080 /sources/{n} /lock
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
GET http://localhost:8080 /sources/{n} /unlock
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
Gang Controls
Instead of controlling each source individually, you can control them together by simply sending an array of sources that you want to control. You simply pass an array of unique ids or indexes of sources to control. If you don't pass any array, you will control all sources.
You can also pass a parameter in the url to set if you want to control all enabled sources, or just the ones selected.
Note: When sending an array of indexes (instead of unique IDs) to gang endpoints, you can control how those indexes are resolved by adding ?include_disabled_sources=YES to the URL to evaluate among all sources . Use this parameter consistently anywhere you rely on indexes.
Gang Record
PUT http://localhost:8080 /sources/record
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
"selected_only": BOOL eg: "selected_only=YES" ⓘ
Body:
[
"UltraStudio 4K Mini",
"AJA Io X3",
"Deltacast 12G-4C"
]
Gang Pause
PUT http://localhost:8080 /sources/pause
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
"selected_only": BOOL eg: "selected_only=YES" ⓘ
Body:
[
"UltraStudio 4K Mini",
"AJA Io X3",
"Deltacast 12G-4C"
]
Gang Resume
PUT http://localhost:8080 /sources/resume
Optional parameters:
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
"selected_only": BOOL eg: "selected_only=YES" ⓘ
Body:
[
"UltraStudio 4K Mini",
"AJA Io X3",
"Deltacast 12G-4C"
]
Gang Stop
PUT http://localhost:8080 /sources/stop
"include_disabled_sources": BOOL eg: "include_disabled_sources=YES" ⓘ
"selected_only": BOOL eg: "selected_only=YES" ⓘ
Body:
[
"UltraStudio 4K Mini",
"AJA Io X3",
"Deltacast 12G-4C"
]
Working with Scheduled Recordings
Getting info of scheduled recordings
The following request returns a list of scheduled recordings
GET http://localhost:8080 /scheduled_recordings
Response:
[
{
"weekly_repeated" : true,
"is_enabled" : true,
"unique_id" : "FE99AA1E-52CD-460D-BB55-4669A3C8D1C0",
"destination_unique_ids" : [
"E0EDC89D-0988-4F70-8E71-AC659DD3E042"
],
"start_time" : 0,
"stopped_by_user" : false,
"source_name" : "My UltraStudio",
"duration" : 60,
"recording_days" : [
1
],
"source_unique_id" : "2745338660-0",
"name" : "Scheduled Recording 1"
},
{
"weekly_repeated" : false,
"is_enabled" : true,
"unique_id" : "92D7911A-23F9-43CE-9434-A616305882CA",
"destination_unique_ids" : [
"122A4FAC-44B5-4547-862C-660EA142BE65"
],
"start_time" : 900,
"stopped_by_user" : false,
"source_name" : "My UltraStudio",
"duration" : 60,
"date" : "2024-05-29T22:00:00.000Z",
"source_unique_id" : "2745338660-0",
"name" : "Scheduled Recording 2"
}
]
The following request returns the info of a specific scheduled recording
GET http://localhost:8080 /scheduled_recordings/{n}
Response:
{
"weekly_repeated" : true,
"is_enabled" : true,
"unique_id" : "FE99AA1E-52CD-460D-BB55-4669A3C8D1C0",
"destination_unique_ids" : [
"E0EDC89D-0988-4F70-8E71-AC659DD3E042"
],
"start_time" : 0,
"stopped_by_user" : false,
"source_name" : "My UltraStudio",
"duration" : 60,
"recording_days" : [
1
],
"source_unique_id" : "2745338660-0",
"name" : "Scheduled Recording 1"
}
Create new scheduled recording
The following request will create a new repeated event
POST http://localhost:8080 /scheduled_recordings
Body:
{
"weekly_repeated": true,
"is_enabled": false,
"destination_unique_ids": [
"C2844CBE-5038-49CE-A599-3B736E0777B1"
],
"start_time": 845,
"duration": 800,
"recording_days": [
0,
1,
2,
5,
6
],
"source_unique_id": "GG-MACBOOK-PRO-2018.LOCAL (NDI ScanConverter):127.0.0.1",
"name": "Repeated Scheduled Recording 4"
}
The following request will create a new fixed event
POST http://localhost:8080 /scheduled_recordings
Body:
{
"weekly_repeated": false,
"is_enabled": false,
"destination_unique_ids": [
"928BEB6F-5342-4223-8CB9-5C4629B00288"
],
"start_time": 60,
"date": "2017-06-22T22:00:00.000Z",
"duration": 30,
"source_unique_id": "OnTheAir Video",
"name": "My Recording 1"
}
The following is the response to the creation of a new scheduled recording. It confirms and returns the UID of the scheduled recording that was created.
Response:
{
"success" : true,
"unique_id" : "0F3F4E08-6AB0-4D7F-8947-F4785EB5F1BC"
}
Modify scheduled recordings
The following request will modify an event. You can pass any of the keys, except its UID.
PUT http://localhost:8080 /scheduled_recordings/{n}
Body:
{
"weekly_repeated": true,
"is_enabled": false,
"destination_unique_ids": [
"C2844CBE-5038-49CE-A599-3B736E0777B1"
],
"start_time": 845,
"duration": 800,
"recording_days": [
0,
1,
2,
5,
6
],
"source_unique_id": "GG-MACBOOK-PRO-2018.LOCAL (NDI ScanConverter):127.0.0.1",
"name": "Repeated Scheduled Recording 4"
}
The API allows you to manipulate the metadata sets.
Please note that metadata sets can be used on sources and some keys/values of metadata fields are only relevant when the set is being used on a source. See the documentation of the source object for the usage of sets on sources.
Valid values for the type key are: Boolean, Text, Number, Date/Time and Multiple Choice
Working with Metadata Sets
The following request will retrieve all the metadata sets available for MovieRecorder.
GET http://localhost:8080 /metadata_sets
Response:
[
{
"fields" : [
{
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"type" : "Text"
},
{
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"display_name" : "A \"Multiple Choice\" Metadata",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"type" : "Multiple Choice",
"possible_values" : [
"First Value",
"Second Value"
]
},
{
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"type" : "Number"
},
{
"default_value" : "2024-05-30T14:16:57.415Z",
"current_date_by_default" : true,
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"type" : "Date\/Time"
},
{
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
]
The following request will retrieve a specific metadata set.
GET http://localhost:8080 /metadata_sets/{n}
Response:
[
{
"fields" : [
{
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"type" : "Text"
},
{
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"display_name" : "A \"Multiple Choice\" Metadata",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"type" : "Multiple Choice",
"possible_values" : [
"First Value",
"Second Value"
]
},
{
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"type" : "Number"
},
{
"default_value" : "2024-05-30T14:16:57.415Z",
"current_date_by_default" : true,
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"type" : "Date\/Time"
},
{
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
]
To create a new metadata set.
POST http://localhost:8080 /metadata_sets/{n}
Body:
[
{
"fields" : [
{
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"type" : "Text"
},
{
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"display_name" : "A \"Multiple Choice\" Metadata",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"type" : "Multiple Choice",
"possible_values" : [
"First Value",
"Second Value"
]
},
{
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"type" : "Number"
},
{
"default_value" : "2024-05-30T14:16:57.415Z",
"current_date_by_default" : true,
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"type" : "Date\/Time"
},
{
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
]
To modify a metadata set.
PUT http://localhost:8080 /metadata_sets/{n}
Body:
[
{
"fields" : [
{
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"type" : "Text"
},
{
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"display_name" : "A \"Multiple Choice\" Metadata",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"type" : "Multiple Choice",
"possible_values" : [
"First Value",
"Second Value"
]
},
{
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"type" : "Number"
},
{
"default_value" : "2024-05-30T14:16:57.415Z",
"current_date_by_default" : true,
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"type" : "Date\/Time"
},
{
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
]
To delete a metadata set.
DELETE http://localhost:8080 /metadata_sets/{n}
Response:
{
"success" : true
}
Working with Metadata on Sources
The following request will get the info of the metadata set assigned toa specific source. WARNING: this does not return the current values of the metadata, but the metadata set itself, see the next request to get the metadata values set on the source.
GET http://localhost:8080 /sources/{n} /metadata_set
Response:
{
"fields" : [
{
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"use_manual_value" : true,
"value" : [
"Changing the value"
],
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"type" : "Text"
},
{
"type" : "Multiple Choice",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"use_manual_value" : true,
"value" : "Second Value",
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"possible_values" : [
"First Value",
"Second Value"
],
"display_name" : "A \"Multiple Choice\" Metadata"
},
{
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"use_manual_value" : true,
"value" : "3",
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"type" : "Number"
},
{
"type" : "Date\/Time",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"use_manual_value" : true,
"value" : "2024-05-30T16:16:11.480Z",
"default_value" : "2024-05-30T14:16:11.470Z",
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"current_date_by_default" : false
},
{
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"use_manual_value" : true,
"value" : false,
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
This is the request to get the metadata values set on the source.
GET http://localhost:8080 /sources/{n} /metadata
Response:
{
"fields" : [
{
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"use_manual_value" : true,
"value" : [
"Changing the value"
],
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"type" : "Text"
},
{
"type" : "Multiple Choice",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"use_manual_value" : true,
"value" : "Second Value",
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"possible_values" : [
"First Value",
"Second Value"
],
"display_name" : "A \"Multiple Choice\" Metadata"
},
{
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"use_manual_value" : true,
"value" : "3",
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"type" : "Number"
},
{
"type" : "Date\/Time",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"use_manual_value" : true,
"value" : "2024-05-30T16:16:11.480Z",
"default_value" : "2024-05-30T14:16:11.470Z",
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"current_date_by_default" : false
},
{
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"use_manual_value" : true,
"value" : false,
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
If you want to modify the metadata values on a source, use a PUT request.
PUT http://localhost:8080 /sources/{n} /metadata
Response:
{
"fields" : [
{
"unique_id" : "AFA9C51E-CDB0-4431-AF3F-5FBF71721E57",
"use_manual_value" : true,
"value" : [
"Changing the value"
],
"default_value" : [
"$$Year.yyyy",
"$$Month.MM",
"$$Day.dd",
"_A Default Value"
],
"key" : "com.softronmedia.Key",
"display_name" : "A \"Text\" Metadata",
"type" : "Text"
},
{
"type" : "Multiple Choice",
"unique_id" : "AE38480D-F095-4D21-AE92-EB9935C12BE0",
"use_manual_value" : true,
"value" : "Second Value",
"default_value" : "First Value",
"key" : "com.softronmedia.Key-1",
"possible_values" : [
"First Value",
"Second Value"
],
"display_name" : "A \"Multiple Choice\" Metadata"
},
{
"unique_id" : "7A3C1B7A-EC18-4FF6-8F13-F3C29A8664A0",
"use_manual_value" : true,
"value" : "3",
"default_value" : 1,
"key" : "com.softronmedia.Key-2",
"display_name" : "A \"Number\" Metadata ",
"type" : "Number"
},
{
"type" : "Date\/Time",
"unique_id" : "344662BA-C237-4CBE-BC28-8039BC786A0E",
"use_manual_value" : true,
"value" : "2024-05-30T16:16:11.480Z",
"default_value" : "2024-05-30T14:16:11.470Z",
"key" : "com.softronmedia.Key-3",
"display_name" : "A \"Date\" Metadata",
"current_date_by_default" : false
},
{
"unique_id" : "BE205661-0BC5-4EB2-A1C4-C757CC0C565B",
"use_manual_value" : true,
"value" : false,
"default_value" : true,
"key" : "com.softronmedia.Key-4",
"display_name" : "A \"Boolean\" Metadata",
"type" : "Boolean"
}
],
"name" : "MyMetadataSet",
"unique_id" : "B1ECBD2E-CC24-41A2-9C0E-1492A1DB781F",
"movieRecorderInstanceUniqueID" : "B49C21FA-8C3D-574D-81AF-7CBFE11B0FFE"
}
Save and Restore Configurations
Retrieve the list of Configurations available
GET http://localhost:8080 /configurations
Response:
[
"My First Configuration",
"My Second Configuration"
]
Restore a saved configuration
Once you know which configurations are available, you can simply restore them.
PUT http://localhost:8080 /restore_configurations
Body:
{
"restore_vtr_bach_list": true,
"restore_sources": true,
"restore_av_presets": true,
"restore_destinations": true,
"restore_schedule": true,
"restore_layout": true,
"name": "Recorder"
}
About Websockets
You have 2 options with our APIs to know the status of a recording:
Using the REST api : You would be regularly polling the sources to know their status. This enables you to check the signal format but for dropped frames it would be less accurate. Indeed, as you can only get the last warning, you could miss one in between two polls.
Using the WebSockets : This is much better to work with as the websockets will send you the notifications. There are 2 sockets. One main containing all the changes regarding the sources and destinations, and a second one with all the information for the activity & logs.
The advantage of the WebSockets is that every update is pushed live to it so you would be notified immediately and you won't miss any update.
Contact us if you need more information about the WebSockets. You can also have a look at the sample webpage that we have created (it uses websockets). On the Mac that is running MovieRecorder, you can take a look at:
http://localhost:8080/index.html
For more Information
If you need more info or support about MovieRecorder, you can find it on
our support desk . And if you need additional information on the API and/or the websockets, submit a ticket and we'll be happy to guide you.