Guia

AI avatar API: talking avatars and lip sync from one photo, priced per second

You have a script and a face, and you need a talking video without a camera, a studio or a per-seat avatar plan. Five models on one API turn a photo and a voice track into a talking avatar, or make a clip you already have lip sync to new audio. Here is what each one costs per second, how the seconds are counted, and the code.

AI avatar API pricing (November 2026)

Avatar models are priced per second of video, and the video is as long as your audio. One photo or clip in, one talking video out:

AI avatar and lip sync API price per second
ModeloO que você enviaSaídaPor segundo15 s30 s60 s
OmniHuman 2.0One photo + audio (4 to 300 s), prompt optional720p$0.09$1.35$2.70$5.40
OmniHuman 1.5One photo + audio (under 60 s), prompt optional720p ou 1080p$0.17$2.55$5.10—
Kling Avatar ProPhoto + audio (up to 300 s) + prompt1080p$0.13$1.95$3.90$7.80
Kling Avatar StandardPhoto + audio (up to 300 s) + prompt720p$0.07$1.05$2.10$4.20
ByteDance Lip SyncYour video (360p to 1080p) + audio (1 to 240 s)Your clip, re-synced$0.05$0.75$1.50$3.00

Kling Avatar Standard is the cheapest way to make a photo talk. ByteDance Lip Sync is cheaper still when you already have the footage and only need the mouth to match new audio. OmniHuman 1.5 takes audio under a minute, so it has no 60-second price.

How avatar seconds are billed

  • The audio sets the length. The video runs as long as your voice track, and you pay for its seconds, rounded up to a whole second: a 12.4-second track bills 13 seconds.
  • Held at submit, charged on delivery. The price is held when you submit and released if the job fails. A failed video costs nothing.
  • A cap on every job. Send max_cost_usd. If the job would cost more, the request answers 422 max_cost_exceeded and nothing is charged.
  • No plan. Prepaid credit from the pricing page, spent on avatars or any other model. 100 credits are one dollar.

Make a talking avatar with OmniHuman 2.0

Send POST /v1/generations with omnihuman-2.0, one photo in image_url and the voice in audio_url (4 to 300 seconds, MP3 or WAV). The prompt is optional, up to 300 characters, and steers expression, gestures and camera. A 30-second track costs $2.70; the cap below covers it.

cURL
export REVANA_API_KEY="sr_live_..."

# One Idempotency-Key per job, made once: resend with the same $KEY after a timeout, a 429 or a 5xx
KEY=$(uuidgen)

# 1. Submit the job (returns 202 with the generation id). max_cost_usd is your cap: the most it may cost.
curl https://api.revana.si/v1/generations \
  -H "Authorization: Bearer $REVANA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $KEY" \
  -d '{
    "model": "omnihuman-2.0",
    "input": {
      "image_url": "https://example.com/presenter.jpg",
      "audio_url": "https://example.com/voiceover.mp3",
      "prompt": "Speaks warmly to the camera, small hand gestures, slow push-in."
    },
    "max_cost_usd": 3.5
  }'

# 2. Poll with the id from step 1 until status is "succeeded" or "failed".
#    A failed job is free; make a new KEY before you submit it again.
curl https://api.revana.si/v1/generations/gen_01JC4Q8T2V \
  -H "Authorization: Bearer $REVANA_API_KEY"
Python
import os
import time
import uuid

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
# One Idempotency-Key per job, made once. Resend after a timeout, a 429 or a 5xx with the
# same KEY: you get the same job back, never a second charge.
KEY = str(uuid.uuid4())

resp = requests.post(f"{API}/generations", headers={**HEADERS, "Idempotency-Key": KEY}, json={
    "model": "omnihuman-2.0",
    "input": {
        "image_url": "https://example.com/presenter.jpg",
        "audio_url": "https://example.com/voiceover.mp3",
        "prompt": "Speaks warmly to the camera, small hand gestures, slow push-in.",
    },
    "max_cost_usd": 3.5,  # your cap: the most this job may cost
})
resp.raise_for_status()
job = resp.json()

while job["status"] in ("queued", "running"):
    time.sleep(10)
    job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()

if job["status"] == "succeeded":
    print(job["output"]["urls"], job["cost_usd"])
else:
    # A failed job is free. To try again, make a new KEY: this one answers with the failure.
    print("Failed:", job["error"])
