Skip to content

Video Stitch

POST
/api/video/stitch
curl --request POST \
--url https://example.com/api/video/stitch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "clips": [ "example" ] }'

Join finished clips into one video, in the order given.

The other half of shot chaining: last-frame lets each clip start where the last one ended, and this puts them back together as a single take. A project render does the same thing for a whole movie, but building a project to join two clips is more scaffolding than the job needs.

Clips are normalised to the first one’s frame size and frame rate before concatenation, so mismatched shots join without the stream-copy artefacts that a raw concat produces. The first clip sets the rate because resampling generated footage to some other number duplicates frames unevenly and shows up as judder in exactly the motion the clip was made for.

Media typeapplication/json
StitchRequest

The clips to join, in playing order, named by prompt_id or by filename.

object
clips
required
Clips
Array<string>
Examplegenerated
{
"clips": [
"example"
]
}

Successful Response

Media typeapplication/json
Response Video Stitch Api Video Stitch Post
object
key
additional properties
any
Examplegenerated
{}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}