Generate lip-synced dubbed videos from a video
Generates lip-synced dubbed videos from a source video in one or more target languages, cloning each speaker’s voice and matching their lip movements. Each language produces a new, independent video in the library. The work runs asynchronously: this call returns immediately with one job per language that you poll for status. Billed in credits per minute of the source video, per language; the debit is refunded in full if a job fails. Idempotent per language: a language already in flight or completed is returned without charging again. Only videos with confirmed speech and up to 30 minutes long are eligible; a video that is itself a dub cannot be re-dubbed.
Authorization
BearerAuth Pass the raw API key as a Bearer token (Authorization: Bearer <key>). Publishable keys start with mvi_pub_ (playback-scoped). Other prefixes denote private/admin keys for general REST routes. GET /v1/embeds/{embedId}/playback accepts publishable keys only.
In: header
Path Parameters
Source video identifier.
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.moviie.ai/v1/videos/497f6eca-6276-4993-bfeb-53cbbbba6f08/lipsync" \ -H "Content-Type: application/json" \ -d '{}'{
"items": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"videoId": "3524e86f-1bba-489a-bf6b-386ea1abbac0",
"outputVideoId": "674410a1-df92-40ad-9bc0-483a8b9c5820",
"language": "pt",
"status": "completed",
"creditsReserved": "60",
"idempotentReplay": true,
"createdAt": "2019-08-24T14:15:22Z"
}
],
"totalCreditsReserved": "120"
}{
"error": "Resource not found",
"code": "NOT_FOUND"
}{
"error": "Resource not found",
"code": "NOT_FOUND"
}{
"error": "Resource not found",
"code": "NOT_FOUND"
}{
"error": "rate_limited"
}