integrations

Get Internal Integration Camera Stream

get/internal/integrations/{integration_id}/cameras/{device_id}/stream

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/internal/integrations/{integration_id}/cameras/{device_id}/stream
  • Auth
    API key in header X-API-Key

Path parameters

integration_idstring required
device_idstring required

Response

Successful Response

urlstring required

Short-lived HLS playlist URL for this camera. CONTAINS A CREDENTIAL (the provider's streaming token, as a query parameter) — internal callers only. Never log it and never surface it to an operator.

expires_atstring date-time required

UTC instant at which the embedded credential expires. The caller must obtain a fresh grant before this; the value is the token's real expiry, so a grant issued from a cached token reports the time remaining on that token rather than a full TTL.

transportstring nullable

How the bridge pulls. Absent = url (ffmpeg opens url). avertx_osp: url is the recorder's AvertX relay base URL and the bridge speaks the recorder's OSP WebSocket using cookies and stream_token.

cookiesobject nullable

AvertX only. The recorder relay session cookies. A LIVE CREDENTIAL, exactly like url for Verkada: never log it.

stream_tokenstring nullable

AvertX only. The per-camera OSP stream token (StartStream authToken). A LIVE CREDENTIAL.

stream_namestring nullable

AvertX only. The recorder stream to request (its logicalName); low is the 720x480 H.264 sub-stream.

camera_idstring nullable

AvertX only. The recorder-side camera UUID (the OSP cameraId); the second half of the device id.

Example response

{
  "url": "https://api.verkada.com/stream/cameras/v1/footage/stream/stream.m3u8?org_id=...&camera_id=...&jwt=...",
  "expires_at": "2026-09-02T18:31:07Z",
  "transport": "avertx_osp",
  "stream_name": "low"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.