---
title: "Generate the background clip for a motion-over-clip theater beat."
method: POST
path: "/artifacts/{artifactId}/theater-motion-clip"
tags: ["Artifacts"]
---

# Generate the background clip for a motion-over-clip theater beat.

`POST /artifacts/{artifactId}/theater-motion-clip`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/artifacts/{artifactId}/theater-motion-clip`
- Auth: HTTP bearer

Generates the BACKGROUND CLIP a "motion-over-clip" theater motion beat plays its text over (author the beat first with POST /artifacts/{artifactId}/theater-motion, compositionKind "motion-over-clip"). Async — poll GET /artifacts/{artifactId} for the clip status. Returns `shareUrl`. Requires `Idempotency-Key`. Scope: `artifact:publish`.

## Headers

- `Idempotency-Key` string, required

## Request body

- TheaterMotionClipRequest: Background clip generation for a motion-over-clip theater beat.
  - `sceneIndex` integer, required: Zero-based scene index.
  - `entryIndex` integer, required: Zero-based script entry of the motion-over-clip beat.
  - `prompt` string: Override look for the background clip (falls back to the beat's stored prompt).
  - `durationSeconds` integer: Clip length in seconds (4–30). ⚠️ Renders past 10s were MEASURED to drift off-prompt, invent their own internal cuts and lose their location entirely; everything at 4–10s held. Keep a beat at 10s or under unless a long take is a deliberate choice.

## Response `200`

The queued clip + a shareable theater video link.

- TheaterMotionResult: The committed motion beat plus a shareable link to the enhanced theater video.
  - `artifactId` string, required
  - `shareUrl` string: Watchable link to the enhanced theater video.

## 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 story artifact 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)
