Skip to content
DashboardGet API Key

Generate lip sync from URLs

lipsync.generate(LipsyncGenerateParams**kwargs) -> LipsyncGenerate
POST/v1/lipsync/generate

Starts a lip sync job from exactly one remote video URL and one remote audio URL. The response includes a request identifier to poll later.

ParametersExpand Collapse
inputs: Iterable[Input]

Exactly one video input and one audio input (order does not matter).

type: Literal["video", "audio"]

Type of input media.

One of the following:
"video"
"audio"
url: str

URL of the media resource.

formaturi
disable_active_speaker_detection: Optional[bool]

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

reference_id: Optional[str]

Optional client-provided identifier for later retrieval.

ReturnsExpand Collapse
class LipsyncGenerate:
request_id: str

Identifier of the created lip sync request.

formatuuid
status: Literal["success"]

Current state of the newly created request.

Generate lip sync from URLs

import os
from chamelaion import Chamelaion

client = Chamelaion(
    api_key=os.environ.get("CHAMELAION_API_KEY"),  # This is the default and can be omitted
)
lipsync_generate = client.lipsync.generate(
    inputs=[{
        "type": "video",
        "url": "https://cdn.example.com/episodes/42.mp4",
    }, {
        "type": "audio",
        "url": "https://cdn.example.com/dubs/42-japanese.wav",
    }],
    disable_active_speaker_detection=False,
    reference_id="dub-episode-42",
)
print(lipsync_generate.request_id)
{
  "status": "success",
  "request_id": "6f82a2d8-a6d4-4e8a-a0fa-e8b09823a2d8"
}
{
  "error": "invalid request body"
}
{
  "error": "content-type must be application/json"
}
{
  "error": "expected exactly one video input"
}
{
  "error": "expected exactly one audio input"
}
{
  "error": "input type must be \"video\" or \"audio\""
}
{
  "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": "6f82a2d8-a6d4-4e8a-a0fa-e8b09823a2d8"
}
{
  "error": "invalid request body"
}
{
  "error": "content-type must be application/json"
}
{
  "error": "expected exactly one video input"
}
{
  "error": "expected exactly one audio input"
}
{
  "error": "input type must be \"video\" or \"audio\""
}
{
  "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"
}