Edits the parts of the brief that still mean something once a video
exists: title, aspectRatio, showSubtitles, description,
descriptionPrompt, scriptPrompt, prompt, subType,
targetDuration, characterImageUrl and characterDescription, plus
the generation choices voiceId, voiceProvider, videoDuration,
imageStyle, connectedBRolls, animateBRolls, animationQuality, bRollPace, backgroundMusic,
bRollTransitions and presenter.
scriptPrompt is what the script writer is briefed with on every later
variation, so re-briefing an automation is a PATCH here and does not
cost a generation the way POST /videos/{id}/script does. The
generation choices work the same way: every video made from this one is
generated with them, which is how an automation is reconfigured.
Any other brief field is generation-time only and is refused with a
400 naming it, rather than silently dropped. Editing does not requeue
anything: run POST /videos/{id}/process or
POST /videos/{id}/render afterwards if the change should be applied.
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.
The brief fields that can still be changed once a video exists. Any
other brief field is refused with a 400 naming it, rather than
silently dropped. Fields may be sent flat or nested under brief.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/videos/string" \ -H "Content-Type: application/json" \ -d '{ "title": "Why founders burn out (v2)", "showSubtitles": false }'{ "data": { "id": "string", "title": "string", "type": "faceless", "subType": "string", "isAutomation": true, "parentVideoId": "string", "isClip": true, "brief": { "prompt": "string", "text": "string", "scriptPrompt": "string", "description": "string", "descriptionPrompt": "string", "inputMode": "auto", "videoDuration": "subminute", "language": "string", "aspectRatio": "9:16", "imageStyle": "auto", "styleAuto": true, "connectedBRolls": true, "animateBRolls": true, "animationQuality": "normal", "bRollPace": "fast", "backgroundMusic": true, "bRollTransitions": true, "customStyleText": "string", "voiceId": "string", "voiceProvider": "openai", "showSubtitles": true, "presentationTone": null, "presentationAssets": [], "presenter": { "imageUrl": "http://example.com", "avatarId": "string", "name": "string", "placement": "first", "occurrences": 1 }, "targetDuration": 0, "characterImageUrl": "http://example.com", "characterDescription": "string" }, "mood": "energetic", "presentationMood": null, "durationSeconds": 0, "media": { "sourceUrl": "http://example.com", "audioUrl": "http://example.com", "captionsUrl": "http://example.com", "thumbnailUrl": "http://example.com", "renderUrl": "http://example.com", "bytes": 0 }, "process": { "status": "QUEUED", "progress": 0, "statusText": "string", "queuedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "error": { "code": "string", "message": "string", "blocked": true, "action": "upgrade", "reference": "string", "retryAt": "2019-08-24T14:15:22Z", "platform": "string" } }, "render": { "status": "QUEUED", "progress": 0, "queuedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "error": { "code": "string", "message": "string", "blocked": true, "action": "upgrade", "reference": "string", "retryAt": "2019-08-24T14:15:22Z", "platform": "string" } }, "publish": { "status": "SCHEDULED", "scheduledAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "publishedAt": "2019-08-24T14:15:22Z", "failedAt": "2019-08-24T14:15:22Z", "platforms": [ "string" ], "missingPlatforms": [ "string" ], "unhealthyPlatforms": [ "string" ], "caption": "string", "error": { "code": "string", "message": "string", "blocked": true, "action": "upgrade", "reference": "string", "retryAt": "2019-08-24T14:15:22Z", "platform": "string" }, "stats": { "checkedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "available": true, "totals": { "views": 0, "likes": 0, "comments": 0, "shares": 0 }, "platforms": [ { "views": 0, "likes": 0, "comments": 0, "shares": 0, "platform": "string", "status": "published", "url": "string", "error": "string" } ] } }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "config": { "captionsFontFamily": "string", "captionsFontWeight": "string", "captionsAnimation": "fadeInSlideUp", "captionsWordEffects": "", "captionsTextTransform": "none", "layoutMode": "wrap", "captionsPrimaryColor": "string", "captionsSecondaryColor": "string", "captionsAccentColor": "string", "captionsStrokeColor": "string", "captionsSecondaryStrokeColor": "string", "captionsAccentStrokeColor": "string", "captionsShadowColor": "string", "captionsFirstWordColor": "string", "captionsHighlightBackground": "string", "captionsFontSize": 20, "captionsVerticalPosition": 0, "captionsTextStroke": 0, "captionsActiveWordStroke": 0, "captionsLetterSpacing": -5 }, "captions": [ { "id": "string", "startMs": 0, "endMs": 0, "text": "string", "punctuated_word": "string", "confidence": 0 } ], "captionsPages": [ { "id": "string", "startMs": 0, "endMs": 0, "hidden": true, "emoji": {}, "audioEffect": {} } ], "bRolls": [ { "id": "string", "startMs": 0, "endMs": 0, "text": "string", "prompt": "string", "keywords": "string", "mediaType": "ai_image", "url": "http://example.com", "type": "string", "qualityUrls": {}, "posterUrl": "http://example.com", "sourceWidth": 0, "sourceHeight": 0, "stockQuery": "string", "credit": { "source": "string", "author": "string", "license": "string", "url": "http://example.com" }, "animation": "string", "transition": "string", "layout": "string", "scale": 0, "hidden": true, "audioEffect": {}, "presenter": { "imageUrl": "http://example.com", "avatarId": "string", "name": "string", "bytes": 0, "generatedAt": "2019-08-24T14:15:22Z" } } ], "presentationScenes": [], "scenes": [ { "imagePrompt": "string", "animationPrompt": "string", "narration": "string", "voiceDescription": "string", "duration": 3, "id": "string", "status": "string", "imageUrl": "http://example.com", "videoUrl": "http://example.com" } ] }}List videos GET
Top-level videos in the workspace, newest activity first. Automation blueprints and clips are excluded: read blueprints on `/automations` and a video's clips on `/videos/{id}/clips`. `status` collapses the two job documents into the one value a client actually polls on, in this precedence: `failed` if either job failed, then `rendering`, then `processing`, then `ready` (a render exists), otherwise `draft`. The heavy content arrays never ride on a list. Ask for the video itself with `?include=` to get them; an `include` passed here is ignored.
Register a webhook endpoint POST
Registers a URL to receive the events you subscribe to. Duplicated event ids are collapsed; an unknown one is refused with `warning-invalid-events` listing the valid ids. **This is the only response that carries the signing secret.** Store it now: every later read omits it, and you need it to verify the `X-ShortFast-Signature` header. A workspace can hold at most 25 endpoints.