Skip to content

place.stream.media.finalizeLivestream

Lexicon Version: 1

Type: procedure

Turn a finished livestream into a VOD. The server concatenates the MUXL segments it recorded for the livestream into a single content blob, derives the playback sidecars, and publishes the place.stream.media.track records. Processing completes server-side and creates a draft VOD; the client does not need to poll or publish — the user publishes the draft later via place.stream.vod.publishDraft. Returns the draft’s ats:// URI so the client can navigate to it, alongside an uploadId for backwards compatibility.

Parameters: (None defined)

Input:

  • Encoding: application/json
  • Schema:

Schema Type: object

NameTypeReq’dDescriptionConstraints
livestreamstringAT-URI of the place.stream.livestream record to finalize into a VOD. Must belong to the authenticated user.Format: at-uri

Output:

  • Encoding: application/json
  • Schema:

Schema Type: object

NameTypeReq’dDescriptionConstraints
uploadIdstringIdentifier for the finalize job. Retained for backwards compatibility; the draft flow no longer requires the client to poll getUploadStatus.
draftUristringThe ats:// URI of the draft VOD created for this finalize. The draft reaches status ‘ready’ when processing completes; the user publishes it from the Drafts tab via place.stream.vod.publishDraft.

Possible Errors:

  • LivestreamNotFound: No livestream with the given URI is known, or it does not belong to the authenticated user.
  • NoRecording: The livestream has no recorded MUXL segments to finalize (recording was not enabled, or none completed).

{
"lexicon": 1,
"id": "place.stream.media.finalizeLivestream",
"defs": {
"main": {
"type": "procedure",
"description": "Turn a finished livestream into a VOD. The server concatenates the MUXL segments it recorded for the livestream into a single content blob, derives the playback sidecars, and publishes the place.stream.media.track records. Processing completes server-side and creates a draft VOD; the client does not need to poll or publish — the user publishes the draft later via place.stream.vod.publishDraft. Returns the draft's ats:// URI so the client can navigate to it, alongside an uploadId for backwards compatibility.",
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["livestream"],
"properties": {
"livestream": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the place.stream.livestream record to finalize into a VOD. Must belong to the authenticated user."
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["uploadId", "draftUri"],
"properties": {
"uploadId": {
"type": "string",
"description": "Identifier for the finalize job. Retained for backwards compatibility; the draft flow no longer requires the client to poll getUploadStatus."
},
"draftUri": {
"type": "string",
"description": "The ats:// URI of the draft VOD created for this finalize. The draft reaches status 'ready' when processing completes; the user publishes it from the Drafts tab via place.stream.vod.publishDraft."
}
}
}
},
"errors": [
{
"name": "LivestreamNotFound",
"description": "No livestream with the given URI is known, or it does not belong to the authenticated user."
},
{
"name": "NoRecording",
"description": "The livestream has no recorded MUXL segments to finalize (recording was not enabled, or none completed)."
}
]
}
}
}