---
title: "Cover the deck's current master again (free)."
method: POST
path: "/pitch-decks/{jobId}/video-coverage"
tags: ["Pitch Deck"]
---

# Cover the deck's current master again (free).

`POST /pitch-decks/{jobId}/video-coverage`

## Request

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

Watches the deck's CURRENT stitched master again as a new report version. NOT metered and NOT confirmed: the watch costs the writer nothing, so there is no price and no `confirmed`. Coverage already runs by itself, idempotent per master, when the preview is stitched (review) and again when the finished master is (complete); call this to cover the master again (with an optional `focusPrompt`). A report already running on this master is returned as it is. Refused with 400 for a deck with no stitched master, one that is not in review or complete, or when no provider can watch a video right now (that never holds the finish). Requires `Idempotency-Key`. Scope: `story:write`.

## Headers

- `Idempotency-Key` string, required

## Request body

- VideoCoverageGenerateRequest
  - `focusPrompt` string: Optional: what to look at hardest this time.

## Response `200`

The queued (or already running) video coverage envelope.

- VideoCoverageEnvelope
  - `coverage` VideoCoverage, required: VIDEO COVERAGE of a deck's or trailer's stitched master: a model watched the video with its sound and scored its quality and its adherence to the shot list against a bar (`gateThreshold`, with `vetoDimensions` that fail it on their own). It runs by itself, free to the writer, when the 480p preview is stitched and again when the finished master is. While `blocksFinish` is true the finish is refused unless the writer finishes anyway; a report still running, one that could not run, an unavailable provider, or a report of an earlier master never holds the finish.
    - `status` 'missing' | 'generating' | 'complete' | 'failed', required
    - `planKind` 'pitch_deck' | 'trailer', required
    - `jobId` string, required
    - `stage` 'preview' | 'finished' | 'null', nullable, required: Which master the report watched.
    - `masterUrl` string, nullable, required: The master the report watched.
    - `currentMasterUrl` string, nullable, required: The master the cut has now.
    - `current` boolean, required: True when the report watched the master the cut has now.
    - `available` boolean, required: False when no provider can watch a video right now (that never holds the finish).
    - `gatePassed` boolean, required
    - `gateThreshold` number, required: The bar the composed overall and every veto dimension must reach.
    - `vetoDimensions` string[], required: Dimensions that fail the video on their own below the bar.
    - `gateReasons` string[], required: Every reason the bar was not cleared; empty on a pass.
    - `blocksFinish` boolean, required: True only when this report holds the paid finish: complete, of the current master, below the bar.
    - `summary` string, required: One sentence for the writer: where the coverage stands and what it means for the finish.
    - `trigger` 'auto' | 'manual' | 'null', nullable, required: `auto`: run after a stitch; `manual`: asked for.
    - `reportId` string, nullable, required
    - `reportVersion` integer, nullable, required
    - `rubricVersion` integer, nullable, required
    - `overallScore` number, nullable, required: The composed score the bar was decided on: the lower of the model's overall and the weighted dimensions — over the MEDIAN of each score when more than one watch judged it (`report.judging`).
    - `model` string, nullable, required
    - `progressDetail` string, nullable, required
    - `failureMessage` string, nullable, required: Why the run stopped, as one plain sentence for the writer — never a provider's or the database's raw wording. Populated when `status: failed`.
    - `report` VideoCoverageReport, required: What the model reported after watching the master with its sound: its quality and its adherence to the shot list, never its story.
      - `overallScore` number, required: The model's own holistic score. The bar is decided on the composed score (VideoCoverage.overallScore).
      - `verdict` 'pass' | 'needs_work' | 'fail', required
      - `oneLineDiagnosis` string, required
      - `dimensions` object, required: Each scored 0–10: lipSync (the right mouth moves to each line, in time; voice-overs over closed mouths), promptAdherence (each shot does what its call asked: framing, who is on screen, staging, room, camera), visualFidelity (artifacts, morphing, frozen or waxy faces, warped hands, burned-in text), motionNaturalness, identityContinuity (people, wardrobe, rooms), textPlacement (never over a face or other text, legible, a short dwell), audioSync, transitions (each cut follows the part before it by a link a viewer sees or hears).
        - `lipSync` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `promptAdherence` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `visualFidelity` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `motionNaturalness` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `identityContinuity` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `textPlacement` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `audioSync` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
        - `transitions` object, required
          - `score` number, required: The score the bar reads: the median across the watches that judged it, or the score carried from an earlier master with the same picture (`judging.dimensions`). A watch's dimension held down by its worst finding's severity (critical caps it at 4.0, major at 6.0) keeps the model's own number in `modelScore`.
          - `finding` string, required
          - `modelScore` number: Present only when the score was held down by a finding's severity: the model's own number.
      - `findings` VideoCoverageFinding[], required
        - `dimension` 'lipSync' | 'promptAdherence' | 'visualFidelity' | 'motionNaturalness' | 'identityContinuity' | 'textPlacement' | 'audioSync' | 'transitions', required
        - `severity` 'minor' | 'major' | 'critical', required: `critical`: a viewer cannot watch past it; `major`: clearly wrong; `minor`: noticed on a second look.
        - `startSeconds` number, required: Seconds from the start of the master (a player seeks here).
        - `endSeconds` number, required
        - `timecode` string, required: `m:ss–m:ss`, for a person.
        - `observation` string, required: Exactly what is on screen or heard that falls short.
        - `fix` string, required: The concrete production change that would fix it.
        - `shouldShow` string, required: What the picture should show there instead, in positive words that never name the problem; empty when no change to the picture fixes it. A new take of the shot (`retake_call`) is told this, never the observation.
        - `unit` object, nullable, required
          - `kind` 'chapter' | 'beat' | 'interlude' | 'title', required: `interlude` is a deck's black interlude between two chapters: `index` is the chapter it follows. `title` is a deck's title sequence.
          - `index` integer, required: The chapter's or beat's key (what every edit and render takes).
          - `number` integer, required: Its place in the cut, from 1: the number a person says.
          - `title` string, required
        - `callId` string, nullable, required: The render call playing at that moment (retake it with the render-clip op and this `callId`).
        - `shotIndex` integer, nullable, required: The shot inside that call, from 0.
        - `remedy` VideoCoverageRemedy, required: `retake_call`: render a new take of `callId` (priced); `rerender_text`: render the unit's on-screen text again (priced); `rescore`: the score laid under the master is measured silent there — score the cut to picture again (a retake never fixes dead air in the score); `revise_plan`: a cut that does not follow because the plan gives it no link (or one too weak to carry it) — give the unit its link in the plan (the chapter or beat refine: `whyItFollows`, and the look, object or sound staged in it); `trim_capture`: measured — the picture went blank for `frames` frames at the `head` or `tail` of an app-capture beat, and the beat keeps a stretch of its recording that does not show them (free, run by the automatic fixes); `lift_voice`: measured — the narration there sits only `gapLu` LU over the music between its lines, under the 6 LU it needs, and the automatic fixes lower the music under it (free; a mix, never a sync or a retake); `none`: nothing one action fixes.
          - `kind` 'retake_call' | 'rerender_text' | 'rescore' | 'revise_plan' | 'trim_capture' | 'lift_voice' | 'none', required
          - `gapLu` number: `lift_voice` only: how many LU the narration sits over the music between its lines, as measured on the master.
          - `callId` string
          - `edge` 'head' | 'tail': `trim_capture` only: the end of the beat the blank frames sit at.
          - `frames` integer: `trim_capture` only: how many blank frames were measured there.
        - `source` 'judge' | 'measured': Who saw it: `judge` (the model that watched the master) or `measured` (code measured it: a spoken line's mouth read against its voice on the take it plays from, or the score's dead air). A measured lip-sync miss holds the lip-sync score down (major 6.0, critical 4.0) whatever the judge scored: the judge cannot clear it. Absent on a finding stored before this was recorded (the judge's).
        - `uncertain` true: A measurement TOO CLOSE TO CALL: a quiet face read near its bar, or a pod reading of lips moving where no line is heard that the take watcher did not see too (a push-in, a flare or a smile reads the same). Severity minor: shown with its retake (`remedy`) for the writer to choose, never retaken by the automatic fixes and never holding a score down. Absent on every other finding.
      - `priorityFixes` string[], required: At most eight, most important first.
      - `judging` VideoCoverageJudging: HOW THE VERDICT WAS REACHED. One watch is too noisy to gate on near the bar (two watches of one frame-identical picture have scored prompt adherence 9.5 and 6.0), so a first watch within `nearGateMargin` of the bar is followed by a second, two watches on opposite sides of the bar by a third, and the bar reads the MEDIAN of each score. A master whose picture is frame-identical to an earlier judged master carries that report's picture scores (prompt adherence, visual fidelity, motion naturalness, identity continuity, text placement) and judges only lip sync, audio sync and transitions again — nothing at all when the sound is identical too. The rubric, the weights and the bar are unchanged.
        - `watches` VideoCoverageWatch[], required: This report's watches, in order (empty when every score was carried).
          - `watch` integer, required: 1, 2, 3 — in the order taken.
          - `reason` 'first' | 'near_gate' | 'disagreement', required: `first`; `near_gate`: the first watch sat within `nearGateMargin` of the bar (its composed overall or a veto dimension); `disagreement`: two watches sat on opposite sides of the bar on some gating score.
          - `model` string, required
          - `watchedAt` string, date-time, required
          - `overallScore` number, required: The model's own holistic number on this watch.
          - `composedScore` number, nullable, required: The bar's composed score for this watch alone, carried scores in place.
          - `gatePassed` boolean, required: Whether this watch alone cleared the bar.
          - `dimensions` object, required: Each dimension as this watch scored it, after its own findings' severity caps.
            - `lipSync` number, required
            - `promptAdherence` number, required
            - `visualFidelity` number, required
            - `motionNaturalness` number, required
            - `identityContinuity` number, required
            - `textPlacement` number, required
            - `audioSync` number, required
            - `transitions` number, required
          - `costUsd` number, required: What this watch counts against the extra-watch spend cap (USD).
          - `priced` boolean, required: False when the model has no price on file and `costUsd` is the flat per-watch estimate.
        - `dimensions` object, required
          - `lipSync` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `promptAdherence` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `visualFidelity` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `motionNaturalness` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `identityContinuity` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `textPlacement` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `audioSync` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
          - `transitions` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
            - `scores` number[], required: In watch order (carried: the carried report's own).
            - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
            - `watches` integer[], required: Which of this report's watches it used; empty when carried.
            - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
              - …
        - `overall` VideoCoverageScoreDistribution, required: How one score was decided: the scores of the watches it used and their median (the number the bar reads), or the report it was carried from.
          - `scores` number[], required: In watch order (carried: the carried report's own).
          - `median` number, required: The median of `scores` (an even count: the mean of the middle two) — equal to the report's score.
          - `watches` integer[], required: Which of this report's watches it used; empty when carried.
          - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
            - `reportId` string, required
            - `reportVersion` integer, nullable, required
            - `masterUrl` string, required: The master that report watched.
        - `carriedFrom` VideoCoverageCarriedFrom, required: The earlier report a score was carried from: a master of the same cut whose picture is frame-identical (its sampled decoded frames hash the same) and was asked the same things.
          - `reportId` string, required
          - `reportVersion` integer, nullable, required
          - `masterUrl` string, required: The master that report watched.
        - `stoppedBecause` 'decisive' | 'agreement' | 'max_watches' | 'spend_cap' | 'watch_failed' | 'carried', required: `decisive`: one watch, clear of the bar by the margin; `agreement`: two watches on the same side of the bar on every gating score; `max_watches`: three; `spend_cap`: another was wanted but this master's extra-watch spend cap was reached; `watch_failed`: another was wanted but could not run; `carried`: no watch, picture and sound identical to an earlier judged master.
        - `nearGateMargin` number, required: Within this many points of the bar a single watch is not trusted.
        - `maxWatches` integer, required
        - `extraSpendUsd` number, required: What this report spent on watches beyond its first (USD).
        - `extraSpendCapUsd` number, required: The most every report of one master may spend on watches beyond their first (USD).
        - `pictureFingerprint` string, nullable, required: Hash of the master's sampled decoded frames and what each part was asked to show (null: not measured).
        - `soundFingerprint` string, nullable, required: Hash of its decoded sound on that picture and what it was meant to sound like (null: not measured, or no sound).
      - `lipSync` VideoCoverageLipSync: MEASURED LIP SYNC: every spoken line of the master, measured on the take it plays from. The judge is shown these; each `miss` is also a `measured` lip-sync finding.
        - `metricVersion` string, required: The mouth check's code version the lines were judged under.
        - `lines` VideoCoverageLipSyncLine[], required
          - `unit` object, nullable, required
            - `kind` 'chapter' | 'beat', required
            - `index` integer, required
            - `number` integer, required
            - `title` string, required
          - `callId` string, required: The render call the line plays from (a miss is retaken with the render-clip op and this `callId`).
          - `take` integer, nullable, required: The selected take the master plays.
          - `lineRef` integer, required
          - `speaker` string, required
          - `text` string, required: The line's words.
          - `voice` string, required: `on_camera`, `voice_over` or `off_screen`.
          - `startSeconds` number, required: Where it is spoken, in seconds of the master.
          - `endSeconds` number, required
          - `timecode` string, required
          - `verdict` 'pass' | 'miss' | 'uncertain' | 'not_measured', required: `miss`: a measured miss — also a `measured` lip-sync finding the judge cannot clear; `uncertain`: a reading inside the band around its limit (neither); `pass`; `not_measured`: no face could be read or the check never ran (a take watcher's look is not a measurement) — the judge's own look decides it.
          - `severity` 'minor' | 'major' | 'critical', nullable, required: A miss's severity: `critical` when the mouth does not move at all or the wrong face speaks the line, else `major`. Null otherwise.
          - `criteria` object[], required: Each criterion missed or uncertain, misses first: the face, `criterion` (`correlation`, `lag`, `trailing_motion`, `articulation` — the lips barely part under the voice — `articulation_stretch`, `still_open_run`, `still_open_share`, `still_openings`, `watcher_lip_sync`), its `value`, its `limit` and its `words`.
            - `name` string, required
            - `role` 'speaker' | 'still', required
            - `criterion` string, required
            - `outcome` 'fail' | 'uncertain', required
            - `value` number, required
            - `limit` number, required
            - `words` string, required
          - `reason` string, nullable, required: Why it missed, is uncertain, or could not be measured, with the numbers. Null on a pass.
          - `faceHeightPx` number, nullable, required: The speaker's face height in the take's pixels.
          - `correlation` number, nullable, required: The speaker's mouth against the voice (r at the best lag).
          - `voicedOpenness` number, nullable, required: The speaker's mean openness under the voice, 0 closed to 3 wide (a speaking mouth averages at least 1.35).
          - `rejudged` boolean, required: True when the take's stored reading was judged again under the current numbers against the voice it was sent.
      - `transitions` VideoCoverageTransition[], nullable: EVERY CUT of the master, in order, and whether it follows the part before it. Each cut that is `weak` or `lost` is also a `transitions` finding with the same remedy. Absent on a report written before cuts were judged.
        - `from` object, nullable, required
          - `kind` 'chapter' | 'beat' | 'title', required
          - `index` integer, required
          - `number` integer, required
          - `title` string, required
        - `to` object, required
          - `kind` 'chapter' | 'beat' | 'title', required
          - `index` integer, required: The key every edit takes.
          - `number` integer, required
          - `title` string, required
        - `atSeconds` number, required: Where the cut falls, in seconds of the master.
        - `timecode` string, required: `m:ss`, for a person.
        - `verdict` 'follows' | 'weak' | 'lost', required: `follows`; `weak` (the link is faint, or half carries the viewer); `lost` (nothing connects the two: a non-sequitur).
        - `observation` string, required: What carries a viewer across the cut — the look, the object, the sound, the cause, the contrast — or what is missing.
        - `planned` string, nullable, required: The link the plan states for this cut (`whyItFollows` of `to`), or null when it states none.
        - `plannedLink` 'seen' | 'not_seen' | 'none_planned', required: Whether the watcher saw or heard the planned link: `seen`, `not_seen`, or `none_planned` (always, when the plan states none).
        - `fix` string, required: The concrete change that makes the cut follow; empty when it follows.
        - `remedy` VideoCoverageRemedy, required: `retake_call`: render a new take of `callId` (priced); `rerender_text`: render the unit's on-screen text again (priced); `rescore`: the score laid under the master is measured silent there — score the cut to picture again (a retake never fixes dead air in the score); `revise_plan`: a cut that does not follow because the plan gives it no link (or one too weak to carry it) — give the unit its link in the plan (the chapter or beat refine: `whyItFollows`, and the look, object or sound staged in it); `trim_capture`: measured — the picture went blank for `frames` frames at the `head` or `tail` of an app-capture beat, and the beat keeps a stretch of its recording that does not show them (free, run by the automatic fixes); `lift_voice`: measured — the narration there sits only `gapLu` LU over the music between its lines, under the 6 LU it needs, and the automatic fixes lower the music under it (free; a mix, never a sync or a retake); `none`: nothing one action fixes.
          - `kind` 'retake_call' | 'rerender_text' | 'rescore' | 'revise_plan' | 'trim_capture' | 'lift_voice' | 'none', required
          - `gapLu` number: `lift_voice` only: how many LU the narration sits over the music between its lines, as measured on the master.
          - `callId` string
          - `edge` 'head' | 'tail': `trim_capture` only: the end of the beat the blank frames sit at.
          - `frames` integer: `trim_capture` only: how many blank frames were measured there.
    - `createdAt` string, date-time, nullable, required
    - `updatedAt` string, date-time, nullable, required

## 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/4534f5d25540?raw)
