---
title: "Reselect a clip"
method: POST
path: "/clips/{clip_id}/reselect"
tags: ["Clip Creation"]
---

# Reselect a clip

`POST /clips/{clip_id}/reselect`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/clips/{clip_id}/reselect`
- Auth: API key in header `Authorization`

Reselect a clip.

## Path parameters

- `clip_id` string, required

## Request body

- object
  - `selection` object
    - `selection_mode` 'auto_best' | 'suggestion' | 'time_range'
    - `suggestion_id` string, nullable
    - `start_seconds` number, nullable
    - `end_seconds` number, nullable
  - `target` object, nullable
    - `aspect_ratio` '9:16'
    - `min_duration_seconds` number, nullable, required
    - `max_duration_seconds` number
  - `layout` object, nullable
    - `layout_mode` 'auto' | 'people_first' | 'screen_first' | 'preserve_full_source' | 'prefer_split' | 'prefer_focus' | 'prefer_tutorial' | 'prefer_demo'
    - `content_type_hint` 'auto' | 'podcast' | 'tutorial' | 'demo' | 'generic'
    - `tutorial_stack_ratio` 'screen_70_face_30' | 'screen_50_face_50'
  - `captions` object, nullable
    - `enabled` boolean
    - `style_id` string, nullable
    - `word_reveal_animation` 'none' | 'fade' | 'scale' | 'slide-up' | 'slide-left' | 'slide-mix' | 'pop' | 'drop' | 'slam' | 'typewriter' | 'glitch' | 'mask-reveal' | 'bounce-up' | 'split-reveal'
    - `max_lines_per_caption` integer
    - `words_per_line_limit` integer, nullable
    - `page_combine_ms` integer

## Response `200`

Successful response

- object
  - `clip` object, required
    - `clip_id` string, required
    - `project_id` string, nullable, required
    - `requested_project_name` string, nullable, required
    - `requested_clip_preset_id` 'default' | 'formation-clipperz' | 'demo-focus' | 'high-retention', nullable, required
    - `status` 'preparing_source' | 'awaiting_suggestions' | 'selecting_clip' | 'assembling' | 'qa_running' | 'needs_reselection' | 'needs_repair' | 'ready' | 'exporting' | 'exported' | 'failed', required
    - `next_action` 'poll' | 'reselect' | 'repair' | 'export' | 'stop', required
    - `error` object, nullable, required
      - `step` 'source' | 'transcript' | 'suggestions' | 'selection' | 'analysis' | 'assembly' | 'qa' | 'repair' | 'export', required
      - `code` string, required
      - `message` string, required
      - `detail` string, nullable, required
      - `expected` string, nullable, required
      - `why_failed` string, nullable, required
      - `how_to_fix` string[], required
      - `retryable` boolean, required
      - `retry_same_input` boolean, required
      - `upstream` object, nullable, required
        - `provider` 'clips_api' | 'workspace_media' | 'visual_qa' | 'remotion_lambda' | 'trigger_dev', required
        - `job_id` string, nullable, required
        - `export_id` string, nullable, required
        - `request_id` string, nullable, required
    - `blocking_error` object, nullable, required
      - `step` 'source' | 'transcript' | 'suggestions' | 'selection' | 'analysis' | 'assembly' | 'qa' | 'repair' | 'export', required
      - `code` string, required
      - `message` string, required
      - `detail` string, nullable, required
      - `expected` string, nullable, required
      - `why_failed` string, nullable, required
      - `how_to_fix` string[], required
      - `retryable` boolean, required
      - `retry_same_input` boolean, required
      - `upstream` object, nullable, required
        - `provider` 'clips_api' | 'workspace_media' | 'visual_qa' | 'remotion_lambda' | 'trigger_dev', required
        - `job_id` string, nullable, required
        - `export_id` string, nullable, required
        - `request_id` string, nullable, required
    - `waiting_reason` object, nullable, required
      - `code` string, required
      - `message` string, required
      - `retryable` boolean, required
      - `retry_same_input` boolean, required
    - `status_detail` object, nullable, required
      - `code` string, required
      - `message` string, required
      - `retryable` boolean, required
      - `retry_same_input` boolean, required
    - `source` object, required
      - `source_type` 'asset' | 'youtube', required
      - `asset_id` string, nullable, required
      - `youtube_url` string, nullable, required
      - `source_status` 'pending' | 'ready' | 'failed', required
      - `transcript_status` 'pending' | 'ready' | 'failed', required
      - `suggestions_status` 'pending' | 'ready' | 'failed', required
      - `suggestion_counts` object, required
        - `saved` integer, required
        - `drafts` integer, required
        - `total` integer, required
      - `suggestion_ai_run_ids` string[], required
      - `analysis_status` 'missing' | 'pending' | 'processing' | 'completed' | 'failed', required
      - `analysis_version` number, nullable, required
      - `canonical_duration_seconds` number, nullable, required
      - `processing` object, required
        - `processing_status` string, nullable, required
        - `processing_substage` string, nullable, required
        - `processing_error` string, nullable, required
        - `processing_errors` object, required
        - `processing_attempts` integer, nullable, required
        - `retryable` boolean, required
        - `provider_request_ids` object, required
          - `process_job_run_id` string, nullable, required
          - `transcribe_job_run_id` string, nullable, required
          - `provider_request_id` string, nullable, required
      - `suitability` object, required
        - `verdict` 'ready' | 'pending' | 'failed' | 'needs_reselection', required
        - `reason` string, nullable, required
        - `retryable` boolean, required
      - `readiness_warnings` string[], required
    - `selection` object, required
      - `selection_mode` 'auto_best' | 'suggestion' | 'time_range', required
      - `requested_suggestion_id` string, nullable, required
      - `applied_suggestion_id` string, nullable, required
      - `alternatives` object[], required
        - `suggestion_id` string, required
        - `title` string, required
        - `hook` string, required
        - `start_seconds` number, required
        - `end_seconds` number, required
        - `duration_seconds` number, required
        - `score` number, required
    - `clip_window` object, required
      - `start_seconds` number, nullable, required
      - `end_seconds` number, nullable, required
      - `duration_seconds` number, nullable, required
    - `layout` object, required
      - `requested_mode` 'auto' | 'people_first' | 'screen_first' | 'preserve_full_source' | 'prefer_split' | 'prefer_focus' | 'prefer_tutorial' | 'prefer_demo', required
      - `tutorial_stack_ratio` 'screen_70_face_30' | 'screen_50_face_50', required
      - `applied_mode` 'split' | 'focus' | 'letterbox' | 'fullscreen' | 'unknown', required
      - `primary_layout` string, nullable, required
      - `speaker_aware_applied` boolean, required
      - `fallback_used` boolean, required
      - `fallback_reason` string, nullable, required
      - `requested_mode_honored` boolean, required
      - `segments` object[], required
        - `start_seconds` number, required
        - `end_seconds` number, required
        - `duration_seconds` number, required
        - `layout_key` string, required
        - `caption_placement` 'between_speakers' | 'default', required
        - `panels` object[], required
          - `track_asset_id` string, required
          - `role` 'speaker' | 'share' | 'unknown', required
          - `canvas` object, required
            - `x` number, required
            - `y` number, required
            - `width` number, required
            - `height` number, required
          - `source_crop` object, required
            - `x` number, required
            - `y` number, required
            - `width` number, required
            - `height` number, required
          - `fit_mode` 'contain' | 'cover' | 'stretch', required
      - `warnings` string[], required
    - `captions` object, required
      - `enabled` boolean, required
      - `style_id` string, nullable, required
      - `word_reveal_animation` 'none' | 'fade' | 'scale' | 'slide-up' | 'slide-left' | 'slide-mix' | 'pop' | 'drop' | 'slam' | 'typewriter' | 'glitch' | 'mask-reveal' | 'bounce-up' | 'split-reveal', nullable, required
      - `max_lines_per_caption` integer, nullable, required
      - `words_per_line_limit` integer, nullable, required
      - `page_combine_ms` integer, nullable, required
      - `status` 'pending' | 'ready' | 'failed', required
      - `clip_window_aware` boolean, required
      - `item_count` integer, required
      - `warnings` string[], required
    - `qa` object, required
      - `required` boolean, required
      - `status` 'pending' | 'passed' | 'failed' | 'bypassed', required
      - `blocking` boolean, required
      - `score` number, nullable, required
      - `summary` string, nullable, required
      - `issues` object[], required
        - `severity` 'info' | 'warning' | 'critical', required
        - `code` string, required
        - `title` string, required
        - `details` string, required
        - `suggested_fix` string, nullable, required
      - `preview_urls` string[], required
      - `visual_debug_url` string, nullable, required
    - `export` object, required
      - `status` 'not_started' | 'exporting' | 'ready' | 'failed', required
      - `export_id` string, nullable, required
      - `download_url` string, nullable, required
      - `short_download_url` string, nullable, required
    - `delivery` object, required
      - `project_id` string, nullable, required
      - `export_id` string, nullable, required
      - `status` 'not_started' | 'exporting' | 'ready' | 'failed', required
      - `download_url` string, nullable, required
      - `short_download_url` string, nullable, required
      - `replacement_pending` boolean, required
    - `request_id` string, required
    - `created_at` string, required
    - `updated_at` string, required
  - `repair` object, nullable, required
    - `applied` boolean, required
    - `repair_mode` 'auto' | 'prefer_split' | 'prefer_focus' | 'prefer_tutorial' | 'prefer_demo' | 'move_captions_off_faces', required
    - `reason` string, nullable, required
    - `previous_timeline_item_id` string, nullable, required
    - `next_timeline_item_id` string, nullable, required
    - `qa_blocking_before` boolean, required
    - `qa_blocking_after` boolean, required
    - `warnings` 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)
