Skip to content

Media and storage

GraphQL schema reference · API guide · SDKs

Clips, DVR recordings, VOD uploads and assets, storage artifacts, retention, and media placement.

Types used by more than one domain are on Shared types.

Fetch a single clip by its global ID.

clip(
id: ID!
): Clip

Returns: Clip (Clip)

Arguments

  • id: ID! — The global ID of the clip.

SDK

OperationTypeScriptGoPython
GetClipGetClipDocumentGetClipget_clip
clusterMediaConsent(
clusterId: ID!
): MediaCapacityConsentResult!

Returns: MediaCapacityConsentResult! (MediaCapacityConsentResult)

Arguments

  • clusterId: ID!

SDK

OperationTypeScriptGoPython
GetClusterMediaConsentGetClusterMediaConsentDocumentGetClusterMediaConsentget_cluster_media_consent
clusterMediaConsentChange(
clusterId: ID!
idempotencyKey: String!
): MediaCapacityConsentChangeResult!

Returns: MediaCapacityConsentChangeResult! (MediaCapacityConsentChangeResult)

Arguments

  • clusterId: ID!
  • idempotencyKey: String!

SDK

OperationTypeScriptGoPython
GetClusterMediaConsentChangeGetClusterMediaConsentChangeDocumentGetClusterMediaConsentChangeget_cluster_media_consent_change

Retrieve a single DVR chapter, including its finalized playbackId. Chapters are the saved parts of a recording, produced by the finalization queue as canonical .mkv VOD artifacts. The chapter mode is configured at the Stream level (Stream.dvrChapterMode) and snapshotted when the recording starts. Modes: - WINDOW_SIZED (default): sequential parts as long as the recording’s own live rewind window, from the recording’s start. - FIXED_INTERVAL: UTC-only buckets of intervalSeconds, anchored at unix epoch 0. A NONE recording keeps live rewind only and has no chapters.

dvrChapter(
dvrId: ID!
mode: DVRChapterMode
intervalSeconds: Int
startMs: Float!
endMs: Float!
): DVRChapter

Returns: DVRChapter (DVRChapter)

Arguments

  • dvrId: ID! — DVR recording identifier — accepts either DVRRequest.id (UUID) or DVRRequest.dvrHash.
  • mode: DVRChapterMode (DVRChapterMode) — Historical chapter mode; null defaults to the recording’s policy snapshot.
  • intervalSeconds: Int — Required for FIXED_INTERVAL mode.
  • startMs: Float! — UTC epoch milliseconds (start of range).
  • endMs: Float! — UTC epoch milliseconds (end of range, exclusive).

SDK

OperationTypeScriptGoPython
GetDVRChapterGetDVRChapterDocumentGetDVRChapterget_dvr_chapter

List chapters for a DVR recording. Paginated for unbounded artifact lifetime — default 200 per page, max 1000.

dvrChapters(
dvrId: ID!
mode: DVRChapterMode
intervalSeconds: Int
rangeStartMs: Float
rangeEndMs: Float
pageSize: Int
pageToken: String
): DVRChaptersPage

Returns: DVRChaptersPage (DVRChaptersPage)

Arguments

  • dvrId: ID! — DVR recording identifier — accepts either DVRRequest.id (UUID) or DVRRequest.dvrHash.
  • mode: DVRChapterMode (DVRChapterMode) — Restrict to chapters of this mode; null = all.
  • intervalSeconds: Int — Required when filtering by FIXED_INTERVAL.
  • rangeStartMs: Float — UTC epoch ms lower bound; 0 = no lower bound.
  • rangeEndMs: Float — UTC epoch ms upper bound; 0 = no upper bound.
  • pageSize: Int — Default 200. Max 1000.
  • pageToken: String — Keyset cursor from a previous page’s nextPageToken.

SDK

OperationTypeScriptGoPython
ListDVRChaptersListDVRChaptersDocumentListDVRChapterslist_dvr_chapters
mediaPlacementChange(
scope: MediaPlacementScopeInput!
idempotencyKey: String!
): MediaPlacementChangeResult!

