---
title: "Get a cloning job and its variations"
method: GET
path: "/cloning/jobs/{jobId}"
tags: ["Cloning"]
---

# Get a cloning job and its variations

`GET /cloning/jobs/{jobId}`

## Request

- Base URL: `https://app.getprolifik.com/api/v1`
- URL: `https://app.getprolifik.com/api/v1/cloning/jobs/{jobId}`
- Auth: HTTP bearer

## Path parameters

- `jobId` string, uuid, required

## Response `200`

Job detail: status, the analysed source post, and every variation built so far

- object
  - `job` CloningJob, required
    - `id` string, uuid, required
    - `brandProfileId` string, uuid, required
    - `url` string, uri, required: The canonical post link the worker was given.
    - `platform` 'tiktok' | 'instagram', required
    - `sourceKind` 'video' | 'slideshow' | 'null', nullable
    - `sourceFormat` 'slideshow' | 'text-wall' | 'hook-demo' | 'montage' | 'reaction' | 'talking-head' | 'null', nullable: How the analyser classified the post. Null until the analysis lands.
    - `status` 'pending' | 'ingesting' | 'analysing' | 'transforming' | 'ready' | 'failed', required
    - `errorMessage` string, nullable
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `creditsCharged` integer, required: Billed so far: the analysis plus every delivered variation. The unsettled remainder is refunded.
    - `preview` object, required
      - `coverUrl` string, nullable
      - `title` string
      - `uploader` string, nullable
      - `views` integer, nullable
    - `progress` object, nullable
      - `step` integer
      - `total` integer
      - `label` string
    - `variationCount` integer, required
    - `options` object: Detail responses only.
    - `source` object, nullable: Detail responses only: the ingested post with every stored key resolved to a signed URL.
    - `analysis` object, nullable: Detail responses only: the analyser's read of the post.
    - `variations` CloningVariation[]: Detail responses only.
      - `pieceId` string, uuid, required: The content piece. Save it with /cloning/pieces/{pieceId}/library.
      - `variationIndex` integer, required
      - `format` string, required: carousel is a deck of slides; anything else renders as one MP4.
      - `hook` string, required
      - `thumbnailUrl` string, nullable
      - `finalVideoUrl` string, nullable
      - `slideUrls` string[]
      - `status` string, required: ready once the variation has rendered.
      - `reviewStatus` string, required: approved once it has been saved to the Library.
      - `language` 'es' | 'pt-BR' | 'fr' | 'de' | 'it' | 'nl' | 'pl' | 'tr' | 'id' | 'null', nullable: Set on a translated variation: the language it was translated into. Null on an original.
      - `localizedFrom` string, uuid, nullable: The pieceId this variation was translated from. Null on an original.
      - `translatable` boolean: Whether /cloning/jobs/{jobId}/localize can translate this variation now: an original, rendered, made after translation was available, and not edited since it was cloned.
      - `translateBlockedReason` string, nullable: Why a rendered variation cannot be translated (made before translation was available, edited since it was cloned, or already a translation). Null when it can be.
      - `caption` string, nullable: The caption the variation posts with, without its hashtags: the one it was written (or translated) with, or the hook's first line on a variation made before captions were kept.
      - `hashtags` string[]: The hashtags the variation posts with, as stored (#tag).

## Other responses

- `400`: Request failed
- `401`: Request failed
- `402`: Payment required. error.code is subscription_required (the plan does not include this feature, or the key's account no longer has a plan: API keys are paid-only, so every write from a key whose account has none is refused; see error.upgradeUrl), insufficient_credits (the AI-credit balance is short; see error.needed, error.balance, error.upgradeUrl), or quota_exceeded (a plan quota such as monthly videos or clip minutes).
- `403`: Request failed
- `404`: Request failed
- `429`: Request failed

---

[API](https://skmtc.dev/getprolifik/apis/prolifik-public-api.md) · [All operations](https://skmtc.dev/getprolifik/apis/prolifik-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getprolifik/apis/prolifik-public-api/revisions/301e79c5763c?raw)
