POST /v1/run with modelId set to infinitetalk-fast or infinitetalk, an image URL of a face and an audio URL of the speech. Percify returns a generation id, and the finished lip-synced video appears in output.urls when the generation succeeds. It is billed per second of audio.
Which model should I use?
Body
string
required
infinitetalk-fast or infinitetalk.string
required
Public
https URL of the face to animate, such as a .jpg or .png portrait with a clearly visible face. The video keeps this image’s aspect ratio.string
required
Public
https URL of the speech, as .mp3 or .wav. Percify reads the file’s length to price the run, so it must be reachable.string
default:"720p"
infinitetalk only: 480p or 720p. infinitetalk-fast ignores it.integer
default:"-1"
Random seed.
-1 picks a random one.Idempotency-Key header too, so a retry never charges twice.
Example
GET /v1/generations/{id}?wait=45. When it succeeds:
Succeeded (trimmed)
mediaDurationSec is the audio length Percify measured and billed, and creditsSpent holds the credits charged.
How much does lip-sync cost?
Both models are billed per second of the audio you send, andinfinitetalk at 720p costs twice its 480p price. For the exact credits, send the same body to POST /v1/estimate first; it measures your audio file and never charges. Credits are refunded if the run fails.
Errors specific to lip-sync
Long clips take longer to render. A generation fails and refunds if it is still running after 15 minutes plus 5 seconds per second of audio, or after 30 minutes at most. See Async jobs.
Related
Talking avatar pipeline
Generate the face and the voice too.
Voice cloning and speech
Make the audio track with zonos2.
Get a generation
Wait for the video URL.
Lip-sync troubleshooting
When the mouth does not match the audio.