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
404Not 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 /sources?password=1234

Unique ID, or Index?

Each source, destination or scheduled recording can be addressed using either its unique_id or its index.

Getting information about the MovieRecorder Instance

Get info about MovieRecorder

You can get some info about the application itself

GET /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 Sources & Destinations

Retrieve an array of available sources

GET /sources
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 /sources/{n}/
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 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 /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 /destinations/{n}/
Response:
{
  "path" : "\/Volumes\/SharedVolume\/MR",
  "preset_display_name" : "ProREs",
  "unique_id" : "122A4FAC-44B5-4547-862C-660EA142BE65",
  "name" : "QuickTime Destination",
  "warning_messages" : {
  }
}

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 /sources/{n}/info
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 /sources/{n}/thumbnail
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 /sources/{n}/destinations
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 /sources/{n}/destinations
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 /sources/{n}/recording_name
Response:
{
  "recording_name": "My Recording Name"
}

To set the recording name of a source:

PUT /sources/{n}/recording_name
Body:
{
  "recording_name": "My Recording Name"
}

Controlling the "reel" name of a source

The following request returns the reel name of the source.

GET /sources/{n}/reel_name
Response:
{
  "reel_name": "001"
}

To set the reel name of a source:

PUT /sources/{n}/reel_name
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 /sources/{n}/recording_settings
Body:
{
  "recording_name": "Recording Name",
  "destinations": [
    "B0271E68-68CF-4382-9DA5-93502305D333",
    "A5A762A9-6128-4A4C-9CA4-6CCF720D5DBD"
  ]
}

Control the Recording

Record

GET /sources/{n}/record

Optional parameters (to manage the effective recording duration or end date):

Stop

Stops the recording of the source identified by the unique id or the index.

GET /sources/{n}/stop

Other Controls

Pauses the recording of the source identified by the unique id or the index.

GET /sources/{n}/pause

Resumes (after a pause) the recording of the source identified by the unique id or the index.

GET /sources/{n}/resume

Continues the recording in a new file.

GET /sources/{n}/manual_split

Disables/Enables the ability to start/pause/resume/stop recording on the source identified by the unique id or the index.

GET /sources/{n}/lock
GET /sources/{n}/unlock

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.

Gang Record

PUT /sources/record
Body:
[
  "UltraStudio 4K Mini",
  "AJA Io X3",
  "Deltacast 12G-4C"
]

Gang Pause

PUT /sources/pause
Body:
[
  "UltraStudio 4K Mini",
  "AJA Io X3",
  "Deltacast 12G-4C"
]

Gang Resume

PUT /sources/resume
Body:
[
  "UltraStudio 4K Mini",
  "AJA Io X3",
  "Deltacast 12G-4C"
]

Gang Stop

PUT /sources/stop
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 /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 /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 /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 /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 /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"
}

Working with Metadata

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 /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 /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 /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 /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 /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 /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 /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 /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 /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 /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.