Output
video
Inputs
- Reference audio (required)
- Reference video (required)
Example prompt
Upload a portrait video and audio — LatentSync is a fast open-source lipsync model trained on large-scale video dataTry this prompt →
LLM-ready
API & LLM schema
Exact request contract for this model. Agents can fetch it from /api/v1/models?id=fal-ai/latentsync.
POST
/api/v1/generate12 fields · 3 required| Field | Type | Requirement | Contract |
|---|---|---|---|
model_id | constant | Required | ArtEmotion model identifier. |
extra | object | Optional | Model-specific settings may also be nested here. |
max_credits | number | Optional | Reject before submission if the estimated list price exceeds this cap. · Range: 1–… |
webhook_url | string | Optional | Format: uri |
webhook_secret | string | Optional | Optional model input. |
folder_id | string | Optional | Optional model input. |
prompt | string | Optional | Optional model input. |
loop_mode | string | Optional | How to fill video when audio is longer than the source clip. None = no extension; Pingpong = bounce; Loop = repeat. · Allowed: , pingpong, loop · Default: |
guidance_scale | number | Optional | Guidance scale for inference (1–2). Higher values follow the audio more strictly. · Default: 1 · Range: 1–2 |
seed | integer | Optional | Random seed. Leave blank for a random result. |
video_url | string | Required | Format: uri |
audio_url | string | Required | Format: uri |
Minimal request example
{
"model_id": "fal-ai/latentsync",
"video_url": "https://example.com/video",
"audio_url": "https://example.com/audio"
}Raw JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://www.artemotion.ai/api/v1/models?id=fal-ai%2Flatentsync",
"title": "LatentSync generation request",
"description": "Request body accepted by POST /api/v1/generate for fal-ai/latentsync.",
"type": "object",
"properties": {
"model_id": {
"type": "string",
"const": "fal-ai/latentsync",
"description": "ArtEmotion model identifier."
},
"extra": {
"type": "object",
"additionalProperties": true,
"description": "Model-specific settings may also be nested here."
},
"max_credits": {
"type": "number",
"minimum": 1,
"description": "Reject before submission if the estimated list price exceeds this cap."
},
"webhook_url": {
"type": "string",
"format": "uri",
"maxLength": 2048
},
"webhook_secret": {
"type": "string",
"maxLength": 512
},
"folder_id": {
"type": "string"
},
"prompt": {
"type": "string"
},
"loop_mode": {
"title": "Loop Mode",
"description": "How to fill video when audio is longer than the source clip. None = no extension; Pingpong = bounce; Loop = repeat.",
"default": "",
"type": "string",
"enum": [
"",
"pingpong",
"loop"
]
},
"guidance_scale": {
"title": "Guidance Scale",
"description": "Guidance scale for inference (1–2). Higher values follow the audio more strictly.",
"default": 1,
"type": "number",
"minimum": 1,
"maximum": 2,
"multipleOf": 0.1
},
"seed": {
"title": "Seed",
"description": "Random seed. Leave blank for a random result.",
"type": "integer"
},
"video_url": {
"type": "string",
"format": "uri"
},
"audio_url": {
"type": "string",
"format": "uri"
}
},
"required": [
"model_id",
"video_url",
"audio_url"
],
"additionalProperties": false
}FAQ
How much does LatentSync cost on ArtEmotion?
Credit-based pricing. You pay in ArtEmotion credits — every plan and top-up converts USD to credits at a fixed rate.
Do I get my credits back if LatentSync fails?
Yes — failed generations are never charged. The credits are released back to your balance automatically.
Can I call LatentSync from the API?
Yes. Use POST /api/v1/generate with model_id: "fal-ai/latentsync". See the API reference for the full schema.
Where are my generations stored?
Every output is saved to your personal Library. You can export or delete everything any time from Privacy & deletion.
Ready to generate with LatentSync?
Start now →No commitment. New accounts get 50 free credits on signup. See pricing.