Trailer

Duplicate a trailer from its current plan onto a new draft (free).

Duplicating a trailer makes a NEW draft trailer that carries the source trailer's CURRENT plan — every beat with its edits, its hook, its intent, its montage marks, its black interludes and its closing sequence — and the choices made on the trailer itself (its shape, its audio policy, the narrator cast for it, its delivery class, its film finish, its quiet track and its name), and leaves the source trailer untouched. Nothing rendered rides along: no takes, cuts, masters, versions, share links or coverage reports. It is free and renders and reserves nothing; the copy's plan is queued for coverage, and its next step is approve_trailer_plan on the NEW trailer's jobId (CLI: trailer approve-plan <newJobId>). Any status may be duplicated — a draft, a trailer in review or complete, a failed one — as long as its plan reads as a plan today; one that does not is refused with 409 trailer_state_invalid (details.refusal.code: trailer_duplicate_no_plan) and nothing is created. A given title is the copy's DISPLAY NAME — the name its lists show it by — and never a title for its plan, which comes along unchanged; without one the copy keeps the source's name. NOT metered and NOT confirmed. Requires Idempotency-Key. Scope: story:write.

post/trailers/{jobId}/duplicate

Request

  • Base URL: https://docs.sleeperhit.studio/api/v1
  • URL: https://docs.sleeperhit.studio/api/v1/trailers/{jobId}/duplicate
  • Auth: HTTP bearer

Headers

Idempotency-Keystring required

Customer-generated stable identifier for safe retries of idempotent POST requests.

Request body

titlestring

The copy's DISPLAY NAME — the name its lists show it by; its plan comes along unchanged. Omitted: the copy keeps the source trailer's name.

Response

The new draft trailer.

sourceJobIdstring required

The trailer the plan was copied from. It is untouched.

jobIdstring required

The NEW draft trailer. Every trailer tool takes this id from here on.

status'draft' required
titlestring required

The copy's DISPLAY NAME (the name its lists show it by).

beatsinteger required

How many beats the copied plan has.

interludesinteger required

How many black interludes the copied plan holds.

aspectRatiostring required

The shape it renders at, carried from the source.

audioPolicystring required

narrate or suppress, carried from the source.

deliveryResolutionstring nullable required

The delivery class chosen on the source trailer, carried; null when it had none.

planCoverage'queued' | 'current' | 'failed' | 'not_needed' required

The copy's plan coverage: queued for the new draft, current already scored, failed when it could not be queued (request it with POST /trailers/{jobId}/storyboard/coverage; approving an unscored plan is refused), or not_needed for a trailer with no screenplay (app captures and title cards only), whose plan is never scored.

nextStep'approve_trailer_plan' required
reviewUrlstring nullable required

A logged-in deep link that opens the copy.

credits0 required

Always 0: a duplicate renders and reserves nothing.

notestring required

What was copied and what happens next, in one paragraph to read out.

Changes

No recorded changes to this operation across all 1 revision of this API.