---
title: "Re-render a finished capture-only trailer's depth under the current look (free)."
method: POST
path: "/trailers/{jobId}/rerender-depth"
tags: ["Trailer"]
---

# Re-render a finished capture-only trailer's depth under the current look (free).

`POST /trailers/{jobId}/rerender-depth`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/trailers/{jobId}/rerender-depth`
- Auth: HTTP bearer

Re-renders a finished CAPTURE-ONLY trailer's depth composites under the current look IN PLACE and queues the free re-stitch + finish: takes, keeps, narration, score, audio and every id stay unchanged, and only the capture-slot picture stamps are rewritten. Composites whose key did not move are reused; the rest render fresh. NOT metered and NOT confirmed: free — there is no price and nothing to confirm. Refused with 409 `trailer_state_invalid` (`details.refusal.code`: `rerender_capture_depth_nothing` when the trailer has no app captures, `reassemble_trailer` when it has rendered shots or shots being rendered — use the reassemble path there instead, `rerender_capture_depth_not_ready` when it is neither in review nor finished, `rerender_capture_depth_master_hold` when a blank beat holds its video). Requires `Idempotency-Key`. Scope: `story:write`.

## Headers

- `Idempotency-Key` string, required

## Response `200`

The depth re-render queued: composites re-rendered and reused, nothing charged.

- RerenderTrailerCaptureDepthAck: A capture-only trailer's depth re-render queued: its capture-slot composites re-rendered (or reused) under the current look and the free re-stitch + finish queued. Nothing was charged.
  - `jobId` string, required: The trailer job.
  - `credits` 0, required: Free: no credits move.
  - `rebuiltComposites` integer, required: Capture slots whose composite key moved and rendered fresh.
  - `reusedComposites` integer, required: Capture slots whose composite key did not move: the cache answered.
  - `queued` true, required: The free re-stitch + finish is queued.
  - `message` string, required: One honest line: composites re-rendered, reused, re-stitch queued.

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The named project or source does not exist or is owned by another account.
- `409`: The trailer exists and the request is well-formed, but the trailer, its beat, its cast or its plates are not in a state that allows it (`trailer_state_invalid`), and nothing was reserved: a plan approved outside draft, a take chosen or a beat rendered outside review/complete, an export before the finish, a finish while a call has no selected take, a narrated cut with no narrator, a render the compile blocked, or a finish while the master failed its video coverage (`trailer_video_coverage_failed`, with `details.videoCoverage`). `details.refusal` is `{ code, action, fix }` (see TrailerRefusalDetails): `action` is what unblocks it — `recast_figure`, `add_signature_items`, `recast_voice` or `remake_location_plate` — and `fix` names the MCP tool and CLI command that take it; `details.blocked[]` lists every beat a blocked compile could not render. The identical request succeeds once the trailer is put right.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/64c1102ccb2f?raw)
