---
title: "Set the deck's finish."
method: POST
path: "/pitch-decks/{jobId}/look"
tags: ["Pitch Deck"]
---

# Set the deck's finish.

`POST /pitch-decks/{jobId}/look`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/pitch-decks/{jobId}/look`
- Auth: HTTP bearer

Sets the film finish laid on the picture when the master is assembled — the whole finish `{ finish: { look, intensity?, adjust? } }`, looks `camera`, `period-35mm`, `night-interior`, `none` (`none`: no finish); an unknown look, intensity, effect or level is refused by name. The finish is a film look laid on the picture when the master is assembled: a look (camera, period-35mm, night-interior, none), an intensity (light, standard, strong; standard by default) and, optionally, single effects set to a level (adjust: { effect: off | subtle | medium | strong }; effects: steady-light, match-shots, halation, mist, shoulder, colour, vignette, weave, grain, soften). New decks and trailers start on camera. Titles and captions are laid after it, so type stays crisp, and the sound and timing are never touched. Setting it is free; on a rendered deck or trailer the master is assembled again with it (free), and setting the same finish again changes nothing. Allowed in any state: a draft or a deck still rendering keeps it for its first master; in review, finishing or complete the master is assembled again with it (`reassembling`). Requires `Idempotency-Key`. Scope: `story:write`.

## Headers

- `Idempotency-Key` string, required

## Request body

- FinishSetRequest
  - `finish` object, required: The whole finish: what it leaves out is the default (intensity `standard`, no adjustments).
    - `look` 'camera' | 'period-35mm' | 'night-interior' | 'none', required: The look (`none`: as rendered, no finish).
    - `intensity` 'light' | 'standard' | 'strong': How strong; `standard` when left out.
    - `adjust` object: Optional single effects at a level, e.g. `{ "grain": "subtle", "weave": "off" }`.
      - `steady-light` 'off' | 'subtle' | 'medium' | 'strong': Steadies the exposure pumping from frame to frame, within each cut.
      - `match-shots` 'off' | 'subtle' | 'medium' | 'strong': Matches the colour and exposure of the shots inside a cut that share a room and its light, so they play as one camera; a shot set somewhere else is left alone.
      - `halation` 'off' | 'subtle' | 'medium' | 'strong': A warm red-amber glow bleeding from the brightest highlights, as on film.
      - `mist` 'off' | 'subtle' | 'medium' | 'strong': A faint mist around the lights, like a diffusion filter.
      - `shoulder` 'off' | 'subtle' | 'medium' | 'strong': A gentle highlight shoulder over dense blacks.
      - `colour` 'off' | 'subtle' | 'medium' | 'strong': Mutes over-saturated colour a little.
      - `vignette` 'off' | 'subtle' | 'medium' | 'strong': Darkens the corners a little.
      - `weave` 'off' | 'subtle' | 'medium' | 'strong': A very slight gate weave: the frame wanders a pixel or two.
      - `grain` 'off' | 'subtle' | 'medium' | 'strong': Fine moving film grain, strongest in the mid-tones and none in pure black or white.
      - `soften` 'off' | 'subtle' | 'medium' | 'strong': Takes the digital edge off, scaled to the resolution.

## Response `200`

The finish now in force.

- FinishSetAck: The finish is a film look laid on the picture when the master is assembled: a look (camera, period-35mm, night-interior, none), an intensity (light, standard, strong; standard by default) and, optionally, single effects set to a level (adjust: { effect: off | subtle | medium | strong }; effects: steady-light, match-shots, halation, mist, shoulder, colour, vignette, weave, grain, soften). New decks and trailers start on camera. Titles and captions are laid after it, so type stays crisp, and the sound and timing are never touched. Setting it is free; on a rendered deck or trailer the master is assembled again with it (free), and setting the same finish again changes nothing.
  - `finish` Finish, required: The finish is a film look laid on the picture when the master is assembled: a look (camera, period-35mm, night-interior, none), an intensity (light, standard, strong; standard by default) and, optionally, single effects set to a level (adjust: { effect: off | subtle | medium | strong }; effects: steady-light, match-shots, halation, mist, shoulder, colour, vignette, weave, grain, soften). New decks and trailers start on camera. Titles and captions are laid after it, so type stays crisp, and the sound and timing are never touched. Setting it is free; on a rendered deck or trailer the master is assembled again with it (free), and setting the same finish again changes nothing.
    - `look` 'camera' | 'period-35mm' | 'night-interior' | 'none', required: The look: `camera` (Shot on a camera: fine moving grain, dense blacks under gently rolled-off highlights, a touch of mist on the lights, softer digital edges, steadied exposure and matched shots. No colour shift.); `period-35mm` (Period film: a muted 19th-century palette (warm candle and amber interiors, cold blue-grey exteriors, quieter greens and blues), a warm glow around flames, fine 35mm grain, a soft vignette and a very slight gate weave, with steadied exposure and matched shots.); `night-interior` (Candle and lamplight: cool shadows under warm highlights, a glow and a little mist around every flame, a deeper vignette and fine grain. The flame's own flicker is kept.); `none` (As rendered: no finish, the picture plays as it was rendered.).
    - `intensity` 'light' | 'standard' | 'strong', required: How strong: `light` (Barely there: every effect one step down (the grain and the invisible corrections stay on).); `standard` (Noticeable: the look as designed.); `strong` (Strong: every effect one step up.).
    - `adjust` object: Single effects set to an explicit level, over what the look and intensity give them.
      - `steady-light` 'off' | 'subtle' | 'medium' | 'strong': Steadies the exposure pumping from frame to frame, within each cut.
      - `match-shots` 'off' | 'subtle' | 'medium' | 'strong': Matches the colour and exposure of the shots inside a cut that share a room and its light, so they play as one camera; a shot set somewhere else is left alone.
      - `halation` 'off' | 'subtle' | 'medium' | 'strong': A warm red-amber glow bleeding from the brightest highlights, as on film.
      - `mist` 'off' | 'subtle' | 'medium' | 'strong': A faint mist around the lights, like a diffusion filter.
      - `shoulder` 'off' | 'subtle' | 'medium' | 'strong': A gentle highlight shoulder over dense blacks.
      - `colour` 'off' | 'subtle' | 'medium' | 'strong': Mutes over-saturated colour a little.
      - `vignette` 'off' | 'subtle' | 'medium' | 'strong': Darkens the corners a little.
      - `weave` 'off' | 'subtle' | 'medium' | 'strong': A very slight gate weave: the frame wanders a pixel or two.
      - `grain` 'off' | 'subtle' | 'medium' | 'strong': Fine moving film grain, strongest in the mid-tones and none in pure black or white.
      - `soften` 'off' | 'subtle' | 'medium' | 'strong': Takes the digital edge off, scaled to the resolution.
  - `effects` object[], required: Every effect at its level in this finish (`off` when the finish does not lay it), with what it does.
    - `id` 'steady-light' | 'match-shots' | 'halation' | 'mist' | 'shoulder' | 'colour' | 'vignette' | 'weave' | 'grain' | 'soften', required
    - `level` 'off' | 'subtle' | 'medium' | 'strong', required
    - `description` string, required
  - `looks` object[], required: Every look there is, with what it does.
    - `id` 'camera' | 'period-35mm' | 'night-interior' | 'none', required
    - `description` string, required
  - `intensities` object[], required: Every intensity there is, with what it does.
    - `id` 'light' | 'standard' | 'strong', required
    - `description` string, required
  - `reassembling` boolean, required: True when the master is assembled again with the new finish (a rendered deck or trailer; free).
  - `masterHold` TrailerMasterHold: On a rendered trailer with no screenplay, a blank beat holds its video: nothing rebuilds it until each blank beat is a capture beat or a title card, or removed (then it is rebuilt, free); the answer's `masterHold` names the beats and the fix, and the export is refused with it (`trailer_capture_only`).
    - `blankBeats` integer[], required: The blank beats, numbered from 1.
    - `message` string, required: The sentence to show: the beats, that the video keeps playing, and the fix.

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `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.
- `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/86e084144cef?raw)
