Styles and edits
The idea
Viral and on-brand short-form video is mostly structure: how soon the first cut lands, how long each shot holds, whether cuts hit the beat, what job each shot does, how captions look and move. A style captures that structure from a reference video. An edit rebuilds it from your own footage.
What gets measured, and what gets interpreted
| Measured from the file (exact) | Interpreted by a vision model (descriptive) |
|---|---|
| Every hard cut, to the frame | Each shot's role: hook, context, demo, detail, reaction, payoff, cta, broll |
| Shot lengths and pacing (cuts per minute, first cut) | What is on screen, camera movement, speed ramps |
| Motion level per shot | Burned-in text, and how captions look: position, case, weight, colour, highlight, words at a time |
| Tempo, beat grid, share of cuts that land on a beat | Transition into each shot: cut, dissolve, whip, zoom, flash, slide |
| Loudness (LUFS) | Hook duration and technique; colour grade; a written summary |
Vision models sample about one frame per second, so they cannot place a cut precisely — they are never
asked to. They only describe shots whose boundaries were already measured. With semantic: false, or
if the model is unavailable, you still get the full measured analysis.
The style spec
GET /v1/styles/{id} returns the full spec. Abridged:
{
"aspect": "9:16", "duration": 17.77,
"shots": [
{ "index": 0, "start": 0.0, "end": 0.37, "duration": 0.37, "role": "hook", "motion": 1.0,
"transition_in": "cut", "speed": 1.0, "camera": "screen-recording",
"description": "Finished dish shown first", "on_screen_text": "Dinner in 10 minutes" }
],
"pacing": { "shot_count": 7, "median_shot": 0.73, "cuts_per_minute": 20.3, "first_cut": 0.37 },
"music": { "present": true, "bpm": 99.4, "cuts_on_beat_ratio": 0.71, "beats": [0.46, 1.06, …] },
"loudness_lufs": -13.6,
"captions": { "present": true, "position": "upper", "case": "sentence", "words_per_chunk": 3,
"weight": "black", "color": "#FFFFFF", "highlight_color": "#FFD60A", "outline": true },
"hook": { "duration": 0.37, "technique": "result first" },
"summary": "…", "semantic": true, "model": "google/gemini-3.8-flash"
}
A style keeps numbers and descriptions only — never the reference's pixels or audio — so you can delete the reference afterwards and keep using the style.
How an edit is built
- Slots. Each shot in the style becomes a slot with the same length, role, speed and transition,
scaled if you ask for a different
duration. - Beat snap. If you supply music and the reference cuts on the beat, every cut moves to the nearest beat of your track (never more than 0.6 s), keeping the reference's rhythm.
- Footage. Each slot gets a window of one of your clips. With the vision model, it picks the moment that fits the slot's role — the strongest moment for the hook, payoff moments for payoff slots — and avoids repeating footage. Without it, a motion-and-detail heuristic matches each slot's energy.
- Layout. Footage that matches the output shape fills the frame. Footage that doesn't (a phone recording, a landscape clip in a vertical edit) is never cropped — it sits over a blurred copy of itself. When there are captions, it moves below a clear caption band so text never covers the content.
- Captions follow the style's look, timed in chunks of its words-per-screen. With a highlight
colour, the active word lights up in turn. Lines come from
captions, or are written from yourbriefin the reference's voice. - Audio. Your music (trimmed, faded out) with your clips' sound ducked underneath, or your clips' own sound alone, normalized to −14 LUFS for social platforms.
- QA. The exact file you receive is checked for length, size, black frames, frozen picture, and silent or badly levelled audio. A failing render fails the job and refunds it.
Steering an edit
- Captions — pass them explicitly for full control; the first line is the hook and should make a promise.
- Length —
durationrescales every slot proportionally. - Shape —
aspectrenders 9:16, 4:5, 1:1, 4:3 or 16:9 from the same style. - Several variants — run several edits from one style with different captions, music or clips; analysis is paid once.
- The plan — every edit returns
plan.json: the clip, in-point, length and transition of each slot.
Good inputs
- References: 10–90 seconds; the clearer the structure, the better the style.
- Clips: more raw footage than the edit needs (2–3× its length), in focus, with clear subjects.
- Formats: anything common — mp4, mov, webm, mkv; mp3, wav, m4a for music.
Agents: this page is also available as Markdown; the whole reference is in llms-full.txt.