Make an avatar video
Makes a video of the person in a photo speaking the audio. Send the audio as speech_job_id from POST /v1/speech, or as a WAV of up to 20 seconds. The photo must show one face. Returns a job whose result is an AvatarVideoResult.
bearerAuthorizationBearer <API key>An API key from Settings, starting vcp_live_.
Idempotency-Key?stringOptional. Up to 255 characters, scoped to your account and kept for 90 days. Sending the same key with the same body again returns the original job. The same key with a different body is rejected with 409.
length <= 255application/json- body
photo_file_id?stringA file_id from POST /v1/uploads of a JPEG, PNG or WEBP photo. Send this or photo_url.
photo_url?stringAn https link to the photo, up to 20 MB. Send this or photo_file_id.
urispeech_job_id?stringThe id of a succeeded POST /v1/speech job from the last 24 hours. Send this, audio_file_id or audio_url.
audio_file_id?stringA file_id from POST /v1/uploads of a WAV file up to 10 MB. Send this, speech_job_id or audio_url.
audio_url?stringAn https link to a WAV file, up to 10 MB. Send this, speech_job_id or audio_file_id.
uriconsent*booleanMust be true. Confirms you have the right to use the face in the photo.
resolution?stringThe output resolution.
"720p""480p""720p""1080p""1440p"fps?integerFrames per second.
2424254850engine?stringThe video model.
"ltx-2.5""ltx-2.3""ltx-2.5"Accepted. Returns the job.
application/json- response
id*stringJob id.
type*JobType"speech""voice_design""voice_clone""voice_change""transcription""dub""avatar_video""cut"status*JobStatus"queued""running""succeeded""failed""cancelled"progress*|From 0 to 1 while an avatar video renders, a dub runs or a video is cut, otherwise null.
0 <= value <= 1result*||||||The result of a succeeded job, or null. Speech, voice designs and the voice changer give AudioResult, kept for 24 hours after the job finishes, then this is null. Transcriptions give TranscriptionResult. Voice clones give VoiceCloneResult. Avatar videos give AvatarVideoResult, dubs give DubResult and cuts give CutResult, all kept for 24 hours after the job was created.
error*|Why the job failed, or null.
tokens_charged*|Tokens billed, or null until billing has run.
0 <= valueresource_id*|The voice id for voice clones, the project id for dubs and cuts, and the video id for avatar videos.
created_at*stringWhen the job was created.
date-timefinished_at*|When the job finished, or null while it runs.
date-timecurl -X POST 'https://api.vcp.name/v1/avatar-videos' \ -H 'Content-Type: application/json' \ -d '{ "photo_file_id": "8383fc02-625a-4b71-a226-cbb2d19aaf17", "speech_job_id": "04bd0571-e2c8-4d5b-a3cc-e56f85773abf", "consent": true}'{ "id": "04bd0571-e2c8-4d5b-a3cc-e56f85773abf", "type": "avatar_video", "status": "queued", "progress": null, "result": null, "error": null, "tokens_charged": null, "resource_id": "857fcb81-9073-4f26-97c7-a388979fcdca", "created_at": "2026-10-30T00:10:42Z", "finished_at": null}Change a voice POST
Makes speech sound like one of your saved voices. The audio can be up to 60 minutes long. Returns a job whose result is an `AudioResult`.
Dub a video POST
Dubs a video of up to 30 minutes into another language. Each speaker gets a voice cloned from their own lines unless `clone_voices` is false. Returns a job whose result is a `DubResult`. Estimated cost: 225 tokens per second of video, plus lip sync.