---
title: "Promote a ready draft VOD to a public place.stream.video record. The server carries over source and durationMs from the draft, backfills a generated thumbnail if the draft has none, writes the video record via putRecord, then deletes the draft."
method: POST
path: "/xrpc/place.stream.vod.publishDraft"
tags: ["place.stream.vod"]
---

# Promote a ready draft VOD to a public place.stream.video record. The server carries over source and durationMs from the draft, backfills a generated thumbnail if the draft has none, writes the video record via putRecord, then deletes the draft.

`POST /xrpc/place.stream.vod.publishDraft`

## Request body

- object
  - `uri` string, required — The ats:// URI of the draft to publish. Must have status 'ready'.

## Response `200`

Success

- object
  - `videoUri` string, uri, required — AT-URI of the created place.stream.video record.
  - `videoCid` string, cid, required — CID of the created place.stream.video record.

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/streamplace/apis/generated-lexicon-api-schema.md) · [All operations](https://skmtc.net/streamplace/apis/generated-lexicon-api-schema/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/streamplace/generated-lexicon-api-schema/versions/8e2ce7f5d85b/schema)
