---
title: "Create a revised faceless production plan"
method: POST
path: "/projects/{projectId}/faceless/plans/{revisionId}/revise"
tags: ["AI Generation"]
---

# Create a revised faceless production plan

`POST /projects/{projectId}/faceless/plans/{revisionId}/revise`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/projects/{projectId}/faceless/plans/{revisionId}/revise`
- Auth: API key in header `Authorization`

Requires an active paid plan. Copies one immutable revision into a new draft with explicit scene, character, or model changes. It does not call a planning model or generate media.

## Path parameters

- `projectId` string, uuid, required
- `revisionId` string, uuid, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `scene_updates` object[]
    - `scene_index` integer, required
    - `title` string
    - `character_ids` string[]
    - `image_prompt` string
    - `motion_prompt` string
  - `character_updates` object[]
    - `character_id` string, required
    - `name` string
    - `canonical_description` string
    - `anchor_prompt` string
  - `style_anchor_prompt` string: Self-contained prompt for the single reference frame that locks rendering medium, palette, lighting, and grain for every scene. No characters, no text, no interfaces.
  - `image_model_id` string
  - `video_model` string

## Response `200`

Successful response

- object
  - `series` object, nullable, required
    - `id` string, uuid, required
    - `revision` integer, required
    - `name` string, required
  - `id` string, required
  - `project_id` string, required
  - `revision` number, required
  - `status` 'draft' | 'plan_approved' | 'preproduction_processing' | 'awaiting_asset_approval' | 'asset_approved' | 'generating' | 'complete' | 'failed', required
  - `plan` object, required
    - `contentDirection` object, nullable
      - `capturedAt` string, required
      - `scope` object, required
        - `kind` 'brand' | 'series', required
        - `seriesId` string, uuid, nullable, required
        - `name` string, required
      - `brand` object, required
        - `title` string, required
        - `sources` object[], required
          - `url` string, uri, required
          - `title` string, required
        - `path` string, required
        - `documentId` string, uuid, nullable, required
        - `revision` integer, required
        - `markdown` string, required
        - `contentHash` string, required
      - `series` object, nullable, required
        - `title` string, required
        - `sources` object[], required
          - `url` string, uri, required
          - `title` string, required
        - `path` string, required
        - `documentId` string, uuid, nullable, required
        - `revision` integer, required
        - `markdown` string, required
        - `contentHash` string, required
    - `version` 'faceless-production-plan-v1', required
    - `productionProfile` 'dramatic_vertical_v1', required
    - `visualMode` 'generated_only', required
    - `plannerModelId` string, required
    - `imageModelId` string, required
    - `videoModelId` string, required
    - `aspectRatio` '9:16', required
    - `voiceId` string, nullable, required
    - `includeCaptions` boolean, required
    - `captionStyleId` string, nullable, required
    - `generateBackgroundMusic` boolean, required
    - `generateSoundEffects` boolean, required
    - `script` string, required
    - `storyKitSnapshot` object, nullable
      - `version` 'story-kit-snapshot-v1', required
      - `storyKitId` string, required
      - `revision` number, required
      - `name` string, required
      - `description` string, nullable, required
      - `visualStyle` string, required
      - `styleReferenceAssetIds` string[], required
      - `facts` string[], required
      - `locations` object[], required
        - `id` string, required
        - `name` string, required
        - `canonicalDescription` string, required
        - `referenceAssetIds` string[], required
        - `facts` string[], required
      - `narratorCharacterId` string, nullable, required
      - `characters` object[], required
        - `characterId` string, required
        - `name` string, required
        - `type` 'human' | 'fictional' | 'other', required
        - `species` string, nullable, required
        - `canonicalDescription` string, required
        - `storyFacts` string[], required
        - `defaultVoiceId` string, nullable, required
        - `defaultVoiceStyle` string, nullable, required
        - `primaryReferenceAssetId` string, nullable, required
        - `referenceAssetIds` string[], required
    - `styleAnchorPrompt` string, nullable
    - `characters` object[], required
      - `id` string, required
      - `name` string, required
      - `canonicalDescription` string, required
      - `anchorPrompt` string, required
      - `source` 'generated' | 'workspace'
      - `sourceCharacterId` string, nullable
      - `referenceAssetIds` string[]
      - `storyFacts` string[]
      - `voiceId` string, nullable
      - `voiceStyle` string, nullable
    - `scenes` object[], required
      - `index` number, required
      - `title` string, required
      - `narration` string, required
      - `originalCue` string, nullable, required
      - `characterIds` string[], required
      - `locationId` string, nullable
      - `imagePrompt` string, required
      - `motionPrompt` string, required
      - `startSeconds` number, required
      - `endSeconds` number, required
      - `durationSeconds` number, required
      - `factualValidation` object, required
        - `status` 'supported' | 'needs_review', required
        - `note` string, nullable, required
    - `costEstimate` object, required
      - `unit` 'credits', required
      - `planning` number, required
      - `styleAnchor` number
      - `characterAnchors` number, required
      - `keyframes` number, required
      - `animation` number, required
      - `semanticActionQa` number
      - `total` number, required
  - `preproduction_assets` object, nullable, required
    - `collectionId` string, nullable, required
    - `styleAnchorAssetId` string, nullable
    - `characterAnchors` object[], required
      - `characterId` string, required
      - `assetId` string, required
    - `keyframes` object[], required
      - `sceneIndex` number, required
      - `assetId` string, required
      - `referenceAssetIds` string[], required
    - `semanticActionQa` object
      - `version` 'semantic-action-v1', required
      - `status` 'passed' | 'failed' | 'unavailable', required
      - `evaluatedAt` string, required
      - `scenes` object[], required
        - `assetId` string, required
        - `sceneIndex` number, required
        - `version` 'semantic-action-v1', required
        - `status` 'passed' | 'failed' | 'unavailable', required
        - `plannedAction` string, required
        - `confidence` number, nullable, required
        - `summary` string, required
        - `detectedSubjectAction` string, nullable, required
        - `frames` object[], required
          - `position` 'early' | 'middle' | 'late', required
          - `timeSeconds` number, required
        - `firstAnalysis` object, nullable, required
          - `verdict` 'pass' | 'fail', required
          - `earlyState` string, required
          - `middleState` string, required
          - `lateState` string, required
          - `detectedSubjectAction` string, required
          - `actionProgressionObserved` boolean, required
          - `cameraMotionOnly` boolean, required
          - `summary` string, required
          - `confidence` number, required
        - `confirmationAnalysis` object, nullable, required
          - `verdict` 'pass' | 'fail', required
          - `earlyState` string, required
          - `middleState` string, required
          - `lateState` string, required
          - `detectedSubjectAction` string, required
          - `actionProgressionObserved` boolean, required
          - `cameraMotionOnly` boolean, required
          - `summary` string, required
          - `confidence` number, required
  - `review_options` object, required
    - `style_anchor` object, nullable, required
      - `label` string, required
      - `current_asset_id` string, nullable, required
      - `dependent_scene_indexes` number[], required
      - `estimated_regeneration_credits` number, required
    - `scenes` object[], required
      - `scene_index` number, required
      - `label` string, required
      - `current_asset_id` string, nullable, required
      - `estimated_regeneration_credits` number, required
    - `characters` object[], required
      - `character_id` string, required
      - `label` string, required
      - `current_asset_id` string, nullable, required
      - `dependent_scene_indexes` number[], required
      - `estimated_regeneration_credits` number, required
  - `preproduction_job_id` string, nullable, required
  - `generation_job_id` string, nullable, required
  - `error` string, nullable, required
  - `plan_approved_at` string, nullable, required
  - `assets_approved_at` string, nullable, required
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `500`: Internal server error

---

[API](https://skmtc.dev/blitzreels/apis/blitzreels-api.md) · [All operations](https://skmtc.dev/blitzreels/apis/blitzreels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blitzreels/apis/blitzreels-api/revisions/35608b12471d?raw)
