OmniHuman 2.0 API

by ByteDance

A portrait that performs your speech or song, as long as the audio

bytedance/omnihuman-2.0/talking-avatar
  • AI Avatar

About OmniHuman 2.0

A portrait that performs your speech or song, as long as the audio.

Call it with the model name bytedance/omnihuman-2.0/talking-avatar on POST /jobs/createTask, from $0.1084.

Introduction

OmniHuman 2.0 Talking avatar is ByteDance's audio-driven avatar model. You send a portrait (image_url) and an audio file of speech or singing (audio_url), and it returns a 720p video of that person performing the audio - the face, lips, head and upper body move with it, rather than leaving the torso frozen. The clip is as long as the audio, from 4 to 300 seconds. There is no duration, resolution or aspect-ratio field. An optional prompt of up to 300 characters directs mood, gestures, where the eyes go and, according to the publisher, camera movement.

Three of the four examples here (the supper-club singer, the bar counter and the late-night show) use the same portraits and audio as Kling Avatar 2.0, trimmed to about five seconds, so you can compare the two pages side by side.

Key features

The audio sets the length

Trim your audio to the length you want the clip to run before you send it. In our runs the clip came back between 0.2 and 1 second longer than the audio, landing on a whole number of seconds: 4.55 seconds of audio gave a 5-second clip, 5.2 seconds gave a 6-second clip.

What we measured

We ran four portraits, each with its own audio of 4.55 to 5.2 seconds and its own one-line prompt. All four portraits were 16:9. Every clip came back at 1280×720 and 24 fps with the audio track included, and processing took about two minutes per clip - 110 to 133 seconds from submit to finished file. Comparing frames to the input portrait, the face stayed recognisably the same person in all four clips.

Lips, expression and gesture

In all four clips the lips tracked the audio. The prompts asked for small, specific beats, and most of them showed up: a smile and a small head tilt on the last word with a hand staying on the microphone, a half smile and a raised eyebrow with the bottles behind the bar staying stable, a head turning toward the sea in the final second, and a quick laugh with wide eyebrows on the last word. One instruction did not visibly land: a lean toward the microphone in the late-night-show clip.

The prompt is optional

Leave prompt empty and the model follows the audio on its own. The publisher lists Chinese, English, Japanese, Korean, Spanish (Mexican) and Indonesian as prompt languages. Our four prompts were in English and directed expression, gestures and where the eyes go; we did not test camera-movement instructions.

What we have not tested

The publisher lists scenes with more than one person; we have not tested them. Our clips were all about five seconds of audio, so we have not tested a long clip near the 300-second maximum, a full-length song, or portraits that are not 16:9.

Content review

Plan on every request going through that review.

Request parameters

ParameterRequiredDescription
audio_urlYesThe voice or music track to use.
image_urlYesThe picture to start from.
promptNoDescribe what you want to make.

Pricing

Prices are in USD. The API uses a separate USD balance. Website credits cannot be used or transferred to it, and API funds cannot be transferred to website credits. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.

OptionUSD per second
Standard$0.1084

Send the same request body to POST /jobs/quote to see the estimated and maximum USD charge before running. A quote does not run the task or charge your balance.

Use cases

Give a recorded line a face

Pair a recorded or generated line with a portrait to get a clip of that person delivering it - narrated intros, testimonials or dialogue for a character whose face you have already settled on.

Short host intros and cold openings

A bright, playful opening line with a prompt that names the mood and a beat on the last word gave us wide expressions, lively eyebrows and a laugh, as in the late-night-show example above.

A sung line from a still photo

The publisher lists singing alongside speech. Our test included one slow sung/spoken line of about five seconds at a vintage microphone; we have not tried a full song.

Phone photos as they are

The portrait can be JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC or HEIF, under 30 MB, so a photo straight from a phone can go in without converting it first.

Prompt guide & pro tips

Tie an expression to a moment in the line

"A lazy smile on the last word" and "glances away at the end" both landed where we placed them: the smile and head tilt arrived at the end of the supper-club clip, and the head turned toward the sea in the final second of the terrace clip. Naming where in the line the beat should happen gives the model something to time.

Keep to a few beats

Each of our prompts asked for a mood, one or two facial beats and sometimes a posture. That is enough to shape a five-second clip. Facial beats followed the prompt more reliably than body movement in our runs.

Do not count on a body movement alone

"A lean toward the mic" in the late-night-show prompt did not visibly happen, while the laugh and eyebrows beside it did. That is one observation from one run, but if a body movement matters to you, generate once and check before you build on it.

Pick the portrait with the limits in mind

Width and height must each be 300 to 6000 pixels, and the width-to-height ratio must be between 0.4 and 2.5. We only tested 16:9 portraits.

Trim the audio to the performance

WAV or MP3, under 15 MB.

API quick start

Call the OmniHuman 2.0 API in three steps

  1. Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow-. API calls use your separate USD balance.
  2. Send the request. POST /jobs/createTask with model bytedance/omnihuman-2.0/talking-avatar and an input object that follows the parameter table. The response returns a task ID straight away.
  3. Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "bytedance/omnihuman-2.0/talking-avatar",
  "input": {
    "prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
    "image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
    "audio_url": "https://media.popnow.ai/shortfilm/voices/Aoede-46e4c427.mp3"
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.

OmniHuman 2.0 price on other platforms

OptionsPopNowfal
Standard$0.1084/ s$0.1050/ s

Each platform's public API list price for the same model and settings, checked Nov 6, 2026.

OmniHuman 2.0 API questions

How much does the OmniHuman 2.0 API cost?

OmniHuman 2.0 costs $0.1084 per second. The API uses a separate USD balance. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.

What is the model name for OmniHuman 2.0 in the API?

Put bytedance/omnihuman-2.0/talking-avatar for AI Avatar in the model field of POST /jobs/createTask.

Can I send a WebP or HEIC portrait to OmniHuman 2.0?

Yes. The portrait can be JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC or HEIF, under 30 MB, with width and height each between 300 and 6000 pixels and a width-to-height ratio between 0.4 and 2.5. We have only tested 16:9 portraits.

Should I use OmniHuman 2.0 or Kling Avatar 2.0?

Pick Kling Avatar 2.0 (/models/kling-avatar-2-0) when you need a 1080p tier. Pick OmniHuman 2.0 when you want the prompt to direct gestures and camera, or need WebP or HEIC portraits. Three of our four examples (the supper-club singer, the bar counter and the late-night show) use the same portraits and audio as that page, trimmed to about five seconds here, so you can compare them side by side.

How is OmniHuman 2.0 billed?

Per second of the input audio, with a 4-second minimum and a 300-second maximum. When we can read the length of an uploaded audio file, the hold follows that length; otherwise the quote holds the 300-second maximum until delivery and the difference is released.

How long does a clip take to render?

In our four runs, about two minutes: 110 to 133 seconds from submit to finished file, for 4.55 to 5.2 seconds of audio. It is an asynchronous task, so you poll for the result or receive it on a webhook. We have not timed longer audio.

What are the limits of the OmniHuman 2.0 API?

Prompt length (characters): 300; Largest upload: 30 MB. Requests outside these limits are rejected before anything is charged.

Can I try OmniHuman 2.0 without writing code?

Run OmniHuman 2.0 in the Playground with your API USD balance, without an API key. Each run appears in your developer history with its matching code.

More about OmniHuman 2.0