---
title: "Apply a short suggestion to a project timeline"
method: POST
path: "/workspace/media/assets/{assetId}/short-suggestions/{suggestionId}/apply"
tags: ["Media Library"]
---

# Apply a short suggestion to a project timeline

`POST /workspace/media/assets/{assetId}/short-suggestions/{suggestionId}/apply`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/workspace/media/assets/{assetId}/short-suggestions/{suggestionId}/apply`
- Auth: API key in header `Authorization`

Apply a short suggestion to a project timeline.

## Path parameters

- `assetId` string, required
- `suggestionId` string, required

## Request body

- object
  - `project_id` string, required
  - `caption_style_id` string, nullable
  - `mark_saved` boolean
  - `allow_unverified_export` boolean
  - `automatic_layout` object
    - `enabled` boolean, required
    - `content_type_hint` 'auto' | 'podcast' | 'tutorial' | 'generic', required
    - `layout_strategy` 'auto' | 'demo' | 'letterbox' | 'split' | 'focus' | 'speaker_grid' | 'webinar' | 'webinar_stack' | 'gameplay', required
    - `aspect_ratio_override` '9:16' | '16:9' | '1:1' | '4:5', nullable, required

## Response `200`

Successful response

- object
  - `success` boolean, required
  - `project_id` string, required
  - `asset_id` string, required
  - `suggestion_id` string, required
  - `suggestion_status` 'saved' | 'draft' | 'dismissed', required
  - `timeline_item_id` string, required
  - `trim_start_seconds` number, required
  - `trim_end_seconds` number, required
  - `duration_seconds` number, required
  - `source_duration_seconds` number, required
  - `captions_added` number, required
  - `caption_style_id` string, nullable, required
  - `automatic_layout_attempted` boolean, required
  - `automatic_layout_applied` boolean, required
  - `automatic_layout_fallback_used` boolean, required
  - `speaker_aware_applied` boolean, required
  - `visual_qa_status` 'not_required' | 'pending' | 'passed' | 'failed' | 'bypassed', required
  - `visual_qa_required` boolean, required
  - `visual_qa_passed` boolean, required
  - `preview_frame_count` number, required
  - `qa_bypassed` boolean, required
  - `visual_qa` object, nullable, required
    - `summary` string, required
    - `issues` object[], required
      - `severity` 'info' | 'warning' | 'critical', required
      - `title` string, required
      - `details` string, required
      - `suggested_fix` string, nullable, required
    - `suggested_next_edits` string[], required
    - `confidence` number, required
    - `previews` object[], required
      - `preview_url` string, required
      - `expires_at` string, required
      - `storage_key` string, required
      - `frame` number, required
      - `time_seconds` number, required
      - `width` number, required
      - `height` number, required
      - `image_format` 'jpeg' | 'png', required
    - `visual_debug` object, nullable, required
      - `layout_key` string, nullable, required
      - `visible_media_rect` object, nullable, required
        - `left` number, required
        - `top` number, required
        - `width` number, required
        - `height` number, required
      - `active_split_gap_rect` object, nullable, required
        - `left` number, required
        - `top` number, required
        - `width` number, required
        - `height` number, required
  - `primary_layout` 'manual' | 'legacy' | 'portrait_landscape_letterbox' | 'portrait_dual_speaker_split' | 'portrait_dual_speaker_focus_cut' | 'portrait_tutorial_screen_focus' | 'portrait_tutorial_facecam_stack' | 'portrait_speaker_grid' | 'portrait_webinar_facecam_stack' | 'portrait_webinar_speaker_stack' | 'portrait_gameplay_facecam_stack', nullable, required
  - `analysis_status` 'missing' | 'pending' | 'processing' | 'completed' | 'failed', required
  - `analysis_version` number, nullable, required
  - `layout_summary` object, nullable, required
    - `primary_layout` 'manual' | 'legacy' | 'portrait_landscape_letterbox' | 'portrait_dual_speaker_split' | 'portrait_dual_speaker_focus_cut' | 'portrait_tutorial_screen_focus' | 'portrait_tutorial_facecam_stack' | 'portrait_speaker_grid' | 'portrait_webinar_facecam_stack' | 'portrait_webinar_speaker_stack' | 'portrait_gameplay_facecam_stack', nullable, required
    - `layouts_used` string[], required
    - `segment_count` number, required
    - `split_segment_count` number, required
    - `focus_segment_count` number, required
    - `letterbox_segment_count` number, required
    - `fallback_segment_count` number, 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)
