For the complete documentation index, see llms.txt. This page is also available as Markdown.

Replay Servers

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
statusstring · enumOptional

Filter by status

Possible values:
areaIdstringOptional

Filter by area ID

pagenumberOptionalExample: 1
ippnumberOptionalExample: 10
Responses
200

Returns a list of replay servers

application/json
get/replay-servers
GET /apis/v2/replay-servers HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns a list of replay servers

{
  "items": [
    {
      "id": "text",
      "_links": {
        "self": {
          "href": "text"
        }
      },
      "deviceId": "text",
      "hostname": "text",
      "version": "text",
      "displayName": "text",
      "status": "PENDING",
      "area": {
        "id": "text"
      },
      "approvedDate": "2026-01-01T00:00:00.000Z",
      "approvedByUser": {
        "id": "text"
      },
      "lastSeenDate": "2026-01-01T00:00:00.000Z",
      "lastSeenIp": "text",
      "config": {
        "apiBaseUrl": "text",
        "gcpStorageBucket": "text",
        "logoPath": "text",
        "logoPlacement": "bottom-right",
        "gcpCredentialsPath": "text",
        "postrollPath": "text",
        "cleanupEnabled": true,
        "cameras": [
          {
            "id": "text",
            "name": "text",
            "feed": "text",
            "feed2": "text",
            "isEnabled": true,
            "videoCodec": "h264",
            "audioCodec": "aac",
            "distortion1": 1,
            "distortion2": 1,
            "rotation": 1,
            "scale": 1,
            "vignette": 1,
            "lutPath": "text"
          }
        ]
      },
      "targetVersion": "text",
      "serverUrl": "text",
      "localIp": "text",
      "createdDate": "2026-01-01T00:00:00.000Z",
      "errors": [
        {
          "code": "text",
          "message": "text",
          "details": {}
        }
      ]
    }
  ],
  "_pagination": {
    "page": 1,
    "ipp": 1,
    "count": 1,
    "total": 1
  },
  "_links": {
    "self": {
      "href": "text"
    }
  }
}
get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
200

Returns available software versions from GCS

application/json
get/replay-servers/available-versions
GET /apis/v2/replay-servers/available-versions HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns available software versions from GCS

{
  "versions": [
    {
      "version": "text"
    }
  ]
}
get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
200

List branding assets with signed URLs

application/json
get/replay-servers/branding-assets
GET /apis/v2/replay-servers/branding-assets HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

List branding assets with signed URLs

{
  "assets": [
    {
      "name": "text",
      "path": "text",
      "url": "text"
    }
  ]
}
post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
filestring · binaryRequired

File to upload

Responses
201

Uploaded branding asset

application/json
namestringRequired

File name

pathstringRequired

Full path in bucket

urlstringOptional

Signed URL for preview

post/replay-servers/branding-assets
POST /apis/v2/replay-servers/branding-assets HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17

{
  "file": "binary"
}
201

Uploaded branding asset

{
  "name": "text",
  "path": "text",
  "url": "text"
}
patch
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Body
versionstringOptional

Target version for this replay server (empty string or null to clear)

Responses
200

Returns the updated replay server

application/json
idstringRequired

The unique identifier of the resource

deviceIdstringRead-onlyRequired

Unique device identifier

hostnamestringOptional

Device hostname

versionstringOptional

Software version running on the device

displayNamestringOptional

Display name for the server

statusstring · enumRead-onlyRequired

Status of the server

Possible values:
approvedDatestring · date-timeOptional

When the device was approved

lastSeenDatestring · date-timeOptional

When the device was last seen

lastSeenIpstringOptional

IP address of last request

targetVersionstringOptional

Target software version for this server

serverUrlstringOptional

External DDNS or URL where this server is reachable

localIpstringOptional

Local network IP address reported by the device

createdDatestring · date-timeRead-onlyRequired

When the server was created

patch/replay-servers/{serverId}/target-version
PATCH /apis/v2/replay-servers/{serverId}/target-version HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "version": "text"
}
200

Returns the updated replay server