Returns: MediaPlacementChangeResult! (MediaPlacementChangeResult)

Arguments

SDK

OperationTypeScriptGoPython
GetMediaPlacementChangeGetMediaPlacementChangeDocumentGetMediaPlacementChangeget_media_placement_change
mediaPlacementOptions(
scope: MediaPlacementScopeInput!
filter: MediaPlacementOptionsFilter
after: String
first: Int = 50
): MediaPlacementOptionsResult!

Returns: MediaPlacementOptionsResult! (MediaPlacementOptionsResult)

Arguments

SDK

OperationTypeScriptGoPython
GetMediaPlacementOptionsGetMediaPlacementOptionsDocumentGetMediaPlacementOptionsget_media_placement_options

Tenant-bound placement intent and actual enforcement progress.

mediaPlacementPolicy(
scope: MediaPlacementScopeInput!
): MediaPlacementPolicyResult!

Returns: MediaPlacementPolicyResult! (MediaPlacementPolicyResult)

Arguments

SDK

OperationTypeScriptGoPython
GetMediaPlacementPolicyGetMediaPlacementPolicyDocumentGetMediaPlacementPolicyget_media_placement_policy

Tenant-default retention policy + entitlement bounds + the value the cascade (per-asset override → tenant default → tier entitlement) would resolve to today. Used by the webapp’s “Storage retention defaults” panel to size sliders and explain the allowed range.

mediaRetentionPolicy: MediaRetentionPolicy!

Returns: MediaRetentionPolicy! (MediaRetentionPolicy)

SDK

OperationTypeScriptGoPython
GetMediaRetentionPolicyGetMediaRetentionPolicyDocumentGetMediaRetentionPolicyget_media_retention_policy

Read-only evaluation. Never claims ingest, reserves capacity, or starts a source pull.

previewMediaPlacement(
input: PreviewMediaPlacementInput!
): MediaPlacementPreviewResult!

Returns: MediaPlacementPreviewResult! (MediaPlacementPreviewResult)

Arguments

SDK

OperationTypeScriptGoPython
GetPreviewMediaPlacementGetPreviewMediaPlacementDocumentGetPreviewMediaPlacementget_preview_media_placement
reviewClusterMediaConsentChange(
input: ReviewMediaCapacityConsentInput!
): MediaPlacementReviewResult!

Returns: MediaPlacementReviewResult! (MediaPlacementReviewResult)

Arguments

SDK

OperationTypeScriptGoPython
GetReviewClusterMediaConsentChangeGetReviewClusterMediaConsentChangeDocumentGetReviewClusterMediaConsentChangeget_review_cluster_media_consent_change
reviewMediaPlacementChange(
input: ReviewMediaPlacementChangeInput!
): MediaPlacementReviewResult!

Returns: MediaPlacementReviewResult! (MediaPlacementReviewResult)

Arguments

SDK

OperationTypeScriptGoPython
GetReviewMediaPlacementChangeGetReviewMediaPlacementChangeDocumentGetReviewMediaPlacementChangeget_review_media_placement_change

Unified storage artifact browser for the account Storage page. Search, kind filters, stream scoping, sorting, and pagination are resolved server-side against the tenant artifact registry.

storageArtifactsConnection(
input: StorageArtifactsInput
): StorageArtifactsConnection!

Returns: StorageArtifactsConnection! (StorageArtifactsConnection)

Arguments

SDK

OperationTypeScriptGoPython
ListArtifactsListArtifactsDocumentListArtifactslist_artifacts

Fetch a single VOD asset by ID.

vodAsset(
id: ID!
): VodAsset

Returns: VodAsset (VodAsset)

Arguments

  • id: ID! — The VOD asset ID.

SDK

OperationTypeScriptGoPython
GetVodAssetGetVodAssetDocumentGetVodAssetget_vod_asset

Read server-authoritative state of an in-flight VOD upload session. Polling complement to the upload events of tenantEvents; intended for reload-recovery and agent workflows that need a request/response shape.

