---
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

## Changes

- **2026-06-26** `fd7251637ba9` — 1 info
  - endpoint added
- **2026-01-21** `b21cd7605630` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema/changes/xrpc/place.stream.vod.publishDraft/post.md)

---

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