{
  "id": "text",
  "_links": {
    "self": {
      "href": "text"
    }
  },
  "deviceId": "text",
  "hostname": "text",
  "version": "text",
  "displayName": "text",
  "status": "PENDING",
  "area": {
    "id": "text"
  },
  "approvedDate": "2026-01-01T00:00:00.000Z",
  "approvedByUser": {
    "id": "text"
  },
  "lastSeenDate": "2026-01-01T00:00:00.000Z",
  "lastSeenIp": "text",
  "config": {
    "apiBaseUrl": "text",
    "gcpStorageBucket": "text",
    "logoPath": "text",
    "logoPlacement": "bottom-right",
    "gcpCredentialsPath": "text",
    "postrollPath": "text",
    "cleanupEnabled": true,
    "cameras": [
      {
        "id": "text",
        "name": "text",
        "feed": "text",
        "feed2": "text",
        "isEnabled": true,
        "videoCodec": "h264",
        "audioCodec": "aac",
        "distortion1": 1,
        "distortion2": 1,
        "rotation": 1,
        "scale": 1,
        "vignette": 1,
        "lutPath": "text"
      }
    ]
  },
  "targetVersion": "text",
  "serverUrl": "text",
  "localIp": "text",
  "createdDate": "2026-01-01T00:00:00.000Z",
  "errors": [
    {
      "code": "text",
      "message": "text",
      "details": {}
    }
  ]
}
get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
200

Returns pending replay servers awaiting approval

application/json
get/replay-servers/pending
GET /apis/v2/replay-servers/pending HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns pending replay servers awaiting approval

{
  "items": [
    {
      "id": "text",
      "_links": {
        "self": {
          "href": "text"
        }
      },
      "deviceId": "text",
      "hostname": "text",
      "version": "text",
      "displayName": "text",
      "status": "PENDING",
      "area": {
        "id": "text"
      },
      "approvedDate": "2026-01-01T00:00:00.000Z",
      "approvedByUser": {
        "id": "text"
      },
      "lastSeenDate": "2026-01-01T00:00:00.000Z",
      "lastSeenIp": "text",
      "config": {
        "apiBaseUrl": "text",
        "gcpStorageBucket": "text",
        "logoPath": "text",
        "logoPlacement": "bottom-right",
        "gcpCredentialsPath": "text",
        "postrollPath": "text",
        "cleanupEnabled": true,
        "cameras": [
          {
            "id": "text",
            "name": "text",
            "feed": "text",
            "feed2": "text",
            "isEnabled": true,
            "videoCodec": "h264",
            "audioCodec": "aac",
            "distortion1": 1,
            "distortion2": 1,
            "rotation": 1,
            "scale": 1,
            "vignette": 1,
            "lutPath": "text"
          }
        ]
      },
      "targetVersion": "text",
      "serverUrl": "text",
      "localIp": "text",
      "createdDate": "2026-01-01T00:00:00.000Z",
      "errors": [
        {
          "code": "text",
          "message": "text",
          "details": {}
        }
      ]
    }
  ],
  "_pagination": {
    "page": 1,
    "ipp": 1,
    "count": 1,
    "total": 1
  },
  "_links": {
    "self": {
      "href": "text"
    }
  }
}
get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Returns health data from the device

No content

get/replay-servers/{serverId}/health
GET /apis/v2/replay-servers/{serverId}/health HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns health data from the device

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Query parameters
linesnumberOptional
Responses
200

Returns log lines from the device

No content

get/replay-servers/{serverId}/logs
GET /apis/v2/replay-servers/{serverId}/logs HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns log lines from the device

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Returns camera config from the device

No content

get/replay-servers/{serverId}/config
GET /apis/v2/replay-servers/{serverId}/config HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns camera config from the device

No content

patch
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Body
apiBaseUrlstringOptional

API base URL for pairing

gcpStorageBucketstringOptional

GCP storage bucket name

logoPathstringOptional

Path to logo overlay image

logoPlacementstring · enumOptional

Logo placement

Possible values:
gcpCredentialsPathstringOptional

