Skip to main content

Camera streaming

Stream endpoints for live and recorded video.

Every path on this page is plugin-scoped: {pluginInstalledId} is the id of the module instance you are talking to, from Plugins. A deployment can run more than one instance of the same module, and the id is what tells them apart.

2 endpoints. Every one needs Authorization: Bearer <access token>; see Getting Started.

Permissions

The server authorises every call against the signed-in user's permission keys — the same keys the client is held to. For this module they are the Device* key family. See the Permission Keys reference.

Device snapshot get​

MethodPathWhat it does
POSTwitness-stream/plugins/{pluginInstalledId}/device-snapshot-getDevice snapshot get

POST witness-stream/plugins/{pluginInstalledId}/device-snapshot-get​

Device snapshot get.

Payload

Request body

{
"deviceID": {
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
},
"size": 42,
"snapshotFromTime": "2026-10-02T21:14:05Z"
}

Snapshots​

MethodPathWhat it does
POSTwitness-stream/plugins/{pluginInstalledId}/snapshotsDevice snapshot2 get

POST witness-stream/plugins/{pluginInstalledId}/snapshots​

Device snapshot2 get.

ParameterInRequiredType
sizequerynoint32
snapshotFromTimequerynodate-time
useCachequerynoboolean
Payload

Request body

{
"deviceAttributes": [
{
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"settingKey": "string",
"boolValue": true,
"doubleValue": 125.5,
"stringValue": "string"
}
],
"isNew": true,
"capabilities": [
42
],
"pluginAssociations": [
{
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
}
],
"pluginEntityItem": {
"pluginInstalledID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"pluginType": 42,
"remoteID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"properties": 42,
"orderIndex": 42
},
"deviceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"dateTimeCreated": "2026-10-02T21:14:05Z",
"dateTimeUpdated": "2026-10-02T21:14:05Z",
"deviceType": "string",
"isDeleted": true,
"isDisabled": true,
"name": "Example",
"pluginInstanceID": "3b7f5c2e-9a41-4d8b-bb0e-7c1a2d3e4f50",
"timeZone": "string"
}