---
title: "Migrate a legacy overlay carousel onto slots"
method: POST
path: "/carousels/{projectId}/migrate"
tags: ["Project Management"]
---

# Migrate a legacy overlay carousel onto slots

`POST /carousels/{projectId}/migrate`

## Request

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

Rebuild a compile document from timeline media and title/body overlays.

## Path parameters

- `projectId` string, uuid, required

## Response `200`

Successful response

- object
  - `project_id` string, uuid, required
  - `revision` integer, required
  - `name` string, required
  - `platform` 'tiktok_photo' | 'instagram_4x5' | 'linkedin', nullable, required
  - `locale` string, nullable, required
  - `frame` object, required
    - `width` integer, required
    - `height` integer, required
    - `aspect_ratio` string, required
  - `style` object, nullable, required
    - `chip` object
      - `font_family` string
      - `font_weight` union
        - integer
        - string
      - `font_size` integer
      - `color` string
      - `background` string
      - `padding_x` integer
      - `padding_y` integer
      - `radius` integer
      - `max_lines_per_chip` integer
  - `slides` object[], required
    - `index` integer, required
    - `role` 'hook' | 'body' | 'proof' | 'cta', nullable, required
    - `lines` string[], required
    - `slots` object, required
    - `layout` 'chip_stack_ui' | 'chip_stack_face_safe' | 'chip_stack_top' | 'title_body_card', nullable, required
    - `visual` object, required
      - `kind` 'creative_source' | 'media_asset' | 'generate' | 'solid' | 'gradient' | 'html' | 'template', required
      - `media_asset_id` string, uuid
      - `prompt` string
      - `model_id` string
      - `color` string
      - `colors` string[]
      - `html` string
      - `template_id` string
      - `source_media_asset_id` string, uuid
      - `creative_artifact_id` string, uuid
      - `crop` object
        - `left` number, required
        - `top` number, required
        - `width` number, required
        - `height` number, required
      - `creative_source` object
        - `artifact_id` string, uuid, required
        - `project_id` string, uuid, required
        - `source_revision_id` string, uuid, required
        - `source_revision` integer, required
        - `source_hash` string, required
        - `runtime_identity` string, required
        - `composition_id` string, required
        - `frame` integer, required
        - `width` integer, required
        - `height` integer, required
        - `fps` number, required
        - `frame_hash` string, required
        - `media_asset_id` string, uuid, required
        - `controls` object, nullable, required
          - `file` string, ends_with, required
          - `fields` union[], required
            - union
              - …
        - `values` object, required
    - `photo_url` string, nullable
    - `slot_urls` object
  - `templates` object[], required
    - `id` string, required
    - `label` string, required
    - `family` 'photo' | 'designed', required
    - `slots` object[], required
      - `key` string, required
      - `label` string, required
  - `kit` object
    - `themes` object[], required
      - `id` string, uuid, required
      - `name` string, required
      - `scope` 'project' | 'brand', required
      - `fontFamily` string, required
      - `titleColor` string, required
      - `bodyColor` string, required
      - `background` string, required
      - `pageColor` string, required
      - `overlayEnabled` boolean, required
      - `overlayOpacity` integer, required
      - `logoAssetId` string, uuid, nullable
    - `templates` object[], required
      - `id` string, uuid, required
      - `name` string, required
      - `scope` 'project' | 'brand', required
      - `template_id` string, required
      - `slots` object, required
    - `active_theme_id` string, uuid, nullable, required
  - `font_faces` object[]
    - `family` string, required
    - `src` string, required
    - `weight` string, required
    - `style` 'normal' | 'italic' | 'oblique', required
    - `unicodeRange` string, required
  - `can_undo` boolean, required
  - `warnings` object[], required
    - `code` string, required
    - `message` string, required
    - `field` string
    - `repair` string
  - `next_actions` object[], required
    - `method` 'GET' | 'POST' | 'PATCH' | 'DELETE', required
    - `path` string, required
    - `reason` 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)
