---
title: "Reorder tracks"
method: PUT
path: "/v1/video-projects/{projectId}/tracks/reorder"
tags: ["Video Projects"]
---

# Reorder tracks

`PUT /v1/video-projects/{projectId}/tracks/reorder`

## Request

- Base URL: `https://api.neume.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.neume.io/v1/video-projects/{projectId}/tracks/reorder`
- Auth: none declared

## Path parameters

- `projectId` string, required

## Request body

- ReorderTracksDto
  - `trackIds` string[], required: Ordered array of track IDs

## Response `200`

- VideoProjectDto
  - `videoProjectId` string, required: Project ID
  - `title` string, required: Project title
  - `description` string: Project description
  - `prompt` string: Project prompt for AI context
  - `thumbnailUrl` string: Thumbnail URL
  - `width` number, required: Output width
  - `height` number, required: Output height
  - `fps` number, required: Output FPS
  - `status` 'DRAFT' | 'READY' | 'EXPORTING' | 'COMPLETED' | 'FAILED', required: Project status
  - `aspectRatio` 'LANDSCAPE' | 'PORTRAIT' | 'SQUARE', required: Aspect ratio
  - `tracks` TrackDto[], required: Tracks in this project
    - `trackId` string, required: Track ID
    - `type` 'VIDEO' | 'AUDIO', required: Track type
    - `name` string: Track display name
    - `order` number, required: Track order/z-index
    - `muted` boolean, required: Whether track is muted
    - `volume` number, required: Track volume 0.0-1.0
    - `clips` ClipDto[], required: Clips on this track
      - `clipId` string, required: Clip ID
      - `trackId` string, required: Track ID
      - `type` 'VIDEO' | 'AUDIO' | 'TEXT' | 'IMAGE' | 'CAPTION', required: Clip type
      - `startTime` number, required: Start time in seconds
      - `duration` number, required: Duration in seconds
      - `zIndex` number, required: Layer order for overlapping clips (higher = on top)
      - `posX` number: X position on canvas
      - `posY` number: Y position on canvas
      - `width` number: Width on canvas
      - `height` number: Height on canvas
      - `rotation` number: Rotation in degrees
      - `opacity` number: Opacity 0.0-1.0
      - `scaleX` number: Scale X
      - `scaleY` number: Scale Y
      - `transition` object: Transition to next clip
      - `captionWords` object: Word-level captions JSON
      - `captionStyle` string: Caption style preset name
      - `prompt` string: Scene description prompt
      - `imageUrl` string: Source image URL
      - `imageStatus` 'PENDING' | 'STARTING' | 'QUEUED' | 'PROCESSING' | 'COMPLETED' | 'FAILED': Image generation status
      - `videoUrl` string: Generated video URL
      - `videoStatus` 'PENDING' | 'STARTING' | 'QUEUED' | 'PROCESSING' | 'COMPLETED' | 'FAILED': Video generation status
      - `videoProgress` number: Video generation progress 0-100
      - `videoDuration` number: Duration of generated video in seconds
      - `videoPrompt` string: Prompt used for video generation
      - `videoGenType` 'NORMAL' | 'LIPSYNC' | 'MOTION_CONTROL': Video generation type
      - `motionVideoPath` string: S3 path for motion reference video (MOTION_CONTROL only)
      - `audioSync` boolean, required: Whether to sync with audio during generation
      - `text` string: Text content (text clips)
      - `textStyle` string: Text style: title | subtitle | caption
      - `textPosition` string: Text position: top | center | bottom
      - `fontColor` string: Font color hex
      - `backgroundColor` string: Background color hex
      - `fontFamily` string: Font family
      - `fontSize` number: Font size in px
      - `fontWeight` number: Font weight (300-700)
      - `textAlign` string: Text alignment: left | center | right
      - `letterSpacing` number: Letter spacing in em
      - `lineHeight` number: Line height multiplier
      - `strokeColor` string: Stroke color hex
      - `strokeWidth` number: Stroke width in px
      - `enterAnimation` object: Enter animation config
      - `exitAnimation` object: Exit animation config
      - `songId` string: Song ID for audio clips
      - `songTitle` string: Song title
      - `audioUrl` string: Direct audio file URL (uploaded audio assets)
      - `trimStart` number: Trim start in seconds
      - `trimEnd` number: Trim end in seconds
      - `createdAt` string, date-time, required: Creation date
  - `referenceImages` ReferenceImageDto[], required: Reference images
    - `videoProjectReferenceImageId` string, required: Reference image ID
    - `imageUrl` string, required: Image URL
    - `order` number, required: Display order
    - `createdAt` string, date-time, required: Creation date
  - `lyricsConfig` LyricsOverlayConfigDto
    - `lyricsOverlayConfigId` string, required: Lyrics overlay config ID
    - `songId` string, required: Song ID
    - `enabled` boolean, required: Whether lyrics are enabled
    - `style` string, required: Style: subtitle | karaoke
    - `position` string, required: Position: top | center | bottom
    - `sections` object[], required
      - `id` string, required
      - `text` string, required
      - `startTime` number, required
      - `endTime` number, required
  - `videoProjectAssets` VideoProjectAssetDto[]: Project assets
    - `videoProjectAssetId` string, required: Asset ID
    - `type` string, required: Asset type: IMAGE | VIDEO | AUDIO
    - `name` string: Asset name
    - `prompt` string: Prompt
    - `status` 'PENDING' | 'STARTING' | 'QUEUED' | 'PROCESSING' | 'COMPLETED' | 'FAILED', required: Generation status
    - `activeVersionId` string: Active version ID
    - `videoGenType` string: Video generation type
    - `sourceAssetId` string: Source image asset ID
    - `endFrameAssetId` string: End frame asset ID
    - `sourceImageUrl` string: Source image signed URL
    - `endFrameUrl` string: End frame signed URL
    - `motionVideoUrl` string: Motion video signed URL
    - `sourceImagePath` string: Source image S3 path
    - `endFramePath` string: End frame S3 path
    - `motionVideoPath` string: Motion video S3 path
    - `versions` VideoProjectAssetVersionDto[], required: Versions
      - `videoProjectAssetVersionId` string, required: Version ID
      - `versionNumber` number, required: Version number
      - `url` string, required: Asset URL (image, video, or audio)
      - `thumbnailUrl` string: Thumbnail URL (video assets)
      - `duration` number: Duration in seconds (video/audio)
      - `prompt` string: Prompt used for this version
      - `parentVersionId` string: Parent version ID
      - `source` string, required: Source: upload | generate | ai-edit
      - `createdAt` string, date-time, required: Creation date
    - `createdAt` string, date-time, required: Creation date
  - `createdAt` string, date-time, required: Creation date
  - `updatedAt` string, date-time, required: Last updated date

---

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