?wait=45, which holds the request on Percify’s side until the job ends, or by passing a webhook URL so Percify posts the result to you. Failed and timed-out jobs refund their credits automatically.
Generation statuses
These apply toPOST /v1/run and GET /v1/generations/{id}.
The OpenAPI document also lists
queued. Treat it like processing if you ever see it.
Three ways to wait
- Long-poll (recommended)
- Short poll
- Webhook
Call
GET /v1/generations/{id}?wait=45 in a loop. Each call returns as soon as the job ends, or after 45 seconds with stillRunning: true. wait accepts 5 to 55.How long can a job run?
A generation that has not finished fails withGeneration timed out after 15 minutes plus 5 seconds for every second of input audio or video. Any generation still processing after 30 minutes is failed as well. In both cases the credits are refunded.
Lip-sync and other video models take the longest, so use wait or a webhook for them rather than a tight loop.
What happens to credits?
Retry safely
Network errors and timeouts on your side do not tell you whether a run started. Send anIdempotency-Key header on POST /v1/run, and reuse the same value when you retry. Percify returns the generation it already created and does not charge twice.
Longer pipelines
The replication and short-video endpoints run several generations for you and have their own statuses.
These endpoints have no
wait parameter, so poll them every few seconds or pass a webhook. Details are on Analyze and replicate a short video and Make a short video from a topic.
Related
Get a generation
The polling endpoint and its fields.
Webhooks
Payloads and signature headers.
Errors and rate limits
What each failure means.
Code examples
A full run-and-wait loop in three languages.