Skip to content
DashboardGet API Key

Generate lip sync from uploaded media

POST/v1/lipsync/generate-with-media

Starts a lip sync job by uploading one video file and one audio file as multipart form-data.

Body ParametersForm DataExpand Collapse
audio: file

Target audio file.

video: file

Source video file.

disable_active_speaker_detection: optional boolean

Disable active speaker detection and use max-face lipsync preprocessing.

model: optional "lipsync-2"

Optional model selector.

reference_id: optional string

Optional client-provided identifier for later retrieval.

ReturnsExpand Collapse
LipsyncGenerate = object { request_id, status }
request_id: string

Identifier of the created lip sync request.

formatuuid
status: "success"

Current state of the newly created request.

Generate lip sync from uploaded media

curl https://api.chamelaion.com/api/v1/lipsync/generate-with-media \
    -H 'Content-Type: multipart/form-data' \
    -H "x-api-key: $CHAMELAION_API_KEY" \
    -F 'audio=@/path/to/audio' \
    -F 'video=@/path/to/video'
{
  "status": "success",
  "request_id": "3b7df3e8-f578-44de-b4f5-5f58dd6b89e0"
}
{
  "error": "content-type must be multipart/form-data"
}
{
  "error": "video file is required"
}
{
  "error": "audio file is required"
}
{
  "error": "model must be \"lipsync-2\""
}
{
  "error": "missing authorization header"
}
{
  "error": "invalid authorization format"
}
{
  "error": "missing token"
}
{
  "error": "invalid token"
}
{
  "error": "unauthorized"
}
{
  "error": "token limit reached"
}
{
  "error": "rate limit exceeded"
}
{
  "error": "internal error"
}
Returns Examples
{
  "status": "success",
  "request_id": "3b7df3e8-f578-44de-b4f5-5f58dd6b89e0"
}
{
  "error": "content-type must be multipart/form-data"
}
{
  "error": "video file is required"
}
{
  "error": "audio file is required"
}
{
  "error": "model must be \"lipsync-2\""
}
{
  "error": "missing authorization header"
}
{
  "error": "invalid authorization format"
}
{
  "error": "missing token"
}
{
  "error": "invalid token"
}
{
  "error": "unauthorized"
}
{
  "error": "token limit reached"
}
{
  "error": "rate limit exceeded"
}
{
  "error": "internal error"
}