Skip to content
DashboardGet API Key

Generate lip sync from URLs

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.

Body ParametersJSONExpand Collapse
inputs: array of object { type, url }

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

type: "video" or "audio"

Type of input media.

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

URL of the media resource.

formaturi
disable_active_speaker_detection: optional boolean

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

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 URLs

curl https://api.chamelaion.com/api/v1/lipsync/generate \
    -H 'Content-Type: application/json' \
    -H "x-api-key: $CHAMELAION_API_KEY" \
    -d '{
          "inputs": [
            {
              "type": "video",
              "url": "https://cdn.example.com/episodes/42.mp4"
            },
            {
              "type": "audio",
              "url": "https://cdn.example.com/dubs/42-japanese.wav"
            }
          ]
        }'
{
  "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"
}