Skip to main content
Glama

Create lipsync

create-lipsync

Create 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

TableJSON Schema
NameRequiredDescriptionDefault
audioNoUploaded audio file from ChatGPT. Use audioUrl for public URLs instead.
imageNoUploaded still image file from ChatGPT. Use imageUrl for public URLs instead.
modelNoSet only when the user explicitly requests a model override. Otherwise omit it; image and video inputs default to sync-3.
videoNoUploaded video file from ChatGPT. Use videoUrl for public URLs instead.
scriptNoText for the image or video to say. For "make this say X", pass X here directly instead of calling tts_create.
voiceIdNoVoice id from voices_get-voices. Required when script is provided.
audioUrlNoPublic or Sync-hosted audio URL. Use this when the user supplies audio.
imageUrlNoPublic or Sync-hosted still image URL. Use this for image-to-video lipsync with sync-3.
providerNoVoice provider for script-driven lipsync. Defaults to elevenlabs.
videoUrlNoPublic or Sync-hosted video URL. Use exactly one of videoUrl/videoAssetId/video/imageUrl/imageAssetId/image.
stabilityNoOptional ElevenLabs voice stability for script input.
projectNameNoProject 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.
audioAssetIdNoSync asset id for audio, returned by upload-media or assets_create.
imageAssetIdNoSync asset id for a still image, returned by upload-media or assets_create. Use this for image-to-video lipsync with sync-3.
videoAssetIdNoSync asset id for a video, returned by upload-media or assets_create. Use exactly one visual input.
similarityBoostNoOptional ElevenLabs similarity boost for script input.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoSync generation id.
errorNo
modelNoModel used for the generation.
statusNoCurrent generation status.
errorCodeNo
outputUrlNoSigned result URL when the generation is complete. Copy this exact string verbatim; do not reconstruct, shorten, or edit it.
outputDurationNoOutput duration in seconds.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (mutation, open-world), the description discloses crucial behavioral traits: default model selection (sync-3), project creation/reuse behavior, the requirement to poll generate_get-generation for results, and the instruction to copy signed output URLs exactly. Existing project attachment is clarified. No contradictions with annotations found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though long, every sentence adds vital decision-making information and is front-loaded with purpose. The structure flows logically from inputs to project attachment, to script handling, to media sourcing, to return handling and alternatives. No filler or redundant statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (16 params, nested objects, output schema), the description fully covers all major decision points and operational steps. It explains how to supply media, how to handle user-uploaded files, how to poll for results, and when to delegate to sibling tools. The presence of an output schema reduces the need to detail return values, but the description still covers the generation id and polling flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even with 100% schema coverage, the description significantly enriches parameter understanding by explaining the relationships and conditional use of audioUrl/videoUrl/imageUrl vs. asset IDs vs. file objects, the exactly-one-visual/driver constraint, and the projectName default. It also clarifies that model should only be set on explicit user request, which goes beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create a lipsync video from audio + EITHER a video or a still image,' clearly stating the tool's specific function and resource. It distinguishes itself from siblings like tts_create and generate_create-generation by focusing on lipsync creation and pointing to generate_create-generation for advanced options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage guidance: use script+voiceId for 'make this say X' instead of calling tts_create first, prefer upload-media for chat-uploaded files, use open-upload-widget for local files, and delegate advanced needs to generate_create-generation. It also explains when to use URLs versus asset IDs versus direct file params.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/synchronicity-labs/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server