Trailer

Plan a product video from the feature map (free).

PLAN one product video for one feature of the project's feature map, or for a named release and the features it ships: a queued run writes capture beats into an ordinary capture-only draft trailer. Planning a product video turns one feature of the project's feature map, or a named release and its features, and the project's recorded captures into an ordinary draft trailer — each beat names its capture, the stretch of it it plays, a narrated line, whether the beat keeps its own sound, and its depth — and it is free: it answers at once, the run is polled until it is ready, and the result is an ordinary capture-only draft trailer approved with approve_trailer_plan. scope is { kind: 'feature', featureId } or { kind: 'release', name, featureIds } (2–8 distinct features); targetSeconds (10–360, default 30 for a feature and 60 for a release); aspectRatio (default 16:9 — every capture it plays must have it); title; notes (at most 2000 characters); music is score (the default: the draft is scored to picture, free — a sketch to the planned cut plays before anything renders, and the score is composed to the first cut and laid under it) or none (no music bed). A strict body: an unknown key is 400 validation_failed naming it. Refused before anything is stored: an unknown featureId is 400 validation_failed (details.features lists the feature map with name and availability), a planned feature is 400 (details.availability: 'planned'), a release outside 2–8 features is 400, a story project is 409 project_not_product, a product project whose product Bible is not complete or whose product coverage has not passed is 409 project_precondition_failed (details.stage), no ready capture in the shape is 409 product_video_no_captures (details.byAspect), a project where no shipped feature has a recording yet is 409 product_video_not_ready in its readiness step's own sentence (details.next names the verb that does it — connect_app first when the app is not connected), a feature with no recording of its own is 409 product_video_not_ready (details.recordedFeatures lists the ones that can be planned), and the 31th run in a UTC day is 403 usage_limit_reached. Answers 202 with the run at once (reused: false), or 200 with the live run an equal body already started (reused: true): one request never makes more than one plan. Poll GET /story-projects/{projectId}/product-video-plans/{runId} until ready. NOT metered and NOT confirmed. Requires Idempotency-Key. Scope: story:write.

post/story-projects/{projectId}/product-video-plans

Request

  • Base URL: https://docs.sleeperhit.studio/api/v1
  • URL: https://docs.sleeperhit.studio/api/v1/story-projects/{projectId}/product-video-plans
  • Auth: HTTP bearer

Headers

Idempotency-Keystring required

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

Request body

targetSecondsinteger

Seconds of finished cut the planner aims for (10–360); default 30 for a feature, 60 for a release (the default follows the scope kind, so none is fixed here).

aspectRatio'16:9' | '9:16' | '1:1'

The shape it plays at; every capture it plays must have it.

titlestring

The draft trailer's own name; omitted: the planner names it after the scope.

notesstring

Free notes for the planner — the audience, the moment that matters, what to lead with (at most 2000 characters).

destinationKeystring

The destination this plan is cut for: a video destination key, as destinations[].key lists it. Omitted: the plan follows the deliverable it is made from, resolved when the run plans it.

music'score' | 'none'

The music the draft carries. music is score (the default: the draft is scored to picture, free — a sketch to the planned cut plays before anything renders, and the score is composed to the first cut and laid under it) or none (no music bed). Only none is stored on the run's request.

Response

The live run an equal body already started (reused: true).

reusedboolean required

True when an identical live run already existed and this body joined it; one request never makes more than one plan.

notestring required

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

Changes

No recorded changes to this operation across all 2 revisions of this API.