Skip to content

Turn a finished livestream into a VOD. The server concatenates the MUXL segments it recorded for the livestream(s) into a single content blob, derives the playback sidecars, and publishes the place.stream.media.track records. By default it leaves a draft VOD the streamer publishes later via place.stream.vod.publishDraft; with publish set it publishes the place.stream.video record as soon as the VOD is finalized. The caller must be the streamer, or a moderator they have granted livestream.manage; every record is written with the streamer's session.

POST
/xrpc/place.stream.media.finalizeLivestream
object
livestream

AT-URI of the place.stream.livestream record to finalize into a VOD. Either this or livestreams is required.

string format: uri
livestreams

Several livestream records whose recordings make up one VOD: a streamer who started a new record mid-stream splits the recording across them. Recordings are concatenated in the records’ creation order, whatever order they are listed in. All must belong to one streamer.

Array<string>
title

Title of the video record; the first livestream’s title when empty.

string
<= 1000 characters
description

Description of the video record.

string
<= 10000 characters
publish

Publish the place.stream.video record as soon as the VOD is finalized, instead of leaving a draft.

boolean
endLivestream

Also end any of the livestream records that were never stopped, so the streamer’s page stops reading as live.

boolean

Success

object
uploadId
required

Identifier for the finalize job. Retained for backwards compatibility; the draft flow no longer requires the client to poll getUploadStatus.

string
draftUri

The ats:// URI of the draft VOD created for this finalize, when publish is not set. The draft reaches status ‘ready’ when processing completes.

string
livestreams

The livestream records the VOD is made of, in recording order.

Array<string>
objects

How many recorded objects will be concatenated.

integer
ended

Livestream records that are now ended (already, or by endLivestream).

Array<string>

Bad Request

object
error
required
One of:
string
message
required
string