Store API - Calls

Service name: Store (singleton, one per network).

Shows

Endpoints for creating, switching, and managing shows.

ChangeShow [CALL]

ChangeShow

Changes the currently open show. The show must already exist on disk.

Params

ShowName

STRING

Name of the show to switch to.

Example - Switch to an existing show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "ChangeShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "MyShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "ChangeShow",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
CreateShow [CALL]

CreateShow

Creates a new show and immediately switches to it. Also sets the project path from the provided argument.

Params

ShowName

STRING

Name of the new show.

Project

STRING

Path of the `.uproject` file of the linked Unreal project.

AutoPull

OPTIONAL

(default: false)

BOOLEAN

If `true`, the project will be pulled automatically on startup.

Push

OPTIONAL

(default: false)

BOOLEAN

If `true`, the project will be pushed after creation.

Example - Create a new show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "CreateShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "NewShow",
    "Project": "C:/Projects/MyProject/MyProject.uproject"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "CreateShow",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
CreateShowWithTemplate [CALL]

CreateShowWithTemplate

Same as `CreateShow` but also copies all files from the template project location to the target project location before switching.

Params

ShowName

STRING

Name of the new show.

Project

STRING

Destination folder path for the new project (becomes the linked project).

Template

STRING

Path of the `.uproject` file of the template project to copy from.

Move

OPTIONAL

(default: false)

BOOLEAN

If `true`, the template is moved instead of copied.

AutoPull

OPTIONAL

(default: false)

BOOLEAN

If `true`, the project will be pulled automatically on startup.

Push

OPTIONAL

(default: false)

BOOLEAN

If `true`, the project will be pushed after creation.

Example - Create a show from a template

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "CreateShowWithTemplate",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "NewShow",
    "Project": "C:/Projects/NewProject",
    "Template": "C:/Templates/BaseProject/BaseProject.uproject"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "CreateShowWithTemplate",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
RenameShow [CALL]

RenameShow

Renames an existing show on disk.

Params

ShowName

STRING

Current name of the show to rename.

NewShowName

STRING

New name for the show.

Example - Rename a show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "RenameShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "OldShow",
    "NewShowName": "RenamedShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "RenameShow",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
DuplicateShow [CALL]

DuplicateShow

Duplicates an existing show on disk, creating a copy with a new name.

Params

ShowName

STRING

Name of the show to duplicate.

Example - Duplicate a show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "DuplicateShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "MyShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "DuplicateShow",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
DeleteShow [CALL]

DeleteShow

This operation is irreversible. The show file will be permanently removed from disk.

Permanently deletes a show file from disk.

Params

ShowName

STRING

Name of the show to delete.

Example - Delete a show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "DeleteShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "OldShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "DeleteShow",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
GetStateForShow [CALL]

GetStateForShow

Returns the complete persisted state for a specific service and show. Useful when importing settings from another show. To read the current show's state, use a normal `Get` on `State.*`.

Params

ShowName

STRING

Name of the show to read state from.

Service

STRING

Name of the service whose state should be returned.

Result

Result

OBJECT

The full state object for the specified service and show.

Example - Get state for a specific show and service

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "GetStateForShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "MyShow",
    "Service": "Engine"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "GetStateForShow",
  "ID": "<ID>"
}
JSON
{
  "Result": {
    "State": {}
  }
}
GetAllStatesForShow [CALL]

GetAllStatesForShow

Returns the persisted state for all services in a specific show. Same as `GetStateForShow` but covers every service at once.

Params

ShowName

STRING

Name of the show to read all states from.

Result

Result

OBJECT

A map of service names to their full state objects.

Example - Get all states for a show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "GetAllStatesForShow",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "MyShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "GetAllStatesForShow",
  "ID": "<ID>"
}
JSON
{
  "Result": {
    "Engine": {
      "State": {}
    },
    "VideoIO": {
      "State": {}
    }
  }
}
GetAllStates [CALL]

GetAllStates

Same as `GetAllStatesForShow` but always uses the currently open show. No parameters required.

No params.



Result

Result

OBJECT

A map of service names to their full state objects for the current show.

Example - Get all states for the current show

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "GetAllStates",
  "ID": "<ID>"
}
JSON
{
  "Params": {}
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "GetAllStates",
  "ID": "<ID>"
}
JSON
{
  "Result": {
    "Engine": {
      "State": {}
    },
    "VideoIO": {
      "State": {}
    }
  }
}
GetShowFile [CALL]

GetShowFile

Returns the raw binary content of a show's database file (`.pxshow`).

Params

ShowName

STRING

Name of the show whose file should be returned.

Result

Result

OBJECT

The binary show file content as a Buffer.

Example - Get the raw show file

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "GetShowFile",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ShowName": "MyShow"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "GetShowFile",
  "ID": "<ID>"
}
{"Result":<binary buffer>}

Tracking

Endpoints for managing camera systems, routing tracking data, and routing video I/O.

AddCamera [CALL]

AddCamera

Creates a new camera system object in the database under a unique identifier using a fully provided `Camera` object. Prefer `AddDefaultCamera` when possible.

