Object Management

GET /api/objects/list

Lists all named objects (inputs, operators, targets, etc.) in the project.

Parameters:

Parameter Required Description
type No Filter by object type name (e.g. MediaFileInput, SrtTarget). Also matches base type names.

Response: 200 OK — JSON array:

[
  { "Id": "guid", "Name": "Media File 1", "Type": "MediaFileInput" },
  { "Id": "guid", "Name": "SRT Output", "Type": "SrtTarget" }
]

GET /api/objects/getproperties

Returns the properties of a named object as a flat JSON object: {"PropName": value, ...}. Includes every public-getter property that is not marked [InternalProperty] (so public get / private set runtime status fields and computed read-only properties are part of the response). Property values that reference a NamedModel-derived object are rendered as a compact identity stub { "Id": ..., "Name": ..., "Type": ... } to keep the response bounded.

Meta fields (prefixed with _ to avoid collision with real property names):

  • _lockedProperties — array of property names currently locked at runtime via LockProperty(). Distinct from the static [EditorLocked] attribute reported by /api/types/schema (which is fixed per type); runtime locks change over the project's lifetime. Clients should OR this list with isEditorLocked from the schema when deciding whether to enable editing for a property. Always emitted (empty array when nothing's locked).

Parameters:

Parameter Required Description
targetname Yes Name of the object

Response:

  • 200 OK — JSON object with all public properties
  • 400 Bad Request — Missing parameter, multiple matches, or object not found

GET /api/setproperty

Sets a property value on a component.

Selecting the target object (exactly one of these is required):

Parameter Description
target Object GUID
targetname Object name (must be unique)
targettype Object type name (must be unique)

Additional parameters:

Parameter Required Description
property Yes Property name (case-sensitive)
value Yes New property value

Example:

/api/setproperty?target=00000000-0000-0000-0000-000000000001&property=Volume&value=0.8
/api/setproperty?targetname=Media File 1&property=Volume&value=0.5

Collection properties: most properties take a scalar value (number, string, enum name, true/false). A few hold a collection that has no scalar text form — currently PreFaderSendConfigurations (an input's pre-fader audio sends). For these, pass value as the JSON array returned by /api/getproperty?...&format=json (URL-encode it). Each element carries Active, TargetAudioStripId, InputAudioSendType (0 = pre-fader, 1 = post-fader) and the per-channel routing TargetCh01..TargetCh08 (0 = none, 1..8 = target channel). The four send slots are fixed per input; to clear the sends, send four slots with "Active":false rather than an empty array.

/api/setproperty?target={inputId}&property=PreFaderSendConfigurations&value=[{"Active":true,"TargetAudioStripId":"b2e5afc4-d29f-4f72-b87b-c42045e73054","InputAudioSendType":0,"TargetCh01":1,"TargetCh02":2,"TargetCh03":0,"TargetCh04":0,"TargetCh05":0,"TargetCh06":0,"TargetCh07":0,"TargetCh08":0},{"Active":false,"TargetAudioStripId":"00000000-0000-0000-0000-000000000000","InputAudioSendType":0,"TargetCh01":0,"TargetCh02":0,"TargetCh03":0,"TargetCh04":0,"TargetCh05":0,"TargetCh06":0,"TargetCh07":0,"TargetCh08":0},...]

Response:

  • 200 OKSet property {name} on {type} with id {id} to: {value} successfully
  • 400 Bad Request — Missing/invalid parameters, target not found, property not found, or conversion error

GET /api/getproperty

Gets a property value from a component.

Selecting the target object (exactly one of these is required):

Parameter Description
target Object GUID
targetname Object name (must be unique)
targettype Object type name (must be unique)

Additional parameters:

Parameter Required Description
property Yes Property name (case-sensitive)
format No Set to json to receive a structured JSON response

Example:

/api/getproperty?targetname=Media File 1&property=Volume
/api/getproperty?targetname=Media File 1&property=Volume&format=json

Response (plain):

  • 200 OKGet property {name} for {type} with id {id} returned: {value}

Response (format=json):

{
  "property": "Volume",
  "value": "0.8",
  "objectId": "guid",
  "objectType": "MediaFileInput"
}

The value field is always a string. For dictionary-type properties (e.g. VideoTrackInfo, AudioTrackInfo) and collection-type properties (e.g. PreFaderSendConfigurations), the value is a JSON-serialized string:

{
  "property": "VideoTrackInfo",
  "value": "{\"VideoCodecId\":99,\"VideoWidth\":1920,\"VideoHeight\":1080,...}",
  "objectId": "guid",
  "objectType": "MediaFileInput"
}
{
  "property": "PreFaderSendConfigurations",
  "value": "[{\"Active\":true,\"TargetAudioStripId\":\"b2e5afc4-...\",\"InputAudioSendType\":0,\"TargetCh01\":1,\"TargetCh02\":2,\"TargetCh03\":0,\"TargetCh04\":0,\"TargetCh05\":0,\"TargetCh06\":0,\"TargetCh07\":0,\"TargetCh08\":0},...]",
  "objectId": "guid",
  "objectType": "TestSignalGeneratorInput"
}

This is the exact shape /api/setproperty accepts back for the same property, so a get → edit → set round-trip is lossless.


GET /api/invokecommand

Invokes a command on a component.

Selecting the target object (exactly one of these is required):

Parameter Description
target Object GUID
targetname Object name (must be unique)
targettype Object type name (must be unique)

Additional parameters:

Parameter Required Description
command Yes Command property name (case-sensitive), e.g. PlayCommand, StopCommand

Example:

/api/invokecommand?targetname=Media File 1&command=PlayCommand

Response:

  • 200 OKInvoke {command} on target with id {id} invoked successfully
  • 400 Bad Request — Missing parameters, target/command not found, command disabled, or execution error