## Generate lip sync from URLs `client.lipsync.generate(LipsyncGenerateParamsbody, RequestOptionsoptions?): LipsyncGenerate` **post** `/v1/lipsync/generate` Starts a lip sync job from exactly one remote video URL and one remote audio URL. The response includes a request identifier to poll later. ### Parameters - `body: LipsyncGenerateParams` - `inputs: Array` Exactly one video input and one audio input (order does not matter). - `type: "video" | "audio"` Type of input media. - `"video"` - `"audio"` - `url: string` URL of the media resource. - `disable_active_speaker_detection?: boolean` Disable active speaker detection and use max-face lipsync preprocessing. - `reference_id?: string` Optional client-provided identifier for later retrieval. ### Returns - `LipsyncGenerate` - `request_id: string` Identifier of the created lip sync request. - `status: "success"` Current state of the newly created request. - `"success"` ### Example ```typescript import Chamelaion from 'chamelaion'; const client = new Chamelaion({ apiKey: process.env['CHAMELAION_API_KEY'], // This is the default and can be omitted }); const lipsyncGenerate = await client.lipsync.generate({ inputs: [ { type: 'video', url: 'https://cdn.example.com/episodes/42.mp4' }, { type: 'audio', url: 'https://cdn.example.com/dubs/42-japanese.wav' }, ], reference_id: 'dub-episode-42', }); console.log(lipsyncGenerate.request_id); ``` #### Response ```json { "status": "success", "request_id": "6f82a2d8-a6d4-4e8a-a0fa-e8b09823a2d8" } ```