---
title: "Create clip from asset version"
method: POST
path: "/v1/video-projects/{projectId}/assets/{assetId}/add-to-timeline"
tags: ["Video Projects"]
---

# Create clip from asset version

`POST /v1/video-projects/{projectId}/assets/{assetId}/add-to-timeline`

## 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}/assets/{assetId}/add-to-timeline`
- Auth: none declared

## Path parameters

- `projectId` string, required
- `assetId` string, required

## Request body

- AddAssetToTimelineDto
  - `trackId` string, required: Track ID to add clip to
  - `startTime` number, required: Start time in seconds
  - `duration` number: Clip duration in seconds
  - `versionId` string: Specific version ID (defaults to active)

## Response `201`

- ClipDto
  - `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

---

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