Update Video

Update video metadata and scene details using a Platform API key.

Authenticated Update Endpoints

These endpoints use the Platform API key and the video request id returned by Create Video. Use them when an agent or backend needs to edit video metadata, scene scripts, scene layout, timing, subtitles, clips, or effects without using the public editToken.

All paths are prefixed with /v1/platform/videos/:id.

MethodPathPurpose
PATCH/Update video metadata
POST/scenesAdd a scene
PATCH/scenes/:sceneIdUpdate a scene
DELETE/scenes/:sceneIdDelete a scene
PUT/scenes/reorderReorder scenes

Updates are available after the video generation request has completed.


PATCH /

Updates video-level metadata.

curl -X PATCH https://api.tutorflow.io/v1/platform/videos/{id} \
  -H "Authorization: Bearer tf_platform_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Photosynthesis for Kids",
    "description": "Updated narration and scene plan.",
    "aspectRatio": "9:16",
    "bgmAudioKey": "platform/{workspaceId}/bgm/calm.mp3",
    "bgmVolume": 0.2,
    "bgmOffset": 0,
    "userNarrationScript": "Custom full-video narration notes.",
    "thumbnailKey": "platform/{workspaceId}/videos/{videoId}/thumb.jpg",
    "metadata": { "language": "en", "targetDurationSeconds": 45 }
  }'

Body

FieldTypeDescription
titlestringVideo title
descriptionstringVideo description
aspectRatiostring16:9, 9:16, or 1:1
bgmAudioKeystringS3 key for background music
bgmVolumenumberBackground music volume
bgmOffsetnumberStart offset in seconds
userNarrationScriptstringManual narration notes or override
videoKeystringRendered mp4 key
thumbnailKeystringThumbnail image key
renderStatusstringRender status override
metadataobjectFree-form metadata

Returns VideoEditResDto, including all scenes.


POST /scenes

Adds a scene to the video.

curl -X POST https://api.tutorflow.io/v1/platform/videos/{id}/scenes \
  -H "Authorization: Bearer tf_platform_..." \
  -H "Content-Type: application/json" \
  -d '{
    "script": "Plants use sunlight to turn water and carbon dioxide into food.",
    "displayText": "Plants make food from sunlight",
    "remotionTemplate": "keyword",
    "keywords": ["plant", "sunlight", "leaf"],
    "duration": 7,
    "transitionOut": "fade"
  }'

Body

FieldTypeRequiredDescription
scriptstringYesNarration script for the scene
ordernumberNo0-indexed scene order. Defaults to the end.
displayTextstringNoOn-screen text
remotionTemplatestringNoScene layout/template, such as keyword, title, or quote
keywordsstring[]NoKeywords for clip search and overlays
durationnumberNoScene duration in seconds
transitionOutstringNoTransition to the next scene

Returns the created VideoSceneResDto.


PATCH /scenes/:sceneId

Updates any supported scene field, including script, layout, timing, subtitles, clip settings, effects, and metadata.

curl -X PATCH https://api.tutorflow.io/v1/platform/videos/{id}/scenes/{sceneId} \
  -H "Authorization: Bearer tf_platform_..." \
  -H "Content-Type: application/json" \
  -d '{
    "order": 1,
    "script": "The leaves capture sunlight using chlorophyll.",
    "displayText": "Leaves capture sunlight",
    "ttsAudioKey": "platform/{workspaceId}/videos/{videoId}/scenes/{sceneId}/tts.mp3",
    "videoClipKey": "platform/{workspaceId}/videos/{videoId}/clips/leaf.mp4",
    "videoClipSource": "custom",
    "remotionTemplate": "keyword",
    "keywords": ["leaf", "chlorophyll"],
    "duration": 6.5,
    "audioOffset": 0,
    "audioDuration": 5.8,
    "videoOffset": 1.2,
    "videoDuration": 6.5,
    "subtitleOffset": 0,
    "subtitleDuration": 5.8,
    "subtitles": [
      { "text": "The leaves capture sunlight", "offset": 0, "duration": 2.7 }
    ],
    "transitionOut": "fade",
    "transitionDuration": 0.5,
    "videoEffect": "vignette",
    "metadata": { "shot": "close-up" }
  }'

Body

FieldTypeDescription
ordernumberScene order
scriptstringNarration script. Updating this does not regenerate TTS automatically.
displayTextstringOn-screen text
ttsAudioKeystringTTS audio key
videoClipKeystringClip key
videoClipSourcestringClip source, such as stock or custom
remotionTemplatestringScene layout/template
keywordsstring[]Clip search and overlay keywords
durationnumberScene duration in seconds
audioOffset / audioDurationnumberTTS timing
videoOffset / videoDurationnumberClip timing
subtitleOffset / subtitleDurationnumberSubtitle timing
subtitlesarraySubtitle chunks: [{ text, offset, duration }]
transitionOutstringTransition style
transitionDurationnumberTransition duration in seconds
videoEffectstringVisual effect
metadataobjectFree-form metadata

Returns the updated VideoSceneResDto.


DELETE /scenes/:sceneId

Deletes a scene.

curl -X DELETE https://api.tutorflow.io/v1/platform/videos/{id}/scenes/{sceneId} \
  -H "Authorization: Bearer tf_platform_..."

Returns 204 No Content.


PUT /scenes/reorder

Replaces scene order with the supplied scene ID list.

curl -X PUT https://api.tutorflow.io/v1/platform/videos/{id}/scenes/reorder \
  -H "Authorization: Bearer tf_platform_..." \
  -H "Content-Type: application/json" \
  -d '{ "sceneIds": ["uuid-3", "uuid-1", "uuid-2"] }'

The list length must equal the current scene count, and every id must belong to the video.

Returns the updated VideoEditResDto.