vodUploadStatus(
uploadId: ID!
): VodUploadStatusResult!

Returns: VodUploadStatusResult! (VodUploadStatusResult)

Arguments

  • uploadId: ID! — Upload session ID returned by createVodUpload.

SDK

OperationTypeScriptGoPython
GetVodUploadStatusGetVodUploadStatusDocumentGetVodUploadStatusget_vod_upload_status

Abort an in-progress VOD upload.

abortVodUpload(
uploadId: ID!
): AbortVodUploadResult!

Returns: AbortVodUploadResult! (AbortVodUploadResult)

Arguments

  • uploadId: ID! — The upload ID to abort.

SDK

OperationTypeScriptGoPython
AbortVodUploadAbortVodUploadDocumentAbortVodUploadabort_vod_upload
applyClusterMediaConsentChange(
input: ApplyMediaCapacityConsentInput!
): MediaCapacityConsentChangeResult!

Returns: MediaCapacityConsentChangeResult! (MediaCapacityConsentChangeResult)

Arguments

SDK

OperationTypeScriptGoPython
ApplyClusterMediaConsentChangeApplyClusterMediaConsentChangeDocumentApplyClusterMediaConsentChangeapply_cluster_media_consent_change

Atomically saves the requested verbs. Saved does not mean effective on every cell.

applyMediaPlacementChange(
input: ApplyMediaPlacementChangeInput!
): MediaPlacementChangeResult!

Returns: MediaPlacementChangeResult! (MediaPlacementChangeResult)

Arguments

SDK

OperationTypeScriptGoPython
ApplyMediaPlacementChangeApplyMediaPlacementChangeDocumentApplyMediaPlacementChangeapply_media_placement_change

Complete a VOD upload after all parts are uploaded. Triggers processing and thumbnail generation.

completeVodUpload(
input: CompleteVodUploadInput!
): CompleteVodUploadResult!

Returns: CompleteVodUploadResult! (CompleteVodUploadResult)

Arguments

SDK

OperationTypeScriptGoPython
CompleteVodUploadCompleteVodUploadDocumentCompleteVodUploadcomplete_vod_upload

Create a clip from a live or recorded stream. Clips are short video segments extracted from a stream.

createClip(
input: CreateClipInput!
): CreateClipResult!

Returns: CreateClipResult! (CreateClipResult)

Arguments

  • input: CreateClipInput! (CreateClipInput) — Clip configuration including time range.

SDK

OperationTypeScriptGoPython
CreateClipCreateClipDocumentCreateClipcreate_clip

Create a new VOD upload session. Returns presigned URLs for multipart upload.

createVodUpload(
input: CreateVodUploadInput!
): CreateVodUploadResult!

Returns: CreateVodUploadResult! (CreateVodUploadResult)

Arguments

SDK

OperationTypeScriptGoPython
CreateVodUploadCreateVodUploadDocumentCreateVodUploadcreate_vod_upload

Delete a clip.

deleteClip(
id: ID!
): DeleteClipResult!

Returns: DeleteClipResult! (DeleteClipResult)

Arguments

  • id: ID! — The clip ID to delete.

SDK

OperationTypeScriptGoPython
DeleteClipDeleteClipDocumentDeleteClipdelete_clip

Delete a DVR recording.

deleteDVR(
dvrHash: ID!
): DeleteDVRResult!

Returns: DeleteDVRResult! (DeleteDVRResult)

Arguments

  • dvrHash: ID! — The DVR hash to delete.

SDK

OperationTypeScriptGoPython
DeleteDVRDeleteDVRDocumentDeleteDVRdelete_dvr

Delete a VOD asset.

deleteVodAsset(
id: ID!
): DeleteVodAssetResult!

Returns: DeleteVodAssetResult! (DeleteVodAssetResult)

Arguments

  • id: ID! — The VOD asset ID to delete.

SDK

