{"servers":[{"url":"https://api.modellix.ai/api/v1/pixverse/lipsync"}],"post":{"description":"[Core Function] PixVerse Lip Sync drives a talking video so the subject's lips match given audio or text-to-speech. [Strengths] Accurate lip synchronization for talking-head videos; supports either an existing audio track or TTS from a chosen speaker voice. [Best For] Dubbing, virtual presenters, character dialogue, localizing spoken video. [Limitations] Do NOT use this to generate new motion or change content; it only re-times the subject's lips on an existing video. It requires an input video, and you must provide EITHER audio_url OR (speaker_id + tts_content), not both. [Routing] Use when the user has a video and wants the speaker's lips to match speech. Use audio_url for an existing voice track; use speaker_id (a named voice code) + tts_content (max 140 chars) to synthesize speech from text.","operationId":"pixverseLipSyncAsync","requestBody":{"content":{"application/json":{"examples":{"audio":{"summary":"Audio-driven","value":{"audio_url":"https://example.com/voice.mp3","video":"https://example.com/talk.mp4"}},"tts":{"summary":"TTS-driven","value":{"speaker_id":"emily","tts_content":"Hello, welcome to our product demo.","video":"https://example.com/talk.mp4"}}},"schema":{"description":"PixVerse lip sync request. Requires an input video plus a speech source: provide EITHER audio_url, OR speaker_id together with tts_content. audio_url and speaker_id are mutually exclusive; tts_content requires speaker_id.","properties":{"audio_url":{"description":"Audio track URL to lipsync against. Mutually exclusive with speaker_id/tts_content.","example":"https://example.com/voice.mp3","type":"string"},"speaker_id":{"description":"TTS speaker voice (semantic code; as of 2026-06-26): emily, james, isabella, liam, chloe, adrian, harper, ava, sophia, julia, mason, jack, oliver, ethan, or auto (auto-select). Use together with tts_content. Mutually exclusive with audio_url.","enum":["emily","james","isabella","liam","chloe","adrian","harper","ava","sophia","julia","mason","jack","oliver","ethan","auto"],"example":"emily","type":"string"},"tts_content":{"description":"Text (<=140 chars) to synthesize into speech with speaker_id. Requires speaker_id.","example":"Hello, welcome to our product demo.","maxLength":140,"type":"string"},"video":{"description":"Input talking video URL (publicly accessible).","example":"https://example.com/talk.mp4","minLength":1,"type":"string"}},"required":["video"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"code":0,"data":{"get_result":{"method":"GET","url":"https://api.modellix.ai/api/v1/tasks/task-pixverse-lipsync-001"},"model_id":"pixverse/lipsync","status":"pending","task_id":"task-pixverse-lipsync-001"},"message":"success"},"schema":{"properties":{"code":{"description":"Response code, 0 indicates success","example":0,"type":"integer"},"data":{"description":"Detailed data about the submitted asynchronous task.","properties":{"get_result":{"description":"API information to query the task result","properties":{"method":{"example":"GET","type":"string"},"url":{"example":"https://api.modellix.ai/api/v1/tasks/task-abc123","type":"string"}},"type":"object"},"model_id":{"description":"Model ID in `provider/model` format","example":"pixverse/lipsync","type":"string"},"status":{"description":"Task status","enum":["pending","processing"],"example":"pending","type":"string"},"task_id":{"description":"Unique task identifier for polling","example":"task-abc123","type":"string"}},"required":["status","task_id","model_id"],"type":"object"},"message":{"description":"Response message","example":"success","type":"string"}},"required":["code","message","data"],"type":"object"}}},"description":"Task submitted successfully"},"400":{"content":{"application/json":{"example":{"code":400,"message":"Invalid parameters: parameter 'video' is required"},"schema":{"properties":{"code":{"example":400,"type":"integer"},"message":{"example":"Invalid parameters: parameter 'video' is required","type":"string"}},"required":["code","message"],"type":"object"}}},"description":"Invalid request parameters"},"401":{"content":{"application/json":{"example":{"code":401,"message":"Authentication failed: invalid API key"},"schema":{"properties":{"code":{"example":400,"type":"integer"},"message":{"example":"Invalid parameters: parameter 'video' is required","type":"string"}},"required":["code","message"],"type":"object"}}},"description":"Unauthorized - Invalid or missing API Key"},"429":{"content":{"application/json":{"example":{"code":429,"message":"Rate limit exceeded: 100 requests per minute, retry after 60 seconds"},"schema":{"properties":{"code":{"example":400,"type":"integer"},"message":{"example":"Invalid parameters: parameter 'video' is required","type":"string"}},"required":["code","message"],"type":"object"}}},"description":"Too many requests - Rate limit exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum requests per minute","schema":{"example":100,"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining quota in current window","schema":{"example":0,"type":"integer"}},"X-RateLimit-Reset":{"description":"Rate limit window reset time (Unix timestamp)","schema":{"example":1704067260,"type":"integer"}}}},"500":{"content":{"application/json":{"example":{"code":500,"message":"Internal server error"},"schema":{"properties":{"code":{"example":400,"type":"integer"},"message":{"example":"Invalid parameters: parameter 'video' is required","type":"string"}},"required":["code","message"],"type":"object"}}},"description":"Internal server error"}},"summary":"Lip Sync","x-mint":{"href":"pixverse/lipsync"}}}