---
title: "Read the trailer's motion blur."
method: GET
path: "/trailers/{jobId}/motion-blur"
tags: ["Trailer"]
---

# Read the trailer's motion blur.

`GET /trailers/{jobId}/motion-blur`

## Request

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

Returns every beat's shots, numbered as its cut plays them (with who speaks on camera), which are chosen, the strength, the seconds chosen against the cap (`capSeconds`), and, beat by beat, whether the last master laid the blur (`state`: on, waiting, skipped with a `reason`, off) with the sentence the review shows; `renderBox` says whether a render box answers now. Motion blur makes chosen shots move like film: what moves in them blurs the way a camera's shutter blurs it, while still frames, faces held in frame and straight edges stay sharp. It is chosen per shot (or per chapter or beat: its moving shots, never a shot where someone speaks on camera unless that shot is named), at one of two strengths (standard, subtle; standard by default). It is free, up to 300 seconds of blurred picture per deck or trailer, and it is laid when the master is assembled, before the film finish. The sound and timing are never touched. Scope: `story:read`.

## Response `200`

The trailer's motion blur.

- MotionBlurView: Motion blur makes chosen shots move like film: what moves in them blurs the way a camera's shutter blurs it, while still frames, faces held in frame and straight edges stay sharp. It is chosen per shot (or per chapter or beat: its moving shots, never a shot where someone speaks on camera unless that shot is named), at one of two strengths (standard, subtle; standard by default). It is free, up to 300 seconds of blurred picture per deck or trailer, and it is laid when the master is assembled, before the film finish. The sound and timing are never touched.
  - `strength` 'standard' | 'subtle', required: The strength (`standard` when nothing is chosen).
  - `on` boolean, required: True when any shot is chosen.
  - `chosenSeconds` number, required: Seconds of picture the choice blurs.
  - `capSeconds` number, required: The most a deck or trailer may choose, free.
  - `units` object[], required: Every chapter (deck) or beat (trailer), in order.
    - `unit` integer, required: The chapter's `chapterIndex` or the beat's `beatIndex`: the key a set names it by.
    - `unitNumber` integer, required: Its place, 1-based: the number a writer sees.
    - `hasCut` boolean, required: It has a rendered cut (shots can be chosen only then).
    - `state` 'on' | 'waiting' | 'skipped' | 'off', required: `on`: the last master laid the blur; `waiting`: chosen, not in a master yet; `skipped`: the last master played it unblurred (`reason`); `off`: nothing chosen.
    - `reason` 'unconfigured' | 'offline' | 'failed' | 'slow', nullable: Why a skipped blur was not laid.
    - `sentence` string, nullable, required: What the review says for it.
    - `shots` object[], required
      - `number` integer, required: The shot's number, 1-based, as the cut plays them: what a set names.
      - `startSeconds` number, required
      - `endSeconds` number, required
      - `framing` string, required
      - `speaksOnCamera` boolean, required: Someone says a line on camera in it (never chosen by `moving`).
      - `action` string, required: What happens in it.
      - `chosen` boolean, required
    - `staleShots` integer, required: Chosen shots a recompile removed: ignored until chosen again.
  - `strengths` object[], required
    - `id` 'standard' | 'subtle', required
    - `description` string, required
  - `renderBox` 'online' | 'offline' | 'unconfigured', nullable, required: Whether a render box answers now (null when not checked).
  - `description` string, required

## 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.
- `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)
