Replaces the whole scene timeline. Send a bare JSON array or wrap it as
{ "presentationScenes": [ ... ] } ({ "scenes": [ ... ] } is
accepted too).
Every scene is validated against the end of the transcript, or the
source duration when there is none: a scene outside that window is
clamped, and one that ends at or before it starts is dropped. Scenes
are stored sorted by startMs. A video with neither a transcript nor a
known duration cannot place scene timings and is refused with 409
warning-source-not-ready.
Only presentation videos have this timeline; anything else is 409
wrong-video-type.
Authorization
bearerAuth An API key created under Settings > API & Webhooks. Keys start with sf_live_.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
One beat of a presentation timeline. startMs and endMs are clamped
to the video timeline on save, and a scene that ends at or before it
starts is dropped.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/videos/string/presentation-scenes" \ -H "Content-Type: application/json" \ -d '{ "presentationScenes": [ { "id": "s1a2b3", "startMs": 0, "endMs": 3200, "text": "Ship your first video in under a minute", "template": "heroTitle", "tone": "light" }, { "id": "s4d5e6", "startMs": 3200, "endMs": 7400, "text": "Three steps, no editing timeline", "template": "flowSteps", "tone": "accent" } ] }'{ "data": [ { "id": "string", "startMs": 0, "endMs": 0, "text": "string", "emphasis": "string", "template": "string", "tone": "light", "caption": "show", "hidden": true, "visual": { "type": "string", "items": 1, "anchors": [ "string" ] }, "content": {}, "params": {}, "direction": {}, "composed": {} } ]}Replace the transcript, the pages, or both PUT
Send `captions`, `captionsPages` or both. Whichever half you send is replaced wholesale; the other is left untouched. Caption pages carry editor decorations (an emoji, a sound effect) that this API does not accept, so an incoming page is layered over the stored page with the same `id`, keeping those decorations. A page whose id is unknown is treated as new. Ids are minted when absent. Caps per request: 6000 caption words, 2000 pages. `endMs` must be at or after `startMs` on every item.
Reset the theme config DELETE
Replaces the stored config with the editor defaults and returns them.