Editor
PUT
/videos/{id}/brolls

Replaces the whole b-roll timeline. Send a bare JSON array or wrap it as { "bRolls": [ ... ] }.

Only the brief fields travel on the wire: id, startMs, endMs, text, prompt, keywords and mediaType. The resolved media (the chosen file, its quality variants) and the editor styling (animation, transition, layout, scale, sound effect) are read-only, and are carried over from the stored segment with the same id. A segment whose id is unknown is new and starts with no media. Cap: 500 segments per request.

Changing what a segment should show does not re-fetch its media on its own: requeue generation with addBRolls: true for that.

Authorization

bearerAuth
AuthorizationBearer <token>

An API key created under Settings > API & Webhooks. Keys start with sf_live_.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Itemsitems <= 500
[index: integer]?

The writable half of a b-roll segment. Everything else on a segment is resolved by the pipeline and preserved by id.

Response Body

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/videos/string/brolls" \  -H "Content-Type: application/json" \  -d '{    "bRolls": [      {        "id": "b1a2b3",        "startMs": 0,        "endMs": 2400,        "prompt": "A tired founder at a desk late at night",        "mediaType": "ai_image"      },      {        "startMs": 2400,        "endMs": 5200,        "keywords": "unfinished notebook",        "mediaType": "stock_footage"      }    ]  }'
{  "data": [    {      "id": "string",      "startMs": 0,      "endMs": 0,      "text": "string",      "prompt": "string",      "keywords": "string",      "mediaType": "ai_image",      "url": "http://example.com",      "type": "string",      "qualityUrls": {},      "animation": "string",      "transition": "string",      "layout": "string",      "scale": 0,      "hidden": true,      "audioEffect": {}    }  ]}