Skip to main content

Overview

Clone Video takes a short video that already works and makes a new one like it: Hooked analyses the source’s story, structure and pacing, writes a new narration, reads it with your voice and generates a new visual for each scene. Use it to adapt a trend to your brand, test a competitor’s format with your own message, or turn one video into several variations. Every request needs sourceVideoUrl (a TikTok, Instagram or YouTube link) and voiceId (from GET /v1/voice/list). The look is taken from the source video, so there is no style preset: mediaType is ai-images (default) or ai-videos. targetDurationSeconds sets the length (default 30 seconds) and mustInclude something the new video has to mention. The create call answers with a projectId; the video arrives later.

From a TikTok, with AI images

From a YouTube Short, with AI video clips

With ai-videos the clips are chained frame to frame. presetSettings.quality picks the clip model (base, pro by default, ultra), or name one with presetSettings.aiModel.

Several variations of one Reel

Each request is a new project (and is charged as one). Send them one by one and keep each projectId:

Getting the video

Wait for the webhook or poll GET /v1/project/{projectId} until video.status is COMPLETED, then download video.url. A source that cannot be read (private, deleted, region-locked) makes the project fail; the webhook is called with "status": "FAILED" and the credits are refunded.
Send an Idempotency-Key header to retry safely: if a request times out or answers 5xx, sending it again with the same key and body returns the first answer instead of creating (and charging) the project twice.
Teams in bring-your-own-keys mode are not charged credits, but need OpenRouter and ElevenLabs in Settings → AI keys (and Gemini for the Omni Flash model). A missing key answers 402 missing_credentials with the list in missingProviders, before anything is created.
See the Clone Video reference for every field and error.