Resposta
{
  "id": "gen_01JC4Q8T2V",
  "model": "omnihuman-2.0",
  "status": "succeeded",
  "output": {
    "urls": [
      "https://cdn.revana.si/g/gen_01JC4Q8T2V/video.mp4"
    ]
  },
  "cost_usd": 2.7,
  "attempts": 1,
  "error": null,
  "created_at": "2026-11-13T10:14:02Z",
  "completed_at": "2026-11-13T10:19:47Z"
}

Use a clear, front-facing photo of one person, from the chest up, with the face well lit. The mouth follows whatever audio you send, so the same photo can speak another language with nothing changed but the voice track.

Kling Avatar: 1080p, prompt required

Kling Avatar Pro makes 1080p and Kling Avatar Standard 720p, from a photo, a voice track of up to 300 seconds and a prompt, which both require. A 30-second video costs $3.90 on Pro and $2.10 on Standard.

Corpo da requisição
{
  "model": "kling-avatar-pro",
  "input": {
    "image_url": "https://example.com/presenter.jpg",
    "audio_url": "https://example.com/voiceover.mp3",
    "prompt": "A friendly product expert explains a new phone, natural blinking, steady medium shot."
  },
  "max_cost_usd": 5
}

Lip sync a video you already have

ByteDance Lip Sync keeps your clip and redraws the mouth to match new audio: a dub, a corrected line, a new language. Send the video (360p to 1080p) in video_url and a clean voice track (1 to 240 seconds, voice only, no music) in audio_url; it takes no prompt. It works best on one person facing the camera, and if the audio runs longer than the clip, the clip loops to fill it. 30 seconds cost $1.50.

Corpo da requisição
{
  "model": "bytedance-lipsync",
  "input": {
    "video_url": "https://example.com/interview.mp4",
    "audio_url": "https://example.com/new-line-spanish.mp3"
  },
  "max_cost_usd": 2
}

Use a person's face and voice only with their consent, and label AI-made people where your platform or the law asks for it.

Give the avatar a voice

No recording? Make the voice track on the same key with ElevenLabs, priced per 1,000 characters: ElevenLabs V3 is $0.12. A 30-second script is roughly 450 characters, so its voice costs about $0.054. Pass the link of the finished audio as audio_url. The ElevenLabs API pricing guide has the code, and ElevenLabs alternatives covers the other voices. A file on your computer goes up first with POST /v1/uploads (audio up to 15 MB, see the docs); the link is good for 14 days.

Which avatar model to use

  • The lowest price for a talking photo: Kling Avatar Standard at $0.07 a second, 720p.
  • Long videos, prompt optional: OmniHuman 2.0 takes up to 300 seconds of audio at $0.09 a second.
  • 1080p: Kling Avatar Pro for long videos, OmniHuman 1.5 for clips under a minute.
  • You already have the footage: ByteDance Lip Sync at $0.05 a second.

Avatar apps sell seats and minutes inside their own editor. An API fits when your product makes the videos: a welcome message per user, one ad in ten languages, a daily update read by the same presenter. For video models that make their own sound, see Kling API pricing. See every model with its live price on the models page, read the request reference in the docs, or get an API key.

Perguntas frequentes

What is the cheapest AI avatar API?

In November 2026, Kling Avatar Standard makes a photo talk for $0.07 a second at 720p. If you already have the video, ByteDance Lip Sync re-syncs it for $0.05 a second.

How is an AI avatar video billed?

Per second of audio, rounded up to a whole second, because the video is as long as the voice track. The price is held when you submit and released if the job fails, so a failed video costs nothing. There is no monthly plan.

How long can an avatar video be?

OmniHuman 2.0 takes 4 to 300 seconds of audio, Kling Avatar Pro and Standard up to 300 seconds, OmniHuman 1.5 under 60 seconds, and ByteDance Lip Sync 1 to 240 seconds.

Do I need a voice recording?

No. Make the voice track with ElevenLabs on the same API key, priced per 1,000 characters, and pass the audio link as audio_url.

Can I lip sync a video I already have?

Yes. ByteDance Lip Sync takes your video in video_url and a new voice track in audio_url, and redraws the mouth to match. It works best on one person facing the camera.

Can I use anyone's face for an avatar?

Only with their consent. Use photos and voices you have the right to use, and label AI-made people where your platform or the law asks for it.

Make a talking avatar with one key

One API key for OmniHuman, Kling Avatar, lip sync and the voices to go with them. Prepaid credit from $10, charged only for videos that are delivered.