Operation
Generate Lip Sync
Sync hosted audio onto a hosted source video and track the final rendered result through the request object.
Operation: lipsync.generate
Submit via POST /api/v1/requests
Credits: dynamic
Request fields
video_urlaudio_urlvideo_durationaudio_durationvideo_titleaudio_title
Example request
{
"operation": "lipsync.generate",
"input": {
"video_url": "https://example.com/source.mp4",
"audio_url": "https://example.com/dialogue.mp3",
"video_duration": 6.2,
"audio_duration": 5.9,
"video_title": "Sunny Closeup",
"audio_title": "Take 3 Dialogue"
}
}curl -X POST https://www.cannonstudio.app/api/v1/requests \
-H "Content-Type: application/json" \
-H "x-api-key: $CANNON_API_KEY" \
-H "x-idempotency-key: lipsync-generate-001" \
-d @- <<'JSON'
{
"operation": "lipsync.generate",
"input": {
"video_url": "https://example.com/source.mp4",
"audio_url": "https://example.com/dialogue.mp3",
"video_duration": 6.2,
"audio_duration": 5.9,
"video_title": "Sunny Closeup",
"audio_title": "Take 3 Dialogue"
}
}
JSONNotes
- Requires hosted source media URLs for both the video and audio.
- Returns an accepted task immediately, then the request object resolves when the final lip-synced video is ready.
- Billable duration follows the same lip sync pricing logic as the Cannon Studio app.
Success output
{
"task_id": "lip_123",
"asset_type": "video",
"status": "succeeded",
"video_url": "https://storage.googleapis.com/.../lipsync.mp4",
"audio_url": "https://example.com/dialogue.mp3",
"provider": "wavespeed",
"model": "lipsync",
"exact_cost_credits": 17
}