Refine one trailer beat.
Edits one trailer beat's plan: what it delivers (storyBeat), BOTH sides of its seam — transitionPrompt outgoing and transitionIn incoming — its framing (shotType), motion direction, its staging (characterAction — what its people physically do — and stagingNotes, which a beat held as one shot is filmed from; '' clears either), on-screen caption, composition, duration, who is in the picture (visibleCharacters is the named characters on camera; unnamed people need no listing), where it is set (location, stored as a canonical location key), the stage of the trailer's intent it serves (arcStage, advancesQuestion — plan words that never make a take stale; on a draft the changed plan is queued for plan coverage, planCoverage), whether it is a rapid intercut run (montage — brief shots cut tight, as short as 1 s; it stales the takes), what the narrator says over it (narrationText, at most 600 characters, '' clears it — laid over the picture, so it never stales a take; a blank beat added to a rendered trailer is given its line this way). Who speaks this beat's narration (narrationSpeaker): a cast member named on the project, spoken in their canon voice instead of the cut's narrator (at most 160 characters; an empty string or null clears it back to the narrator). Only a beat nobody can watch speak may name one — a capture or text beat; on a filmed beat a visible speaker's words belong in spokenLine, said on camera, and are refused here. An unknown speaker is refused when the cut renders, naming them; the narrator never speaks their line for them. And shots — the beat's CUT LIST of shots with hard cuts between them, each with whatever camera move it wants, which is how a beat is made to contain an EVENT rather than an image. A beat names where it is set in its location: a canonical location key, the place its location image is made of. A beat may travel: a shot set somewhere else names that place in its own location (a key, or a place in plain words), and the render follows it there. A capture beat plays one of the project's app captures (a real screen recording, ready) as it was recorded: set it with the beat refine (compositionKind: 'capture' and the capture's captureId). It plays the whole capture, or only the stretch of it you keep (captureKeep: a start and an end, in seconds of the capture); what it plays runs 4 to 30 seconds, so a longer capture plays a kept stretch of it. The capture must be in the trailer's shape. The beat carries no on-screen text (its caption is cleared and none can be set), and is never rendered or retaken, so it costs nothing. A beat that already has rendered shots cannot become one: add a beat for the capture instead. A capture beat's refusals: captureId or captureKeep without a capture beat, a capture beat with a caption or a length (400); a capture not of the trailer's project (404 capture_not_found); a capture not ready, playing outside 4–30 s (a capture longer than 30 s plays a kept stretch: captureKeep), a kept stretch that does not fit its capture (trailer_capture_keep_range), ends before the result of a click it keeps (trailer_capture_keep_cuts_result), or in another shape, or a beat that already has rendered shots (409). Allowed in draft, review and complete. Free — it saves the plan and marks what went stale: an edit to what the beat films marks its takes out of date (they stay playable), a caption edit marks only its text layer; render the beat again with beats/render-clip (priced). A narration edit on a rendered trailer that narrates is voiced and the master stitched again, free (reassembling: true); on a cut with no narrator voice a new line on a beat that names no narrationSpeaker is refused (409, details.refusal.code trailer_narrator_missing: choose a narrator first). Returns needsRerender, planCoverage, reassembling and previewUrl. Provide at least one editable field. Requires Idempotency-Key. Scope: story:write.
Request
- Base URL: https://docs.sleeperhit.studio/api/v1
- URL: https://docs.sleeperhit.studio/api/v1/trailers/{jobId}/beats/refine
- Auth: HTTP bearer
Headers
Customer-generated stable identifier for safe retries of idempotent POST requests.
Request body
Response
The saved beat + a shareable beat preview link.
Changes
No recorded changes to this operation across all 1 revision of this API.