POST /v3/replicate/v1/analyze takes a TikTok, YouTube Shorts, Instagram Reels or direct video link under two minutes and returns an analysis id. When the analysis is ready, POST /v3/replicate/v1/analyses/{id}/replicate renders each clip with a video model, stitches them and produces a side-by-side comparison with the original.
Authorization: Bearer pk_live_… header as the rest of the API. See Authentication.
Analyze a video
string
required
An
https link to a TikTok, YouTube (including Shorts) or Instagram video, or a direct .mp4, .mov or .webm file. The video must be two minutes or shorter. Photo posts are refused.string
Reuse the same value on retries to get the original analysis back instead of paying again. Kept for 24 hours.
201 Response
Get an analysis
GET /v3/replicate/v1/analyses/{id} returns:
string
analyzing, ready or failed.string | null
A title for the video.
number | null
Length of the source video.
integer | null
Number of clips in the blueprint.
string
The link you sent.
string | null
Percify’s copy of the source video.
string | null
A poster frame.
object | null
The shot-by-shot breakdown.
clips is an array where each clip has start and end times, a generation prompt, camera framing and movement, per-second beats, onScreenText and overlays, keyframes and, for split-screen shots, a layout. The blueprint also carries styleBible, soundtrack, aspect, shots, speakers and characters.string | null
Why the analysis failed.
ready but its clips have "prompt": null, only the shot list exists. Call POST /v3/replicate/v1/analyses/{id}/blueprint to build the rest, then poll again until it is ready. The call answers { "started": true }, or started: false with a reason such as Blueprint already built.
Render a replica
POST /v3/replicate/v1/analyses/{id}/replicate
string
default:"seedance-2-fast-i2v"
The video model for every clip. Models the API names include
seedance-2-fast-i2v (follows the original frames most closely), kling-v2-6-std-motion-control (driven by the original’s movement), seedance-v1-5-pro-i2v, p-video and seedance-2-fast-t2v (prompt only). Another model returns 400 with the list.string
default:"medium"
low, medium or high.string
default:"fast"
How many blueprint clips share one generation on multi-shot models.
fast packs consecutive clips into fewer, longer takes, balanced keeps hard fades as seams, and exact renders one generation per shot.integer[]
Clip indexes to render. Leave it out for the full video.
string
An
https image of a person or product to put in place of the original subject in every clip. It is checked by content moderation.boolean
default:"false"
Burn the original’s text overlays into the replica.
object
{"mode": "chunks"} keeps each clip’s original audio, {"mode": "original"} lays the source soundtrack over the result, and {"mode": "upload", "url": "https://…"} uses your own track. Leave it out for a silent video.string
default:"9:16"
9:16 or 16:9 for the branded side-by-side marketing cut.string
Same value on retries returns the original run. Kept for 24 hours.
201 Response
Get a replication run
GET /v3/replicate/v1/runs/{id} returns:
string
generating and stitching while it works, then done or failed.integer
Clips in this run.
doneClips counts finished ones.string | null
The finished replica.
string | null
Side-by-side video of the original and the replica.
string | null
The same replica without the burned-in text, when
captions was on.string | null
The branded marketing cut.
marketingVideoUrl169 is the 16:9 version. They can arrive a little after the run is done.A public link to the result on app.percify.io, once the run is
done.id, analysisId, modelId, quality, error and createdAt.
Errors
These endpoints have no
wait parameter. Poll every few seconds, or pass a webhook.
Related
Remake a video in the app
The same pipeline without code.
Async jobs and polling
Statuses for every job type.
Webhooks
The replication.completed payload.
MCP server
analyze_video and replicate_video for agents.