Generates a new still for this scene and attaches it. Charges one image
generation. Pass prompt to use a different description for this run;
it is saved as the scene's imagePrompt. Without it the scene's stored
imagePrompt is used, and a scene with neither is a 400.
The scene's rendered clip and the stitched video are cleared, since both are now stale.
UGC videos (subType: ugc) reuse one character image across every
scene, so a per-scene regeneration does not apply and is refused with
409 warning-invalid-input.
Authorization
bearerAuth An API key created under Settings > API & Webhooks. Keys start with sf_live_.
In: header
Path Parameters
The scene's id, as returned in the scenes array.
Header Parameters
Unique key per action (a UUID works well). Reusing it replays the first response instead of running the action again, so a retry after a timeout can never generate, render, publish or charge twice.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/videos/string/scenes/string/image" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A founder closing a laptop at dawn, soft window light, shot on 35mm" }'{ "data": { "id": "n1a2b3", "imagePrompt": "A founder closing a laptop at dawn, soft window light, shot on 35mm", "animationPrompt": "Slow push in, dust in the light", "narration": "Most founders do not burn out from working too much.", "voiceDescription": "Calm, low, unhurried", "duration": 6, "status": "DRAFT", "imageUrl": "https://cdn.shortfast.com/uploads/scenes/n1a2b3-2.jpg", "videoUrl": null }}Get the theme config GET
The stored caption styling and presentation theme for this video. An empty object means the video has never been styled and renders with the editor defaults.
Replace the b-roll segments PUT
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.