Skip to main content
SadTalkerSlowHigh

SadTalker

Talking-head video from a single photo and an audio track โ€” animates the face with natural head motion and eye blinks, with optional GFPGAN face enhancement.

91 credits
per run (runtime grows with audio length)
One photo + audio โ†’ talking-head video
Natural head motion and eye blinks
Still mode for subtle motion
Optional GFPGAN face enhancement
Pose style and expression scale controls

Run it right now

Test this model instantly in the Console Playground โ€” no code required

Sign in to try

Use with AI Assistant

Copy usage instructions for Claude, ChatGPT, or other AI

Quick Start

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "cjwbw/sadtalker",
  "input": {
    "source_image": "https://example.com/portrait.jpg",
    "driven_audio": "https://example.com/narration.wav",
    "preprocess": "full",
    "still_mode": true,
    "use_enhancer": true
  }
}'

Parameters

ParameterTypeRequiredDefaultDescription
source_imagestringYes-Source face image (png/jpg, or a video)
driven_audiostringYes-Driving audio (.wav or .mp4)
use_enhancerbooleanNofalseUse GFPGAN as face enhancer
pose_styleintegerNo0Pose style
expression_scalenumberNo1Larger values make expression motion stronger
use_eyeblinkbooleanNotrueAdd natural eye blinks
preprocessstringNocropHow to preprocess the image (crop/resize/full/extcrop/extfull)
cropresizefullextcropextfull
size_of_imageintegerNo256Face model resolution
256512
facerenderstringNofacevid2vidChoose face render
facevid2vidpirender
still_modebooleanNotrueFewer head motions (works with preprocess 'full')

How to Provide File Input

There are 3 ways to provide files for the source_imagedriven_audio parameters:

Recommended

Direct Upload (Multipart)

Attach files directly to POST /v1/predictions/upload. No separate upload step needed.

curl -X POST "https://api.core.today/v1/predictions/upload" \
  -H "X-API-Key: cdt_your_api_key" \
  -F "model=cjwbw/sadtalker" \
  -F 'input={"prompt":"your prompt here"}' \
  -F "file:source_image=@your_file.png"

Image URL

Pass a publicly accessible URL directly. You can also use file_url from the Storage API.

{
  "model": "cjwbw/sadtalker",
  "input": {
    "prompt": "your prompt here",
    "source_image": "https://example.com/image.jpg"
  }
}
See the File Upload docs for more upload methods including Presigned URLs.

Common Parameters

Common parameters used when calling POST /v1/predictions.

ParameterTypeRequiredDefaultDescription
modelstringYes-Model identifier
inputobjectYes-Object containing the model-specific parameters from the table above
output_folderstringNo-Folder path for output files (max 256 chars, '..' not allowed)
webhook_urlstringNo-Webhook URL to call on completion
is_publicbooleanNofalseIf true, output files are also available via permanent public URLs

Examples

Photo Avatar Narration

Animate a portrait to speak a voiceover

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "cjwbw/sadtalker",
  "input": {
    "source_image": "https://example.com/portrait.jpg",
    "driven_audio": "https://example.com/narration.wav",
    "preprocess": "full",
    "still_mode": true,
    "use_enhancer": true
  }
}'

Tips & Best Practices

1preprocess 'full' + still_mode keeps the whole photo with subtle motion โ€” most natural for portraits
2Enable use_enhancer for sharper faces (adds processing time)
3Pair with a TTS model to build photo-to-presenter pipelines
4Only animate photos of people who have consented

Use Cases

Virtual presenters from a single photo
Personalized video messages
Educational avatar narration
Historical photo animation