Params

ObjectState

OBJECT

The full `Camera` object describing the new camera system.

Result

Result

STRING

The unique ID assigned to the new camera entry.

Example - Add a camera with a custom state

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "AddCamera",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ObjectState": {
      "Name": "MyCamera",
      "Fingerprint": "abc123"
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "AddCamera",
  "ID": "<ID>"
}
JSON
{
  "Result": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
AddDefaultCamera [CALL]

AddDefaultCamera

Creates a new camera system in the database using default values derived from the `Name`. This is the most common way to create a camera.

Params

Name

STRING

Display name for the new camera system.

Fingerprint

STRING

Unique identifier of the owning service or machine.

Result

Result

STRING

The unique ID assigned to the new camera entry.

Example - Add a default camera

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "AddDefaultCamera",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Name": "Camera1",
    "Fingerprint": "machine1-cts"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "AddDefaultCamera",
  "ID": "<ID>"
}
JSON
{
  "Result": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
DuplicateCamera [CALL]

DuplicateCamera

Duplicates an existing camera system and assigns a new fingerprint to the copy.

Params

Camera

STRING

Name of the existing camera system to duplicate.

Fingerprint

STRING

Unique identifier of the new owner for the duplicated camera.

Result

Result

STRING

The unique ID of the newly created duplicate camera entry. Returns nothing if the source camera does not exist.

Example - Duplicate a camera

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "DuplicateCamera",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Camera": "Camera1",
    "Fingerprint": "machine2-cts"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "DuplicateCamera",
  "ID": "<ID>"
}
JSON
{
  "Result": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
}
DeleteCamera [CALL]

DeleteCamera

Removes a camera system object from the database.

Params

Camera

STRING

Name of the camera system to remove.

Example - Delete a camera

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "DeleteCamera",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Camera": "Camera1"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "DeleteCamera",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
CreateObjectWithUniqueID [CALL]

CreateObjectWithUniqueID

Creates an object at the given state path under a new unique identifier. Used internally (for example by `AddCamera`); prefer higher-level calls when available.

Params

Position

STRING

Dot-notation path in the state tree where the object should be created.

ObjectState

OBJECT

The object to store under the generated unique ID.

Result

Result

STRING

The generated unique ID under which the object was stored.

Example - Create an object at a custom path

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "CreateObjectWithUniqueID",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Position": "State.Cameras",
    "ObjectState": {
      "Name": "MyObject"
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "CreateObjectWithUniqueID",
  "ID": "<ID>"
}
JSON
{
  "Result": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}
RouteTracking [CALL]

RouteTracking

Routes a tracking chain to a specific computer by IP address, activating live tracking data flow for that chain.

Params

Chain

STRING

Identifier of the tracking chain to route.

ComputerName

STRING

Name of the target computer.

IP

STRING

IP address of the target computer.

Example - Route a tracking chain

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "RouteTracking",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Chain": "Chain1",
    "ComputerName": "RenderMachine1",
    "IP": "192.168.1.10"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "RouteTracking",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
DerouteTracking [CALL]

DerouteTracking

Removes a tracking route for a chain on a specific computer, stopping the live tracking data flow.

Params

Chain

STRING

Identifier of the tracking chain to deroute.

ComputerName

STRING

Name of the computer from which to remove the route.

Example - Deroute a tracking chain

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "DerouteTracking",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Chain": "Chain1",
    "ComputerName": "RenderMachine1"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "DerouteTracking",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
RouteVideoIO [CALL]

RouteVideoIO

Configures a video I/O routing entry for a specific computer and I/O channel.

Params

ComputerName

STRING

Name of the target computer.

Name

STRING

Name of the I/O channel or device.

IOType

STRING

Type of I/O (e.g. `"AJA"`, `"BMD"`, `"NDI"`, `"File"`).

Camera

OPTIONAL
STRING

Optional camera name to associate with this routing entry.

InputType

OPTIONAL
STRING

Optional input type override.

Video

OPTIONAL
OBJECT

Optional video configuration parameters.

IsSharedFrame

OPTIONAL

(default: false)

BOOLEAN

Whether this uses a shared frame buffer.

CustomID

OPTIONAL
STRING

Custom routing ID to use instead of a generated one.

Result

Result

STRING

The routing ID assigned to this video I/O entry.

Example - Route a video I/O channel

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "RouteVideoIO",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ComputerName": "RenderMachine1",
    "Name": "Input1",
    "IOType": "AJA"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "RouteVideoIO",
  "ID": "<ID>"
}
JSON
{
  "Result": "d4e5f6a7-b8c9-0123-defa-234567890123"
}
RouteCameraSystem [CALL]

RouteCameraSystem

Sets up a complete camera system route, combining tracking and video I/O routing in a single call.

Params

ComputerName

STRING

Name of the target computer.

Name

STRING

Name of the I/O channel or device.

Camera

STRING

Name of the camera system to route.

IOType

STRING

Type of I/O (e.g. `"AJA"`, `"BMD"`, `"NDI"`, `"File"`).

IP

STRING

