OmniHuman 1.5
https://api.hiapi.ai /v1/tasks Image, video, and audio models are called through theUnified Async API POST /v1/tasks endpoint; only the input fields differ (see input parameters below).
Model summary
| Model | omnihuman-1.5 |
|---|---|
| Capability | Audio-driven avatar video |
| Inputs | Portrait + audio |
| Output | MP4, 720p / 1080p, as long as the audio |
Turn one portrait and one audio clip into a lip-synced talking video with expressions and body motion that follow the speech.
Production guidance
- Pass the portrait and audio as publicly accessible HTTPS URLs.
- Use a clear, unobstructed face; half- or full-body images bring out more gestures.
- Audio of 15 seconds or less works best; longer clips lose quality. The video is as long as the audio.
- Use callback.url for terminal notifications and GET /v1/tasks/:id as a fallback query.
Best suited for
Send a portrait and recorded audio to get a talking video directly.
image_urlaudio_urlAdd a prompt for smiling, nodding or a push-in.
promptUse masks so a chosen person in the image lip-syncs.
mask_urlsRequest parameters
model string required Model ID.
input object required OmniHuman 1.5 parameters.
image_url string required Image of the character who speaks: a person, pet or anime character. The video keeps this image's aspect ratio. jpeg, png or webp, up to 10MB.
audio_url string required Speech or singing that drives the lips; the video is as long as the audio. Must be shorter than 60 seconds, and 15 seconds or less works best. mp3, wav, aac, ogg or m4a, up to 10MB.
prompt string optional Direction for expression, gestures or camera, such as "smiling and nodding, slow push-in". Chinese, English, Japanese, Korean, Spanish and Indonesian are supported, up to 300 characters.
mask_urls string[] optional When the image has several people, masks the same size as the portrait (speaker in white, the rest in black) pick who speaks. Up to 5.
resolution enum optional Output resolution tier; the aspect ratio always follows the portrait.
fast_mode boolean optional Faster generation with slightly lower quality.
seed integer optional Integer from 0 to 2147483647. The same seed with identical inputs gives a highly consistent result; omit it for a random one.
callback object optional Sends the task object when the task reaches a terminal state.
url string required HTTPS URL that receives terminal notifications.
when enum optional Triggers on terminal status.
Example requests
A square portrait with a 4-second greeting, no prompt; the output keeps 1:1.
{
"model": "omnihuman-1.5",
"input": {
"image_url": "https://example.com/portrait.jpg",
"audio_url": "https://example.com/greeting.mp3",
"resolution": "1080p"
}
}Steer expression and camera with a prompt and enable fast mode for a preview.
{
"model": "omnihuman-1.5",
"input": {
"image_url": "https://example.com/portrait.jpg",
"audio_url": "https://example.com/greeting.mp3",
"prompt": "Smiling and nodding gently, slow push-in",
"resolution": "720p",
"fast_mode": true
}
}A two-person photo with a same-size mask (speaker in white, the rest in black) so only the person on the left speaks; a fixed seed keeps the result reproducible. Replace the example URLs with publicly accessible image and audio.
{
"model": "omnihuman-1.5",
"input": {
"image_url": "https://example.com/two-people.jpg",
"audio_url": "https://example.com/greeting.mp3",
"prompt": "The person on the left smiles and speaks while the person on the right listens quietly, static camera",
"mask_urls": [
"https://example.com/speaker-mask.png"
],
"resolution": "1080p",
"fast_mode": false,
"seed": 42
}
}Getting the result
- Read data.taskId after creating the task.
- Wait for the callback or query GET /v1/tasks/:id.
- On status=success, read the video URL from the output item whose type is video.