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"
  }
}
JSON

Notes

  • 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
}