OperationTypeScriptGoPython
DeleteVodAssetDeleteVodAssetDocumentDeleteVodAssetdelete_vod_asset

Import a video from a public https or http URL as a VOD asset. The processing node reads the file from the URL and processes it like an upload; the asset reports PROCESSING until it is ready. Progress arrives as upload.created, upload.completed, and upload.ready or upload.failed events.

importVodAsset(
input: ImportVodAssetInput!
): ImportVodAssetResult!

Returns: ImportVodAssetResult! (ImportVodAssetResult)

Arguments

SDK

OperationTypeScriptGoPython
ImportVodAssetImportVodAssetDocumentImportVodAssetimport_vod_asset

Clear a per-asset retention override and recompute the horizon from the tenant default (or tier entitlement when no tenant default is set).

resetMediaRetentionOverride(
input: ResetMediaRetentionOverrideInput!
): UpdateMediaRetentionResult!

Returns: UpdateMediaRetentionResult! (UpdateMediaRetentionResult)

Arguments

SDK

OperationTypeScriptGoPython
ResetMediaRetentionOverrideResetMediaRetentionOverrideDocumentResetMediaRetentionOverridereset_media_retention_override

Set the tenant per-class retention default. targetType picks the asset class (VOD, DVR, or CLIP). days is in [0, tier cap] where 0 means “keep forever” — only honored on uncapped (paid) tiers; Free clamps to its cap at write time. clear: true NULLs the column so the tenant inherits the per-class system default (VOD: keep forever; DVR/clip: 30d). The tier cap is exposed via mediaRetentionPolicy.bounds.maxRecordingRetentionDays.

setMediaRetentionPolicy(
input: SetMediaRetentionPolicyInput!
): SetMediaRetentionPolicyResult!

Returns: SetMediaRetentionPolicyResult! (SetMediaRetentionPolicyResult)

Arguments

SDK

OperationTypeScriptGoPython
SetMediaRetentionPolicySetMediaRetentionPolicyDocumentSetMediaRetentionPolicyset_media_retention_policy

Write per-stream retention overrides for DVR and clip artifacts created on this stream. Unspecified input fields are left alone; passing -1 on a field clears the override (falls back to the tenant default). Values exceeding the tier cap are clamped at write time.

setStreamRetentionOverrides(
input: SetStreamRetentionOverridesInput!
): SetStreamRetentionOverridesResult!

Returns: SetStreamRetentionOverridesResult! (SetStreamRetentionOverridesResult)

Arguments

SDK

OperationTypeScriptGoPython
SetStreamRetentionOverridesSetStreamRetentionOverridesDocumentSetStreamRetentionOverridesset_stream_retention_overrides

Start DVR recording for a live stream. DVR creates one continuous archive session. Live seekback is bounded by the resolved DVR policy; archive playback uses virtual chapters.

startDVR(
streamId: ID!
): StartDVRResult!

Returns: StartDVRResult! (StartDVRResult)

Arguments

  • streamId: ID! — The stream ID to start DVR for (Stream.id, Relay global ID).

SDK

OperationTypeScriptGoPython
StartDVRStartDVRDocumentStartDVRstart_dvr

Stop DVR recording for a stream.

stopDVR(
dvrHash: ID!
): StopDVRResult!

Returns: StopDVRResult! (StopDVRResult)

Arguments

  • dvrHash: ID! — The DVR hash to stop.

SDK

OperationTypeScriptGoPython
StopDVRStopDVRDocumentStopDVRstop_dvr

Apply a per-asset retention override on a finalized DVR recording, clip, or VOD asset (set targetType accordingly). Override beats tenant default beats tier entitlement. Active assets are rejected — retention applies post-finalize.

updateMediaRetention(
input: UpdateMediaRetentionInput!
): UpdateMediaRetentionResult!

Returns: UpdateMediaRetentionResult! (UpdateMediaRetentionResult)

Arguments

SDK

OperationTypeScriptGoPython
UpdateMediaRetentionUpdateMediaRetentionDocumentUpdateMediaRetentionupdate_media_retention