Path to GCP credentials JSON file

postrollPathstringOptional

Path to postroll video file

cleanupEnabledbooleanOptional

Enable auto-cleanup of old chunks and clips

Responses
200

Returns the updated replay server

application/json
idstringRequired

The unique identifier of the resource

deviceIdstringRead-onlyRequired

Unique device identifier

hostnamestringOptional

Device hostname

versionstringOptional

Software version running on the device

displayNamestringOptional

Display name for the server

statusstring · enumRead-onlyRequired

Status of the server

Possible values:
approvedDatestring · date-timeOptional

When the device was approved

lastSeenDatestring · date-timeOptional

When the device was last seen

lastSeenIpstringOptional

IP address of last request

targetVersionstringOptional

Target software version for this server

serverUrlstringOptional

External DDNS or URL where this server is reachable

localIpstringOptional

Local network IP address reported by the device

createdDatestring · date-timeRead-onlyRequired

When the server was created

patch/replay-servers/{serverId}/config
PATCH /apis/v2/replay-servers/{serverId}/config HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 378

{
  "apiBaseUrl": "text",
  "gcpStorageBucket": "text",
  "logoPath": "text",
  "logoPlacement": "bottom-right",
  "gcpCredentialsPath": "text",
  "postrollPath": "text",
  "cleanupEnabled": true,
  "cameras": [
    {
      "id": "text",
      "name": "text",
      "feed": "text",
      "feed2": "text",
      "isEnabled": true,
      "videoCodec": "h264",
      "audioCodec": "aac",
      "distortion1": 1,
      "distortion2": 1,
      "rotation": 1,
      "scale": 1,
      "vignette": 1,
      "lutPath": "text"
    }
  ]
}
200

Returns the updated replay server

{
  "id": "text",
  "_links": {
    "self": {
      "href": "text"
    }
  },
  "deviceId": "text",
  "hostname": "text",
  "version": "text",
  "displayName": "text",
  "status": "PENDING",
  "area": {
    "id": "text"
  },
  "approvedDate": "2026-01-01T00:00:00.000Z",
  "approvedByUser": {
    "id": "text"
  },
  "lastSeenDate": "2026-01-01T00:00:00.000Z",
  "lastSeenIp": "text",
  "config": {
    "apiBaseUrl": "text",
    "gcpStorageBucket": "text",
    "logoPath": "text",
    "logoPlacement": "bottom-right",
    "gcpCredentialsPath": "text",
    "postrollPath": "text",
    "cleanupEnabled": true,
    "cameras": [
      {
        "id": "text",
        "name": "text",
        "feed": "text",
        "feed2": "text",
        "isEnabled": true,
        "videoCodec": "h264",
        "audioCodec": "aac",
        "distortion1": 1,
        "distortion2": 1,
        "rotation": 1,
        "scale": 1,
        "vignette": 1,
        "lutPath": "text"
      }
    ]
  },
  "targetVersion": "text",
  "serverUrl": "text",
  "localIp": "text",
  "createdDate": "2026-01-01T00:00:00.000Z",
  "errors": [
    {
      "code": "text",
      "message": "text",
      "details": {}
    }
  ]
}
get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Returns branding status from the device (what is currently downloaded)

No content

get/replay-servers/{serverId}/branding
GET /apis/v2/replay-servers/{serverId}/branding HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns branding status from the device (what is currently downloaded)

No content

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Returns the logo image currently on the device

No content

get/replay-servers/{serverId}/branding/logo
GET /apis/v2/replay-servers/{serverId}/branding/logo HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns the logo image currently on the device

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Returns the postroll video currently on the device

No content

get/replay-servers/{serverId}/branding/postroll
GET /apis/v2/replay-servers/{serverId}/branding/postroll HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns the postroll video currently on the device

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
cameraIdstringRequired
Responses
200

Returns branded instant replay video (with logo + postroll)

No content

get/replay-servers/{serverId}/instant-replay/{cameraId}/branded
GET /apis/v2/replay-servers/{serverId}/instant-replay/{cameraId}/branded HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns branded instant replay video (with logo + postroll)

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
cameraIdstringRequired
Responses
200

