---
title: "Clones — several of me · שכפול — כמה אני בסרטון"
method: POST
path: "/v1/effects/clones"
tags: ["Effects · Layouts"]
---

# Clones — several of me · שכפול — כמה אני בסרטון

`POST /v1/effects/clones`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/effects/clones`
- Auth: HTTP bearer

Copies of the speaker, cut out and standing behind him — up to 5 of you in one frame. Or the classic shot: film 2–5 takes from a tripod, standing somewhere else each time, and they become one.

עותקים של הדובר, חתוכים ועומדים מאחוריו — עד 5 ממך בפריים אחד. או השוט הקלאסי: צלמו 2–5 טייקים מחצובה, כל פעם במקום אחר בפריים, והם מתחברים לשוט אחד.

One effect, one render: send the video (or nothing, for the canvas), the effect's `params` and when it plays (`start` + `duration` seconds, or `at` / `during` words) — every field has a default. The same effect stacks with others in `effects` of POST /v1/studio/edit. Preview: GET /v1/effects/clones.

**Billing:** Per second of output, like /v1/studio/edit, plus effect seconds: the seconds the clones are on screen × their weight (measured: the person matte and the composite; multi take: × the takes × 0.6, a take-second's measured share), priced like output seconds — GET /v1/effects/clones states it. Failed renders (a moving camera included) are not charged. · **Rate limit:** 30/min · **Asynchronous**

## Headers

- `Idempotency-Key` string
- `X-Tag` string
- `x-wait-ms` integer

## Request body

- object
  - `at` object: Start at a word (instead of a time)
    - `edge` 'start' | 'end', required: The moment the word starts, or the moment it ends
    - `word` string, required: The word's id (w0001…)
    - `offset_ms` number: Shift in ms, applied after the cuts (default 0)
  - `keep` object[]: Keep only these spans of the video (seconds) — every join between them is a cut a transition plays on
    - `end` number, required
    - `start` number, required
  - `trim` object: Use only this part of the video (seconds)
    - `end` number
    - `start` number
  - `start` number: seconds on the output — when it starts (default: the effect's own)
  - `words` object[]: Your own timed words (ms) instead of a transcript
    - `id` string
    - `end` number, required
    - `text` string, required
    - `start` number, required
  - `during` object: Start and end with a stretch of words (instead of a time and a duration)
    - `to` string, required: Id of the last word
    - `from` string, required: Id of the first word
    - `pad_end_ms` number: End this much later (default 0)
    - `pad_start_ms` number: Start this much earlier (default 0)
  - `output` object
    - `fit` 'crop' | 'blur' | 'pad': When the aspect ratio changes: crop the edges, blurred copy behind, or solid bars
    - `fps` number
    - `format` 'mp4' | 'webm' | 'mov' | 'gif' | 'mp3' | 'wav' | 'm4a' | 'jpg' | 'png'
    - `quality` 'draft' | 'standard' | 'high': high (default) = best picture; draft renders fastest for previews
    - `background` string: Bar colour for fit=pad
    - `resolution` '480' | '720' | '1080' | 'source': Short side in pixels (1080 = Full HD). `source` keeps the input size, max 1080
    - `aspect_ratio` 'original' | '9:16' | '16:9' | '1:1' | '4:5' | '4:3': 9:16 for Reels/TikTok/Shorts, 1:1 or 4:5 for feed, 16:9 for YouTube
  - `params` object: The effect's own settings (every field has a default)
    - `exit` 'dissolve' | 'none': dissolve = the copies fade out together at the end · none = they are there to the last frame
    - `mode` 'one_take' | 'multi_take': one_take = copies cut out of this one video (any talking head) · multi_take = 2–5 takes filmed from a tripod, the person somewhere else in each (send the other takes in `takes`)
    - `audio` union: multi_take: whose sound plays — the take's number (1 = video_url) or mix (all takes together). Captions and silence removal follow take 1's words
      - 'mix'
      - integer
    - `count` integer: People in the frame, the speaker included (one_take: 4 = the speaker + 3 copies). multi_take: the takes decide it
    - `depth` number: How far behind the speaker the copies stand: 0 = right next to him; higher = smaller, softer and a little darker
    - `scale` number: Size of the nearest copies, relative to the speaker
    - `takes` string[]: multi_take: the other takes (1–4 video URLs, same camera position); `video_url` is take 1
    - `layout` 'auto' | 'sides' | 'row' | 'grid' | 'trail' | 'as_filmed': one_take: sides (behind the speaker, left and right — the reference) · row (a row behind, heads peeking) · grid (two rows behind) · trail (a motion echo of the person only) · auto = sides. multi_take: as_filmed (everyone where they stood) = auto
    - `length` 'first' | 'longest' | 'shortest': multi_take: the video is as long as take 1 (first), the longest take, or the shortest
    - `mirror` boolean: Mirror every other copy (they face different ways; text on clothes is mirrored too)
    - `spread` number: sides: how far to the left and right the nearest copies stand, share of the frame width
    - `starts` number[]: multi_take: seconds skipped at the start of each of `takes`, to line them up with take 1 (take 1 keeps its own clock — the captions follow its words; trim it with the edit's `trim`)
    - `timing` 'offset' | 'same' | 'freeze': offset = each copy plays an earlier moment (so they never move together) · same = all move with the speaker · freeze = each copy holds a pose from an earlier moment
    - `exit_ms` integer: How long the dissolve takes, ms
    - `offsets` number[]: Each copy's own delay in seconds, nearest first (overrides offset_s)
    - `opacity` number: The copies' opacity (a trail fades by itself)
    - `shorter` 'freeze' | 'loop' | 'hide': multi_take: a take shorter than the video freezes on its last frame, loops, or leaves (fades out)
    - `enter_ms` integer: How long one copy's entrance takes, ms
    - `entrance` 'materialize' | 'pop' | 'slide' | 'fade' | 'none': How each copy appears: materialize (a white-blue glowing silhouette that settles, as in the reference) · pop (springs up) · slide (in from its side) · fade · none
    - `offset_s` number: offset / freeze: each copy this many seconds behind the one before (0.7 → 0.7, 1.4, 2.1 s); trail: a fifth of it
    - `stagger_ms` integer: The copies appear one after another, this many ms apart (0 = together)
  - `duration` number: seconds — how long it lasts
  - `video_url` string, uri: The video (required)
  - `language_code` string: Spoken language for the automatic transcript, e.g. he, en
  - `transcript_id` string: Reuse a transcript (captions effects)

## Response `200`

Completed (or 202 while processing)

- object
  - `id` string: Execution id — stable across internal retries; use it with GET /v1/executions/{id}
  - `status` 'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
  - `operation` string
  - `tag` string, nullable: Your X-Tag, if sent
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `output` object: Operation result (see each operation). While a Studio render is processing: `stage` (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), `phase` (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), `progress` (a percent, 0–100) and `progress_fraction` (0–1), `eta_seconds` (seconds left, never below 0) and `estimate_seconds`
  - `error` string, nullable
  - `usage` object
    - `credits_charged` number, nullable
    - `credits_reserved` number
    - `estimated_credits` number
    - `cost_source` 'provider_reported' | 'calculated' | 'estimated' | 'null', nullable
    - `provider_usage` object, nullable: Normalised consumption, e.g. { VIDEO_SECOND: 22.4 }
  - `balance` object
    - `available` number
    - `reserved` number

## Other responses

- `202`: Processing — poll GET /v1/executions/{id}
- `400`: Invalid input
- `402`: Insufficient credits / project budget
- `404`: Resource not found (or not yours)
- `429`: Rate limited
- `503`: Service temporarily paused

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
