Create a lip sync generation with `application/json` — provide each input by `url` or by `assetId` from an uploaded asset. Use the multipart "Create Generation with Files" form only when uploading direct audio, video, or image file fields; nested fields such as input, options, segments, and dubParams must be JSON strings in multipart requests. If a `text` input requires speech synthesis and the ElevenLabs provider is temporarily unavailable, the request returns errorCode elevenlabs_service_unavailable: 504 for provider timeouts and 503 for other provider outages.
Request
This endpoint expects an object.
modelenumRequired
name of the model to use for generation.
inputlist of objectsRequired
Normal lipsync requests must include exactly one visual input (video or image) and one audio or text input. Dubbed lipsync requests using dubParams must include exactly one video input and no audio or text input, because Sync extracts the dubbing source audio from that video. Image inputs are only supported with the sync-3 model. When using segments, audio or text inputs can carry unique refId values.
optionsobjectOptional
additional options available for generation.
segmentslist of objectsOptional
segments definition list. When provided, allows defining one or more video segments with different audio inputs for each segment. Each segment specifies a time range and references an audio input by refId.
webhookUrlstringOptional
Webhook URL for generation status updates. When the generation reaches a terminal state, Sync sends a POST request with the generation payload and a Sync-Signature header. Verify the header with the organization webhook secret from GET /v2/organizations/webhook/secret. HTTPS is strongly recommended.
outputFileNamestringOptional
Base filename for the generated output without extension. The .mp4 extension will be added automatically. Only alphanumeric characters, underscores, and hyphens are allowed, up to 255 characters.
dubParamsobjectOptional
Dubbing parameters. When present, audio is extracted from the single video input, dubbed via ElevenLabs into the target language, and then lipsync is run with the dubbed audio. Do not include audio or text inputs with dubParams; requests that send both are rejected.
projectIdstringOptional
Optionally attach this generation to a project (created via POST /v2/projects) so it appears in Studio under that project. Must reference a project in your organization — otherwise the request is rejected with 422.
Response
Job created successfully
createdAtdatetime
The date and time the generation was created.
idstring
A unique identifier for the generation.
inputlist of objects
An array of input objects used for generation.
modelenum
The name of the model used for generation.
statusenum
The status of the generation.
errorstring
The error message if the generation failed.
errorCodestring
Stable, machine-readable error code if the generation failed (e.g. generation_input_video_inaccessible). The full catalog of codes, messages and suggested fixes is served unauthenticated at GET /v2/errors.
optionsobject
Options for the generation.
outputDurationdouble
The duration of the output media.
outputUrlstring
The URL of the output media.
outputFileNamestring
The sanitized filename applied to the output media. Characters outside letters, numbers, dashes and underscores are stripped and spaces become underscores, so this can differ from the value submitted. Null when no name was provided.
segmentslist of objects
The segments of the generation.
segmentOutputUrlstring
The URL of the segment output media.
synthesizedAudioUrlstring
The URL of the audio synthesized from a text (TTS) input. Only present for generations created with a TTS text input; reuse it as an audio input to keep the same take across generations.
webhookUrlstring
The URL to the webhook endpoint.
projectIdstring
The id of the project this generation is attached to, or null when it belongs to no project. Set via the projectId field on the create request.