Second StudioDocs llms.txtRequest access

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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 your brief in the reference's voice.
  6. 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.
  7. 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

Good inputs

Agents: this page is also available as Markdown; the whole reference is in llms-full.txt.