reference_video: keep the cast, build a new shot. A brand-new clip carrying over the subjects - and as much of the staging as you re-describe - from yours.start_video: keep going. Continues your clip from its final frames.
reference_video is the more flexible of the two: re-stage the same scene on different
gear, or send the same cast somewhere new entirely, depending on how much of the source
your prompt re-describes.
This notebook generates one source clip with text-to-video, then runs both against it, so
it stands alone with just a BFL_API_KEY. Video inputs are mp4, up to 50 MB and 15 seconds;
the limit is on the file you send, not the output you request.
1. Setup
The same client as the previous recipes. Our 5-second source is comfortably inside the input caps; for longer sources, trim to under 15 seconds before sending.Setup: the API client from the quickstart (run this first)
Setup: the API client from the quickstart (run this first)
2. A source clip
A source clip you plan to reference later has one job: give the next prompts something concrete to name. Three or four fixed visual anchors (here: the brass body, the red wind-up key, the single amber eye) plus one unmistakable motion (marching in a straight line), described the same way every time. One clause in this prompt earns its place: “it moves like a wound-up machine, not a person”. Mechanical subjects default to fluid, human-smooth movement unless you write the imperfection in: stiff even steps, a tremor on each footfall, and a sound locked to the motion.3. reference_video, take one: same scene, different medium
The source becomes a reference: its subjects carry over, and whatever staging you
re-describe carries with them. So to recast the look of a shot, restate the shot (the
blocking, the camera move, the path) and change only the recording medium.
The medium includes the sound, and this recast makes that concrete: a 1928 silent print
has no sync sound at all. The honest recast deletes the scene’s own ticking and replaces
it with what the medium would actually carry, a piano accompaniment and projector
clatter. Name that swap explicitly or the model keeps the modern soundtrack under an
old-looking picture.
One constraint to know: at the default 720p, reference_video output caps at 15
seconds. Ask for 16-20 and you get a 422 telling you to shorten it or drop to 480p.
4. reference_video, take two: same cast, new shot
Don’t restate the staging and the reference works the other way: the model carries the
subjects into a scene you write from scratch. New action, new location, new camera. Like
reference_images in the previous recipe, but the
identity comes from footage. The single lever that decides between “recast this shot” and
“new shot, same character” is how much of the source your prompt repeats.
Note the duration: 8: the endpoint accepts any integer from 5 to 20, so size the clip
to the beat instead of rounding to 5 or 10.
5. start_video: continue the shot
Picks up from the source’s final frames, so the prompt’s first job is to name what those
frames show (“reaches the very edge of the workbench”) before saying where the shot goes.
duration here is the length of the new segment, not source plus new, and
aspect_ratio: "auto" inherits the source’s frame so the join is clean.
Carry the established sounds forward before you evolve them: the ticking continues
unbroken through the seam, then each new event gets its own sound. Audio continuity is
what sells a continuation as one shot rather than two clips glued together.
The decision, one more time
- One video input per request; both fields take mp4 as a public URL or base64, ≤ 50 MB, ≤ 15s.
reference_videoat720pcaps outputdurationat 15 seconds (16-20 need480p).start_videohas no such restriction, andaspect_ratio: "auto"follows the source clip.
Where to next
start_video chaining is one way to build length. The other is cuts: real ones, written
into the prompt, plus a shot pipeline that generates scenes in parallel and stitches them.
That’s Multi-shot films.
