← All playgrounds
Talking avatar playground

OmniHuman 2.0 API

ByteDance's second-generation audio-driven human video: a portrait speaks or sings to the audio with camera and body movement, at native 720p.

OmniHuman 2.0 is a talking avatar video model from ByteDance, available on OttoPort's OpenAI-compatible API as the model ID omnihuman-2.0 at $0.131 / second of audio as of 2026-10-17.

Provider

ByteDance

Price

$0.131 / second of audio

Model ID

omnihuman-2.0

Type

talking avatar video model

Spokesperson videosLocalized explainersSinging portraits

Create with OmniHuman 2.0

avatar
Portrait
A public PNG or JPEG of one person with the face clearly visible, or upload one. This is who speaks.
Voice track
A public MP3 or WAV of 4–60 seconds, or upload one. The video runs as long as this audio, and bills per second of it.
Generated result
Pricing

OmniHuman 2.0 API pricing

What OttoPort bills for OmniHuman 2.0, and what that works out to per unit. Rates are read from the same catalog the gateway meters against, and were current on 2026-10-17.

Per second$0.131of audio, rounded up to the whole second
10 seconds of audio$1.31
30 seconds of audio$3.93
60 seconds of audio$7.86the longest accepted

No subscription and no minimum — OttoPort bills prepaid credits against usage. See the full rate card.

Quickstart

Call OmniHuman 2.0 in three lines

Send "model": "omnihuman-2.0" to POST https://ottoport.ai/api/v1/videos/generations with an OttoPort key. No ByteDance account, no waitlist, no separate SDK.

curl https://ottoport.ai/api/v1/videos/generations \
  -H "Authorization: Bearer $OTTOPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "model": "omnihuman-2.0",
    "image_url": "https://example.com/portrait.png",
    "audio_url": "https://example.com/voice.mp3",
    "prompt": "speaks warmly to camera, small natural gestures"
  }'

Before you start

  1. 1. Create a key at /api-keys.
  2. 2. Top up credits — the smallest pack is $25.
  3. 3. Paste the request. It returns a job ID; poll it or pass a webhook_url.

Full reference at /docs, or drive it from an agent with the MCP server and CLI.

Reference

Request parameters

The body POST https://ottoport.ai/api/v1/videos/generations accepts for OmniHuman 2.0.

FieldTypeRequiredNotes
modelstringYesAlways omnihuman-2.0 for OmniHuman 2.0.
image_urlstringYesThe portrait to animate: a public PNG or JPEG of one person, face clearly visible.
audio_urlstringYesThe speech or song, a public MP3 or WAV of 4–60 seconds. The video runs, and bills, as long as this audio.
promptstringNoOptional direction for expression, gesture and camera.
webhook_urlstringNoCalled when the job settles, so you need not poll.
webhook_secretstringNoSigns the webhook so you can verify it came from OttoPort.
Comparison

OmniHuman 2.0 direct vs through OttoPort

OmniHuman 2.0 is the same model either way — what changes is how many accounts, keys, and integrations you carry to reach it.

ByteDance directVia OttoPort
Accounts and keysA ByteDance account, plus one more for every other model you addOne OttoPort account and one key for the whole catalog
Request shapeByteDance's own SDK and response formatOpenAI-compatible — point baseURL at OttoPort and change the model string
Switching modelsA new integration per providerReplace omnihuman-2.0 with any other model ID in the catalog
BillingA separate invoice and contract per providerPrepaid credits, no subscription, one usage ledger
Provider outagesYour call failsConfigured backup routes are tried in order on provider failure
01

Use a sharp, front-facing portrait with the mouth visible.

02

Clean speech with little background noise syncs best.

03

The video runs as long as the audio, and that length is what bills.

FAQ

OmniHuman 2.0 API questions

Cost, keys, and model IDs for OmniHuman 2.0 on OttoPort.

How much does the OmniHuman 2.0 API cost?

On OttoPort, OmniHuman 2.0 costs $0.131 / second of audio as of 2026-10-17. For scale, 10 seconds of audio: $1.31. Billing is prepaid usage with no subscription and no minimum, and the current rate is always published at ottoport.ai/pricing.

How do I get an OmniHuman 2.0 API key?

You do not need a ByteDance key. Create an OttoPort account, generate a key at ottoport.ai/api-keys, and send it as "Authorization: Bearer <key>" to POST https://ottoport.ai/api/v1/videos/generations with "model": "omnihuman-2.0". The same key reaches every other model in the catalog.

What is the model ID for OmniHuman 2.0?

The OttoPort model ID for OmniHuman 2.0 is omnihuman-2.0. Pass it as the model field on POST https://ottoport.ai/api/v1/videos/generations, or list it programmatically from GET https://ottoport.ai/api/v1/models.

What does OmniHuman 2.0 take, and how long is the video?

A portrait as image_url and a voice track as audio_url, plus an optional prompt. The person in the portrait speaks or sings the audio, and the video runs exactly as long as it. You are billed $0.131 / second of audio, measured by OttoPort before the job starts — there is no duration to set.

Is OmniHuman 2.0 generation synchronous?

No. POST https://ottoport.ai/api/v1/videos/generations returns a job ID immediately. Poll GET https://ottoport.ai/api/v1/videos/generations/{id} for status, or pass webhook_url and webhook_secret and OttoPort will call you when the job settles. You are billed per second of audio, so a failed job costs nothing.

Do I need a ByteDance account to use OmniHuman 2.0?

No. OttoPort connects to ByteDance on your behalf, so one OttoPort account covers OmniHuman 2.0 and every other model in the catalog — no per-provider contracts, keys, or invoices.

Alternatives

Other video generation models on the same API

Same endpoint, same key — swapping model is a one-string change from omnihuman-2.0.

Browse the full catalog — every model with its provider and per-unit price.