# Avatars, lip-sync and character animation

> Make talking avatars, put new lines on existing footage and animate photos with POST /v1/videos. InfiniteTalk, LatentSync and Wan Animate 2, priced per output second.

Web version: https://bigmodel.io/docs/digital-humans · Updated 2026-10-18

All four avatar models create tasks with `POST /v1/videos`; status and download work as in [Video generation](https://bigmodel.io/docs/video-generation). You pay per output second, and the length comes from your input audio or video. Failed and cancelled tasks are free.

| Model | Input | Output | Good for |
|---|---|---|---|
| `infinitetalk` | `image` (portrait) or `video` (one person), plus `input_audio` (speech or song) | The person speaks or sings | Presenters, product videos, explainers |
| `latentsync` | `video` (one person, clear face) + `input_audio` (speech) | Same footage with only the mouth redrawn, using your audio | New lines, dubbing |
| `latentsync-music` | `video` + `input_audio` (song) | Vocals drive the lips; the full song is kept | Lip-synced singing |
| `wan-animate-2` | `image` (a person) and/or `video` (motion reference), optional `input_audio` | Natural movement, or the motion and expressions from the video | Bringing photos to life, motion transfer |

Inputs are public `https://` URLs or base64 data URIs, up to 50 MB each.

## Make a photo talk (InfiniteTalk)

```bash
curl https://bigmodel.io/v1/videos \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "infinitetalk",
    "image": "https://example.com/host.jpg",
    "input_audio": "https://example.com/script.mp3",
    "prompt": "natural smile, slight nods"
  }'
```

- The voice track can be up to 60 seconds.
- With `video` instead of `image`, the person, body movement and background are kept and only the mouth is redrawn.
- Make the voice track with [Text to speech](https://bigmodel.io/docs/text-to-speech) and pass its URL.

## New lines on existing footage (LatentSync)

```bash
curl https://bigmodel.io/v1/videos \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "latentsync",
    "video": "https://example.com/talking.mp4",
    "input_audio": "https://example.com/new-line.wav"
  }'
```

- One person with a clear, front-facing face, up to 1080p. `image` is not accepted.
- Audio must be wav or mp3. `latentsync` takes up to 120 seconds; `latentsync-music` is for songs up to 15 seconds.
- If the video is shorter than the audio, `latentsync` loops it forward and back; `latentsync-music` holds the last frame.

## Animate a photo (Wan Animate 2)

```bash
curl https://bigmodel.io/v1/videos \
  -H "Authorization: Bearer $BIGMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-animate-2",
    "image": "https://example.com/character.png",
    "video": "https://example.com/dance.mp4"
  }'
```

- `image` only: about 5 seconds of natural movement.
- With `video`: the motion and expressions move onto the person in the image; length follows the video, up to 60 seconds.
- `video` only: the first frame is used as the person.
- `input_audio` only replaces the soundtrack and **does not drive the lips**; use `infinitetalk` for that.

## Billing

Billed seconds come from the real input length: the voice track for `infinitetalk` and `latentsync`, the motion video for `wan-animate-2` (5 seconds for an image alone). Prices are in [Models → Video](https://bigmodel.io/models?type=Video). Add `"dry_run": true` to estimate first:

```json
{"object": "quote", "model": "infinitetalk", "unit": "per_second", "estimated_units": 12.5, "estimated_cost_usd": 0.16}
```

## Troubleshooting

| Symptom | Fix |
|---|---|
| `400` Give image … or video … plus input_audio | `infinitetalk` needs either `image` or `video`, plus `input_audio`. |
| `400` image is not accepted | The `latentsync` models take only `video` and `input_audio`. |
| Lips drift or the face flickers | Use footage of one person with a clear, evenly lit face; remove background music from the voice track. |
| `failed`, input could not be processed | Check the audio format (wav/mp3) and length limits. |

## Related

- [Video generation](https://bigmodel.io/docs/video-generation)
- [Text to speech](https://bigmodel.io/docs/text-to-speech)
- [Multimodal overview](https://bigmodel.io/docs/multimodal-overview)
- [Media task API reference](https://bigmodel.io/docs/api-media-tasks)