IP address of the target computer (used for tracking routing).

InputType

OPTIONAL
STRING

Optional input type override.

Video

OPTIONAL
OBJECT

Optional video configuration parameters.

ChainPort

OPTIONAL
NUMBER

Optional tracking chain port override.

Result

RoutingID

STRING

The routing ID assigned to the video I/O entry for this camera system.

Example - Route a full camera system

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "RouteCameraSystem",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "ComputerName": "RenderMachine1",
    "Name": "Input1",
    "Camera": "Camera1",
    "IOType": "AJA",
    "IP": "192.168.1.10"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "RouteCameraSystem",
  "ID": "<ID>"
}
JSON
{
  "Result": {
    "RoutingID": "e5f6a7b8-c9d0-1234-efab-345678901234"
  }
}

Utility

Miscellaneous Store management endpoints for service lifecycle, color assignment, camera sets, and bulk state operations.

RegisterServiceShutdown [CALL]

RegisterServiceShutdown

Notifies the Store that a service is shutting down, removing it from the connected clients list.

Params

Service

STRING

Name of the service that is shutting down.

Example - Notify Store of a service shutdown

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "RegisterServiceShutdown",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Service": "Machine1-VideoIO"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "RegisterServiceShutdown",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
GetMachineDefaultColor [CALL]

GetMachineDefaultColor

Returns the default display color for a machine. The color is deterministic per machine name and is stored in the database for consistency across sessions.

Params

Machine

STRING

Name of the machine.

IsServer

BOOLEAN

Whether the machine is acting as a server.

Result

Result

STRING

A hex color string (e.g. `"#FF5733"`) representing the machine's default color.

Example - Get the default color for a machine

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "GetMachineDefaultColor",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Machine": "RenderMachine1",
    "IsServer": false
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "GetMachineDefaultColor",
  "ID": "<ID>"
}
JSON
{
  "Result": "#3A86FF"
}
AddCameraType [CALL]

AddCameraType

Adds a custom camera type to the current show. Show-specific camera types are merged with the built-in defaults when returned by the `CameraTypes` Get endpoint.

Params

Id

STRING

Unique identifier string for the new camera type.

Label

STRING

Human-readable display label.

CameraName

STRING

Internal camera model name.

Width

NUMBER

Sensor width in mm.

Height

NUMBER

Sensor height in mm.

Example - Add a custom camera type

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "AddCameraType",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Id": "custom_35mm",
    "Label": "Custom 35mm",
    "CameraName": "Custom35",
    "Width": "35.0",
    "Height": "24.0"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "AddCameraType",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
ExportShowToString [CALL]

ExportShowToString

Exports the show database file to a human-readable `.txt` file on disk. The file is written to an `Exports` folder next to the show files. If no `Name` is provided, the current show is used.

Params

Name

OPTIONAL
STRING

Name of the show to export. Defaults to the currently open show.

Example - Export the current show to a text file

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "ExportShowToString",
  "ID": "<ID>"
}
JSON
{
  "Params": {}
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "ExportShowToString",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
ImportShowFromString [CALL]

ImportShowFromString

Imports a show database from a `.txt` file previously created by `ExportShowToString`. Reads the file from the `Exports` folder next to the show files. If no `Name` is provided, the current show is used.

Params

Name

OPTIONAL
STRING

Name of the show to import. Defaults to the currently open show.

Example - Import a show from a text file

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "ImportShowFromString",
  "ID": "<ID>"
}
JSON
{
  "Params": {}
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "ImportShowFromString",
  "ID": "<ID>"
}
JSON
{
  "Result": null
}
ChangeNumberStateValue [CALL]

ChangeNumberStateValue

Applies a delta to a numeric state value, incrementing or decrementing it by the given amount. The new value is broadcast and returned.

Params

Name

STRING

Dot-notation path to the numeric state variable (e.g. `"State.Camera.Zoom"`).

Value

NUMBER

The delta to apply (positive to increment, negative to decrement).

Result

Result

NUMBER

The new value after the delta has been applied.

Example - Increment a numeric state value by 5

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "ChangeNumberStateValue",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "Name": "State.Camera.Zoom",
    "Value": 5
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "ChangeNumberStateValue",
  "ID": "<ID>"
}
JSON
{
  "Result": 15
}
SetStateBulk [CALL]

SetStateBulk

Replaces the Store state in bulk with a provided state object and optional version tag. Used for state synchronisation between machines.

Params

State

OBJECT

The state object to apply.

Version

OPTIONAL
STRING

Optional version tag for the state snapshot.

Result

Success

BOOLEAN

Always `true` when the bulk state update is accepted.

Example - Apply a bulk state update

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "Store",
  "RespondTo": "<Service>",
  "Method": "SetStateBulk",
  "ID": "<ID>"
}
JSON
{
  "Params": {
    "State": {
      "State": {}
    },
    "Version": "24.1.0"
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "<Service>",
  "ExecutedOn": "Store",
  "Method": "SetStateBulk",
  "ID": "<ID>"
}
JSON
{
  "Result": {
    "Success": true
  }
}