Skip to content

Lipsync

The Lipsync card takes a video and an audio track, then re-renders the video so the speaker’s lip movements match the audio. Two models are available with different quality/speed tradeoffs.

Modelgeneration_typedata.modelNotes
Synclipsync"sync_so"Higher quality, slower processing.
GENlipsync"gen"Faster, good quality.

Lipsync is typically applied to a layer within a cell, not the cell itself, since it composites audio onto an existing video layer.

POST /v1/autocontentengine/{id}/cells/{cell_id}/layers/{layer_id}/generate?agent_id={agent_id}
ParameterTypeDescription
idintegerThe sheet ID.
cell_idintegerThe cell ID.
layer_idintegerThe layer ID.
FieldTypeRequiredDescription
generation_typestringYes"lipsync".
data.video_resource_idstringYesSource video content resource ID.
data.audio_resource_idstringYesSource audio content resource ID.
data.modelstringYes"sync_so" or "gen".
Terminal window
curl -X POST "https://api.gen.pro/v1/autocontentengine/101/cells/3000/layers/4000/generate?agent_id=42" \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"generation_type": "lipsync",
"data": {
"model": "sync_so",
"video_resource_id": "video_res_123",
"audio_resource_id": "audio_res_456"
}
}'

You can also generate on the cell directly if it holds the video:

POST /v1/autocontentengine/{id}/cells/{cell_id}/generate?agent_id={agent_id}

The request body is identical.


Poll Check generation status until complete. The finished generation returns the lip-synced video in output_resources.

{
"id": 9002,
"status": "completed",
"output_resources": [
{
"id": 1502,
"url": "https://cdn.gen.pro/outputs/lipsynced-def456.mp4",
"object_type": "video",
"type": "output"
}
]
}
StatusError codeDescription
422validation_errorMissing or invalid video/audio resource.
404not_foundSheet, cell, or layer not found.

FieldTypeDescription
lipSyncModelstringDefault model: "sync_so" or "gen".
autoGeneratebooleanAuto-trigger generation when source video/audio changes.