Sentry VisionVSaaS

Documentation

Getting cameras online, the management API, and exactly what an evidence export contains.

Network requirements

Cameras dial out. There is nothing to forward, nothing to expose and no VPN to maintain.

DirectionDestinationPortPurpose
outboundingest-*.at-mirror-01.tabserv.link443/tcpmedia and control
outboundtime.at-mirror-01.tabserv.link123/udpNTP
outboundfw.at-mirror-01.tabserv.link443/tcpfirmware
Budget 2.2 Mbit/s of sustained uplink per 1080p camera — the extra 10% covers retransmission and the low-rate live view stream. The console will refuse to enrol a camera that would push a site past its configured ceiling.

Onboarding cameras

bash
# claim a camera by serial, assign it to a site
sv cameras claim --serial K7B-4192-8831 --site warehouse-04 \
  --profile continuous-1080p15

# verify it is recording
sv cameras status --site warehouse-04 --watch

Completeness

Every camera reports which minutes it holds and which it has shipped. The difference is the backfill queue, and it is visible to you, not just to us.

json
{
  "camera": "cam_8831",
  "day": "2026-08-03",
  "minutes_expected": 1440,
  "minutes_stored": 1440,
  "minutes_pending": 0,
  "completeness": 1.0
}

Access control

Roles are scoped to sites and to camera groups. Viewing is logged with the same rigour as export — an operator who scrubbed through an hour of footage leaves a record of it.

API

MethodPathPurpose
GET/v2/cameraslist with health and completeness
GET/v2/cameras/{id}/timelinestored ranges
POST/v2/exportsrequest an evidence export
GET/v2/exports/{id}status and download URL
POST/v2/searchcross-site metadata query
GET/v2/auditaccess log, exportable

Export format

A signed ZIP containing the media, a manifest and the access log.

  • media/ — fragmented MP4 segments, unaltered
  • manifest.json — per-segment SHA-256 and a Merkle root
  • timestamp.tsr — RFC 3161 token over the Merkle root
  • access.csv — every view and export touching this range
  • verify.sh — offline verification, no network needed
Re-encoding an export invalidates the hash chain. If a prosecutor needs a different container, export again with the container you need rather than converting the file.