create lipsync
lipsync_createCreate a single lipsync video by pairing one image or video with one audio clip or script and voice, so the subject speaks the script or matches the supplied audio.
Instructions
Create one lipsync video from exactly one visual (videoUrl, videoAssetId, imageUrl or imageAssetId) and one driver (audioUrl, audioAssetId, or script plus voiceId), to make a photo or video say a script or match its lips to supplied audio. When available, use lipsync_create-timeline instead for several audio clips or to lipsync only some ranges of one video, batches_create for 20 or more independent generations, dubbing_create to translate speech, and the Edit Dialogue tools (starting with dialogue_get-options) to change words in existing speech.
For a local file, when the assets tools are available, call assets_create-upload-url, PUT the bytes to its uploadUrl with the same Content-Type, register the url it returned (not the uploadUrl) with assets_create, and pass that asset id. provider, stability and similarityBoost apply only to script.
This is a paid generation, billed in the session's organization unless organizationId names another. It returns the generation id and status at once; poll generations_get with wait: true until it finishes, then copy outputMediaUrl verbatim.
Without projectId it first creates a NEW project, named projectName or a default, even if that name matches existing work. The input combination is checked before that; rejections from the API itself come after the project exists. Pass projectId, with projectIntent=explicit and without projectName or projectCreationKey, only for a project the user explicitly chose or one just created for this request. continuation, from generations_get-continuation, requires the parent generation's projectId.
Before calling, persist an idempotencyKey and, without projectId, a fresh projectCreationKey. After a lost or uncertain response, never create again with new keys: if the error names a generationId, poll it with generations_get; otherwise resend the identical request with the same keys.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional model override. Image and video inputs default to sync-3. | |
| script | No | Text for the image or video to say. | |
| options | No | Model-specific generation preferences. Keep unchanged when retrying the same idempotency key. | |
| voiceId | No | Voice id from voices_list. 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. Supply exactly one visual input. | |
| projectId | No | Existing Sync project ID returned by projects_list or projects_get. Use this to select the same project as the web app. Cannot be combined with projectName. | |
| stability | No | Optional ElevenLabs voice stability for script input. | |
| projectName | No | Name for a NEW project only. Never search or reuse a matching name. Cannot be combined with projectId. | |
| audioAssetId | No | Saved audio asset id in the same organization as this call, from assets_list or assets_create when available. Supply audio or script, not both. | |
| continuation | No | Only when the user explicitly continues an existing generation in this project: the parent generation and its workflow. | |
| imageAssetId | No | Saved still image asset id in the same organization as this call, from assets_list or assets_create when available, for image-to-video lipsync. Supply exactly one visual input. | |
| videoAssetId | No | Saved video asset id in the same organization as this call, from assets_list or assets_create when available. Supply exactly one visual input. | |
| projectIntent | No | Required with projectId. Set only for an explicit user project selection/update, or the new project just created for this request. Never infer intent from a matching project name, workflow name or active editor. | |
| idempotencyKey | No | Unique key for one generation action. Persist and reuse the same key, projectCreationKey (for new projects) or explicit projectId, model, and inputs when retrying after a lost response. Use durable asset IDs or stable URLs; upload files before starting the keyed action. A new intentional generation needs a new key. Passed as the Sync API Idempotency-Key header. | |
| organizationId | No | Run only this call in another of the user’s Sync organizations, by id from organizations_list, when the user asks for it (for example “generate this in the Acme org”). The session keeps its organization; reads of the ids this call returns stay in this organization. Omit to use the session’s organization. | |
| similarityBoost | No | Optional ElevenLabs similarity boost for script input. | |
| projectCreationKey | No | Fresh random UUID identifying this NEW project creation, not a project ID. Required for keyed generation without projectId. Persist this key, name and generation key on retries; the server derives a separate project UUID. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||