Create lipsync
create-lipsyncCreate a lipsync video from an audio track or script paired with a still image or video. Use a voice ID to make the visual say the provided text.
Instructions
Create a lipsync video from audio + EITHER a video or a still image (an image drives sync-3 image-to-video). Defaults to sync-3 unless the user explicitly requests another model. Generations are attached to an existing project with the requested projectName, or to "ChatGPT generations" by default; if no matching project exists, it is created first. For "make this image/video say X" requests, pass script with a voiceId from voices_get-voices; do not call tts_create first. Pass URLs whenever you have them — set audioUrl to any public audio URL, and videoUrl/imageUrl to a hosted media URL. If media was uploaded to Sync first, pass audioAssetId, videoAssetId, or imageAssetId. For files the user uploaded in chat, prefer calling upload-media first and pass the returned assetId here; direct audio/video/image file params are supported only when a host invokes this tool with file params directly. If the user wants to choose a local image/audio file that is not attached yet, use open-upload-widget first. Provide exactly one visual input (video or image) and exactly one driver input (audio or script). Returns a generation id — call generate_get-generation once with wait: true and timeout: 55, then read outputUrl. Copy signed outputUrl values exactly from the tool result; never reconstruct or shorten them. For advanced options (segments, speaker selection), use generate_create-generation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audio | No | Uploaded audio file from ChatGPT. Use audioUrl for public URLs instead. | |
| image | No | Uploaded still image file from ChatGPT. Use imageUrl for public URLs instead. | |
| model | No | Set only when the user explicitly requests a model override. Otherwise omit it; image and video inputs default to sync-3. | |
| video | No | Uploaded video file from ChatGPT. Use videoUrl for public URLs instead. | |
| script | No | Text for the image or video to say. For "make this say X", pass X here directly instead of calling tts_create. | |
| voiceId | No | Voice id from voices_get-voices. Required when script is provided. | |
| audioUrl | No | Public or Sync-hosted audio URL. Use this when the user supplies audio. | |
| imageUrl | No | Public or Sync-hosted still image URL. Use this for image-to-video lipsync with sync-3. | |
| provider | No | Voice provider for script-driven lipsync. Defaults to elevenlabs. | |
| videoUrl | No | Public or Sync-hosted video URL. Use exactly one of videoUrl/videoAssetId/video/imageUrl/imageAssetId/image. | |
| stability | No | Optional ElevenLabs voice stability for script input. | |
| projectName | No | Project to attach the generation to. Set this only when the user requests a specific project name; otherwise omit it to use "ChatGPT generations". An existing project with the same name is reused, or a new one is created. | |
| audioAssetId | No | Sync asset id for audio, returned by upload-media or assets_create. | |
| imageAssetId | No | Sync asset id for a still image, returned by upload-media or assets_create. Use this for image-to-video lipsync with sync-3. | |
| videoAssetId | No | Sync asset id for a video, returned by upload-media or assets_create. Use exactly one visual input. | |
| similarityBoost | No | Optional ElevenLabs similarity boost for script input. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Sync generation id. | |
| error | No | ||
| model | No | Model used for the generation. | |
| status | No | Current generation status. | |
| errorCode | No | ||
| outputUrl | No | Signed result URL when the generation is complete. Copy this exact string verbatim; do not reconstruct, shorten, or edit it. | |
| outputDuration | No | Output duration in seconds. |