---
title: "Edit timeline items"
method: POST
path: "/projects/{projectId}/timeline/edits"
tags: ["Timeline Editing"]
---

# Edit timeline items

`POST /projects/{projectId}/timeline/edits`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/projects/{projectId}/timeline/edits`
- Auth: API key in header `Authorization`

Edit timeline items.

## Path parameters

- `projectId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- union
  - union
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string, required
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[], required
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
  - object
    - `action` 'split', required
    - `timeline_item_id` string, required
    - `trim_start_delta_seconds` number
    - `trim_end_delta_seconds` number
    - `items` object[]
      - `timeline_item_id` string, required
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - `snap_to_frame` boolean
    - `split_at_seconds` number, required
    - `timeline_item_ids` string[]
    - `auto_pack` boolean
    - `new_start_seconds` number
    - `new_layer_index` integer
    - `position_x` number
    - `position_y` number
    - `width_px` integer, nullable
    - `height_px` integer, nullable
    - `keep_aspect_ratio` boolean
  - object
    - `action` 'delete', required
    - `timeline_item_id` string
    - `trim_start_delta_seconds` number
    - `trim_end_delta_seconds` number
    - `items` object[]
      - `timeline_item_id` string, required
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - `snap_to_frame` boolean
    - `split_at_seconds` number
    - `timeline_item_ids` string[], required
    - `auto_pack` boolean
    - `new_start_seconds` number
    - `new_layer_index` integer
    - `position_x` number
    - `position_y` number
    - `width_px` integer, nullable
    - `height_px` integer, nullable
    - `keep_aspect_ratio` boolean
  - union
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string, required
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number, required
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[], required
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number, required
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
  - union
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number, required
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number, required
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable, required
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable, required
      - `keep_aspect_ratio` boolean
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` object[]
        - `timeline_item_id` string, required
        - `trim_start_delta_seconds` number
        - `trim_end_delta_seconds` number
        - `new_start_seconds` number
        - `new_layer_index` integer
        - `position_x` number
        - `position_y` number
        - `width_px` integer, nullable
        - `height_px` integer, nullable
        - `keep_aspect_ratio` boolean
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean, required
    - object
      - `action` 'trim' | 'split' | 'delete' | 'move' | 'transform', required
      - `timeline_item_id` string
      - `trim_start_delta_seconds` number
      - `trim_end_delta_seconds` number
      - `items` union[], required
        - union
          - object
            - `timeline_item_id` string, required
            - `trim_start_delta_seconds` number
            - `trim_end_delta_seconds` number
            - `new_start_seconds` number
            - `new_layer_index` integer
            - `position_x` number, required
            - `position_y` number
            - `width_px` integer, nullable
            - `height_px` integer, nullable
            - `keep_aspect_ratio` boolean
          - object
            - `timeline_item_id` string, required
            - `trim_start_delta_seconds` number
            - `trim_end_delta_seconds` number
            - `new_start_seconds` number
            - `new_layer_index` integer
            - `position_x` number
            - `position_y` number, required
            - `width_px` integer, nullable
            - `height_px` integer, nullable
            - `keep_aspect_ratio` boolean
          - object
            - `timeline_item_id` string, required
            - `trim_start_delta_seconds` number
            - `trim_end_delta_seconds` number
            - `new_start_seconds` number
            - `new_layer_index` integer
            - `position_x` number
            - `position_y` number
            - `width_px` integer, nullable, required
            - `height_px` integer, nullable
            - `keep_aspect_ratio` boolean
          - object
            - `timeline_item_id` string, required
            - `trim_start_delta_seconds` number
            - `trim_end_delta_seconds` number
            - `new_start_seconds` number
            - `new_layer_index` integer
            - `position_x` number
            - `position_y` number
            - `width_px` integer, nullable
            - `height_px` integer, nullable, required
            - `keep_aspect_ratio` boolean
          - object
            - `timeline_item_id` string, required
            - `trim_start_delta_seconds` number
            - `trim_end_delta_seconds` number
            - `new_start_seconds` number
            - `new_layer_index` integer
            - `position_x` number
            - `position_y` number
            - `width_px` integer, nullable
            - `height_px` integer, nullable
            - `keep_aspect_ratio` boolean, required
      - `snap_to_frame` boolean
      - `split_at_seconds` number
      - `timeline_item_ids` string[]
      - `auto_pack` boolean
      - `new_start_seconds` number
      - `new_layer_index` integer
      - `position_x` number
      - `position_y` number
      - `width_px` integer, nullable
      - `height_px` integer, nullable
      - `keep_aspect_ratio` boolean

## Response `200`

Successful response

- union
  - object
    - `action` 'trim', required
    - `result` union, required
      - object
        - `success` boolean, required
        - `trimmed_count` integer, required
        - `failed_count` integer, required
        - `items` object[], required
          - `timeline_item_id` string, required
          - `success` boolean, required
          - `trim_start_seconds` number, nullable, required
          - `trim_end_seconds` number, nullable, required
          - `new_duration_seconds` number, nullable, required
          - `error` string, nullable, required
        - `failed_items` object[], required
          - `timeline_item_id` string, required
          - `error` string, required
          - `error_code` 'validation_error' | 'not_found' | 'permission_denied' | 'revision_conflict' | 'idempotency_conflict' | 'operation_in_progress' | 'operation_previous_failure' | 'sequence_busy' | 'mutation_failed', required
          - `retryable` boolean, required
          - `error_details` object, required
        - `message` string
      - object
        - `success` boolean, required
        - `timeline_item_id` string, required
        - `trim_start_units` number, required
        - `trim_end_units` number, required
        - `trim_start_seconds` number, required
        - `trim_end_seconds` number, required
        - `new_duration_seconds` number, required
        - `message` string
  - object
    - `action` 'split', required
    - `result` object, required
      - `success` boolean, required
      - `left_id` string, required
      - `right_id` string, required
      - `split_at_seconds` number, required
      - `message` string
  - object
    - `action` 'delete', required
    - `result` union, required
      - object
        - `success` boolean, required
        - `deleted_count` integer, required
        - `failed_count` integer, required
        - `deleted_items` object[], required
          - `id` string, required
          - `name` string, required
          - `type` string, required
        - `failed_items` object[], required
          - `timeline_item_id` string, required
          - `error` string, required
          - `error_code` 'validation_error' | 'not_found' | 'permission_denied' | 'revision_conflict' | 'idempotency_conflict' | 'operation_in_progress' | 'operation_previous_failure' | 'sequence_busy' | 'mutation_failed', required
          - `retryable` boolean, required
          - `error_details` object, required
        - `captions_removed` integer, required
        - `packed` boolean, required
        - `clips_shifted` integer, required
        - `message` string
      - object
        - `success` boolean, required
        - `deleted_item_id` string, required
        - `deleted_item_name` string, nullable, required
        - `deleted_item_type` string, nullable, required
        - `captions_removed` number, required
        - `message` string
  - object
    - `action` 'move', required
    - `result` union, required
      - object
        - `success` boolean, required
        - `repositioned_count` integer, required
        - `failed_count` integer, required
        - `items` object[], required
          - `timeline_item_id` string, required
          - `previous_start_seconds` number, required
          - `new_start_seconds` number, required
          - `previous_layer_index` number, required
          - `new_layer_index` number, required
        - `failed_items` object[], required
          - `timeline_item_id` string, required
          - `error` string, required
          - `error_code` 'validation_error' | 'not_found' | 'permission_denied' | 'revision_conflict' | 'idempotency_conflict' | 'operation_in_progress' | 'operation_previous_failure' | 'sequence_busy' | 'mutation_failed', required
          - `retryable` boolean, required
          - `error_details` object, required
        - `message` string
      - object
        - `success` boolean, required
        - `timeline_item_id` string, required
        - `previous_start_seconds` number, required
        - `new_start_seconds` number, required
        - `previous_layer_index` number, required
        - `new_layer_index` number, required
        - `warnings` string[]
  - object
    - `action` 'transform', required
    - `result` union, required
      - object
        - `success` boolean, required
        - `updated_count` integer, required
        - `failed_count` integer, required
        - `items` object[], required
          - `timeline_item_id` string, required
          - `success` boolean, required
          - `error` string, nullable, required
        - `failed_items` object[], required
          - `timeline_item_id` string, required
          - `error` string, required
          - `error_code` 'validation_error' | 'not_found' | 'permission_denied' | 'revision_conflict' | 'idempotency_conflict' | 'operation_in_progress' | 'operation_previous_failure' | 'sequence_busy' | 'mutation_failed', required
          - `retryable` boolean, required
          - `error_details` object, required
        - `message` string
      - object
        - `success` boolean, required
        - `timeline_item_id` string
        - `asset_type` string, nullable
        - `previous` object
          - `position_x` number, nullable, required
          - `position_y` number, nullable, required
          - `width_px` number, nullable, required
          - `height_px` number, nullable, required
          - `keep_aspect_ratio` boolean, nullable, required
        - `updated` object
          - `position_x` number, nullable, required
          - `position_y` number, nullable, required
          - `width_px` number, nullable, required
          - `height_px` number, nullable, required
          - `keep_aspect_ratio` boolean, nullable, required
        - `message` string
        - `error` string

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