Skip to main content

Recordings API

Recordings endpoints exposed by the Devotel CPaaS API Base path: /api/v1 Endpoint count: 19

Public call-recording share

GET /api/v1/public/recordings/{token}
Streams a shared call recording from a signed, rate-limited share token. No authentication; returns 404 when the link is expired or invalid.
string
required

List recording highlight clips

GET /api/v1/recordings/{id}/clips
List a recording’s highlight clips, newest first. Each clip includes its label, [start_ms, end_ms] window, derived duration_ms, and the media_fragment for player seeking. Requires the voice:read (or voice:write) scope.
string
required
Recording id whose clips to list.

List recording highlight moments

GET /api/v1/recordings/{id}/highlights
List the current proposed highlight moments for a recording, ranked by salience. Each moment carries its kind, label, [start_ms, end_ms] window, derived duration_ms, and the media_fragment (#t=<start>,<end>) the player appends to the recording’s playback URL to seek to the moment. Run detect first to populate the set. Requires the voice:read (or voice:write) scope.
string
required
Recording id whose highlight moments to list.

Get recording integrity seal

GET /api/v1/recordings/{id}/integrity
Return the recording’s cryptographic-integrity seal (content hash, hash-chain link, and KMS/BYOK key metadata), or sealed: false when the recording has not been sealed yet. Requires the voice:read scope.
string
required
Recording id whose integrity seal is requested.

Export signed recording integrity digest

GET /api/v1/recordings/{id}/integrity/export-digest
Return a portable, HMAC-signed provenance digest a customer ships alongside an exported recording so an auditor can verify provenance offline. The recording must already be sealed. Requires the voice:read scope.
string
required
Recording id to export a signed digest for.

Verify recording integrity seal

GET /api/v1/recordings/{id}/integrity/verify
Re-hash the stored seal and report whether the recording’s bytes and key metadata are intact (valid), including the expected versus stored chain hash. Requires the voice:read scope.
string
required
Recording id to verify.

GET /api/v1/recordings/{id}/legal-hold
Return the current eDiscovery legal-hold state for one recording (held flag, operator-supplied reason, and who/when it last changed). While a recording is held it is exempt from the age-based retention sweeps so it survives litigation-preservation obligations. Requires the voice:read scope.
string
required
Recording id whose legal-hold state is requested.

List recording visual-redaction regions

GET /api/v1/recordings/{id}/visual-redactions
List a video-room recording’s visual-redaction regions, newest first. Each region includes its normalised bbox, [start_ms, end_ms] window, derived duration_ms, effect, source, and provenance. A playback widget or export pipeline reads these to apply the blur. Requires the voice:read (or voice:write) scope.
string
required
Recording id whose redaction regions to list.

Create recording highlight clip

POST /api/v1/recordings/{id}/clips
Cut a named highlight clip out of a completed recording (call or video-room) by picking a [start_ms, end_ms] window. The clip is a lightweight pointer at the existing media — no re-encode, no second file — and is returned with a W3C Media Fragments URI (#t=<start>,<end>) the player appends to the recording’s playback URL to seek straight to the segment. The window is clamped to the recording’s duration and must be at least 500ms; up to 50 clips per recording. Requires the voice:write scope and is audit-logged.
string
required
Recording id to cut the clip from.
string
required
Human-readable name for the clip.
integer
required
Clip start offset in milliseconds from the recording start.
integer
required
Clip end offset in milliseconds. Must be greater than start_ms and at least 500ms beyond it.

Promote highlight moment to clip

POST /api/v1/recordings/{id}/highlights/{momentId}/clip
Promote a proposed highlight moment into a real highlight clip on the recording, carrying the moment’s [start_ms, end_ms] window over to the clip. Optionally override the clip label; otherwise the moment’s own label is used. Subject to the same per-recording clip limit as manual clips. Requires the voice:write scope and is audit-logged.
string
required
Recording id the highlight moment belongs to.
string
required
Id of the highlight moment to promote.
string
Optional label for the created clip. Defaults to the highlight moment’s own label when omitted.

Detect recording highlight moments

POST /api/v1/recordings/{id}/highlights/detect
Scan a completed recording’s speaker-diarized transcript and (re)generate the proposed set of highlight moments — questions, action items, sentiment peaks, and speaker changes — each scored for salience and carrying a ready-to-use [start_ms, end_ms] window plus the media_fragment (#t=<start>,<end>) for player seeking. Re-running replaces the previous proposals; no clip is created until a moment is promoted. Requires the voice:write scope and is audit-logged.
string
required
Recording id whose transcript to analyze. Must be a completed, transcribed recording.

Seal recording integrity

POST /api/v1/recordings/{id}/integrity/seal
Compute and persist the tamper-evident seal for the recording, chaining it into this tenant’s recording-integrity hash chain and stamping the tenant’s BYOK/KMS posture. Compliance-governance action: requires the voice:write scope and an owner or admin role, and is audit-logged.
string
required
Recording id to seal.
string
SHA-256 hex of the recorded media bytes. Optional — defaults to the egress-stamped metadata.content_sha256.
string
Symmetric algorithm the bytes are encrypted under at rest.

POST /api/v1/recordings/{id}/share
Mint a time-limited, signed public link for a completed video-room recording so a guest with no Orbit account can watch it. The requested lifetime is clamped server-side to between 5 minutes and 30 days (7-day default). Requires the video:write scope and is audit-logged.
string
required
Recording id to mint a share link for.
integer
Requested link lifetime in seconds. Clamped server-side to the [5 minutes, 30 days] range; omitted defaults to 7 days.

Add recording visual-redaction regions

POST /api/v1/recordings/{id}/visual-redactions
Add one or more spatiotemporal visual-redaction regions to a completed video-room recording so a player overlay or an export pipeline can blur/pixelate a face or on-camera PII (a badge, a document, a whiteboard). Each region is a normalised bounding box ({ x, y, w, h } as fractions of the frame, so it is resolution-independent) that applies over a [start_ms, end_ms] window with a visual effect and a provenance source. Submit a single box or a whole face-detection track (up to 200 regions per request). Boxes and windows are clamped to the frame and the recording’s duration; each window must be at least 100ms. Up to 500 regions per recording. Requires the voice:write scope and is audit-logged.
string
required
Recording id to add the redaction region(s) to. Must be a completed video_room recording with stored media.
object[]
required
One or more redaction regions to add. All-or-nothing — the whole request is rejected if any region is invalid.

PUT /api/v1/recordings/{id}/legal-hold
Place or release an eDiscovery legal hold on a recording. While held, the recording (and its linked video-room session artefacts) is exempt from the age-based retention sweeps. Compliance-governance action: requires the voice:write scope and an owner or admin role, and is audit-logged.
string
required
Recording id to place or release a hold on.
boolean
required
True to place a hold, false to release it.
string
Optional operator-supplied justification for the change.

Delete recording highlight clip

DELETE /api/v1/recordings/{id}/clips/{clipId}
Delete a single highlight clip from a recording. The clip is just a pointer, so the parent recording’s media is left untouched. Requires the voice:write scope and is audit-logged.
string
required
Recording id the clip belongs to.
string
required
Id of the clip to delete.

Dismiss recording highlight moment

DELETE /api/v1/recordings/{id}/highlights/{momentId}
Dismiss a proposed highlight moment so it no longer appears in the recording’s highlight list. The recording’s media and any already-promoted clips are left untouched. Requires the voice:write scope and is audit-logged.
string
required
Recording id the highlight moment belongs to.
string
required
Id of the highlight moment to dismiss.

DELETE /api/v1/recordings/{id}/share
Revoke every outstanding share link for the recording by rotating its share nonce. New links can be minted afterwards; previously-shared URLs stop resolving. Requires the video:write scope and is audit-logged.
string
required
Recording id whose share links should be revoked.

Delete recording visual-redaction region

DELETE /api/v1/recordings/{id}/visual-redactions/{regionId}
Delete a single visual-redaction region from a video-room recording. The parent recording’s media is left untouched — only the redaction definition is removed. Requires the voice:write scope and is audit-logged.
string
required
Recording id the redaction region belongs to.
string
required
Id of the redaction region to delete.