Editor
POST
/videos/{id}/scenes/{sceneId}/image

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

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

In: header

Path Parameters

id*string
sceneId*string

The scene's id, as returned in the scenes array.

Header Parameters

Idempotency-Key?string

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.

Lengthlength <= 255

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