Returns instant replay video file

No content

get/replay-servers/{serverId}/instant-replay/{cameraId}
GET /apis/v2/replay-servers/{serverId}/instant-replay/{cameraId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns instant replay video file

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
cameraIdstringRequired
Responses
200

Returns snapshot image

No content

post/replay-servers/{serverId}/snapshot/{cameraId}
POST /apis/v2/replay-servers/{serverId}/snapshot/{cameraId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns snapshot image

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequired
Responses
200

Requests device service restart

No content

post/replay-servers/{serverId}/restart
POST /apis/v2/replay-servers/{serverId}/restart HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Requests device service restart

No content

get
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequiredExample: aa27a2ae-8235-426d-91ad-6e30cb494b2b
Responses
200

Returns a replay server

application/json
idstringRequired

The unique identifier of the resource

deviceIdstringRead-onlyRequired

Unique device identifier

hostnamestringOptional

Device hostname

versionstringOptional

Software version running on the device

displayNamestringOptional

Display name for the server

statusstring · enumRead-onlyRequired

Status of the server

Possible values:
approvedDatestring · date-timeOptional

When the device was approved

lastSeenDatestring · date-timeOptional

When the device was last seen

lastSeenIpstringOptional

IP address of last request

targetVersionstringOptional

Target software version for this server

serverUrlstringOptional

External DDNS or URL where this server is reachable

localIpstringOptional

Local network IP address reported by the device

createdDatestring · date-timeRead-onlyRequired

When the server was created

get/replay-servers/{serverId}
GET /apis/v2/replay-servers/{serverId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200

Returns a replay server

{
  "id": "text",
  "_links": {
    "self": {
      "href": "text"
    }
  },
  "deviceId": "text",
  "hostname": "text",
  "version": "text",
  "displayName": "text",
  "status": "PENDING",
  "area": {
    "id": "text"
  },
  "approvedDate": "2026-01-01T00:00:00.000Z",
  "approvedByUser": {
    "id": "text"
  },
  "lastSeenDate": "2026-01-01T00:00:00.000Z",
  "lastSeenIp": "text",
  "config": {
    "apiBaseUrl": "text",
    "gcpStorageBucket": "text",
    "logoPath": "text",
    "logoPlacement": "bottom-right",
    "gcpCredentialsPath": "text",
    "postrollPath": "text",
    "cleanupEnabled": true,
    "cameras": [
      {
        "id": "text",
        "name": "text",
        "feed": "text",
        "feed2": "text",
        "isEnabled": true,
        "videoCodec": "h264",
        "audioCodec": "aac",
        "distortion1": 1,
        "distortion2": 1,
        "rotation": 1,
        "scale": 1,
        "vignette": 1,
        "lutPath": "text"
      }
    ]
  },
  "targetVersion": "text",
  "serverUrl": "text",
  "localIp": "text",
  "createdDate": "2026-01-01T00:00:00.000Z",
  "errors": [
    {
      "code": "text",
      "message": "text",
      "details": {}
    }
  ]
}
delete
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
serverIdstringRequiredExample: aa27a2ae-8235-426d-91ad-6e30cb494b2b
Query parameters
permanentbooleanOptional

Permanently delete the server (only for REVOKED or PENDING)

Responses
200

Returns the revoked replay server

application/json
idstringRequired

The unique identifier of the resource

deviceIdstringRead-onlyRequired

Unique device identifier

hostnamestringOptional

Device hostname

versionstringOptional

Software version running on the device

displayNamestringOptional

Display name for the server

statusstring · enumRead-onlyRequired

Status of the server

Possible values:
approvedDatestring · date-timeOptional

When the device was approved

lastSeenDatestring · date-timeOptional

When the device was last seen

lastSeenIpstringOptional

IP address of last request

targetVersionstringOptional

Target software version for this server

serverUrlstringOptional

External DDNS or URL where this server is reachable

localIpstringOptional

Local network IP address reported by the device

createdDatestring · date-timeRead-onlyRequired

When the server was created

delete/replay-servers/{serverId}
DELETE /apis/v2/replay-servers/{serverId} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "text",
  "_links": {
    "self": {
      "href": "text"
    }
  },
  "deviceId": "text",
  "hostname": "text",
  "version": "text",
  "displayName": "text",
  "status": "PENDING",
  "area": {
    "id": "text"
  },
  "approvedDate": "2026-01-01T00:00:00.000Z",
  "approvedByUser": {
    "id": "text"
  },
  "lastSeenDate": "2026-01-01T00:00:00.000Z",
  "lastSeenIp": "text",
  "config": {
    "apiBaseUrl": "text",
    "gcpStorageBucket": "text",
    "logoPath": "text",
    "logoPlacement": "bottom-right",
    "gcpCredentialsPath": "text",
    "postrollPath": "text",
    "cleanupEnabled": true,
    "cameras": [
      {
        "id": "text",
        "name": "text",
        "feed": "text",
        "feed2": "text",
        "isEnabled": true,
        "videoCodec": "h264",
        "audioCodec": "aac",
        "distortion1": 1,
        "distortion2": 1,
        "rotation": 1,
        "scale": 1,
        "vignette": 1,
        "lutPath": "text"
      }
    ]
  },
  "targetVersion": "text",
  "serverUrl": "text",
  "localIp": "text",
  "createdDate": "2026-01-01T00:00:00.000Z",
  "errors": [
    {
      "code": "text",
      "message": "text",
      "details": {}
    }
  ]
}
post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
displayNamestringOptional

Optional display name for the server

Responses
201

Returns the approved replay server

application/json
idstringRequired

The unique identifier of the resource

deviceIdstringRead-onlyRequired

Unique device identifier

hostnamestringOptional

Device hostname

versionstringOptional

Software version running on the device

displayNamestringOptional

Display name for the server

statusstring · enumRead-onlyRequired

Status of the server

Possible values:
approvedDatestring · date-timeOptional

When the device was approved

lastSeenDatestring · date-timeOptional

When the device was last seen

lastSeenIpstringOptional

IP address of last request

targetVersionstringOptional

Target software version for this server

serverUrlstringOptional

External DDNS or URL where this server is reachable

localIpstringOptional

Local network IP address reported by the device

createdDatestring · date-timeRead-onlyRequired

When the server was created

post/replay-servers/approve
POST /apis/v2/replay-servers/approve HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 66

{
  "server": {
    "id": "text"
  },
  "area": {
    "id": "text"
  },
  "displayName": "text"
}
{
  "id": "text",
  "_links": {
    "self": {
      "href": "text"
    }
  },
  "deviceId": "text",
  "hostname": "text",
  "version": "text",
  "displayName": "text",
  "status": "PENDING",
  "area": {
    "id": "text"
  },
  "approvedDate": "2026-01-01T00:00:00.000Z",
  "approvedByUser": {
    "id": "text"
  },
  "lastSeenDate": "2026-01-01T00:00:00.000Z",
  "lastSeenIp": "text",
  "config": {
    "apiBaseUrl": "text",
    "gcpStorageBucket": "text",
    "logoPath": "text",
    "logoPlacement": "bottom-right",
    "gcpCredentialsPath": "text",
    "postrollPath": "text",
    "cleanupEnabled": true,
    "cameras": [
      {
        "id": "text",
        "name": "text",
        "feed": "text",
        "feed2": "text",
        "isEnabled": true,
        "videoCodec": "h264",
        "audioCodec": "aac",
        "distortion1": 1,
        "distortion2": 1,
        "rotation": 1,
        "scale": 1,
        "vignette": 1,
        "lutPath": "text"
      }
    ]
  },
  "targetVersion": "text",
  "serverUrl": "text",
  "localIp": "text",
  "createdDate": "2026-01-01T00:00:00.000Z",
  "errors": [
    {
      "code": "text",
      "message": "text",
      "details": {}
    }
  ]
}

Last updated

Was this helpful?