Skip to main content
Vidu S2-Avatar turns a photo of one person into a character you can talk to. You can define its role and behavior and optionally choose a voice. It responds with synchronized video and speech. It accepts voice or text input and can use the caller’s camera during a video call. Avatars are saved for up to 90 days and can be reused across sessions. Each session holds one avatar and one active call at a time.
Billing starts when the session reaches ready, including time between calls. Disconnect when the caller is done. See Billing for how session time maps to rates.

At a glance

What you can do

Create and reuse an avatar

Create an avatar from one image. Save its avatar_id and attach it again in later sessions.

Talk or type

Publish a microphone or send text with say. Read transcript messages to show both sides of the conversation.

Steer a live call

Use interrupt to stop speech. Use update_call to change the persona or voice. Send reference images to change what the character holds, wears, or stands in front of.

Quick start

These examples use the base SDK to create an avatar and start a call. The tutorial shows how to publish a microphone and build the rest of the call UI.
In a browser, start startAvatarCall from a click or tap so the browser can play audio.

How a call works

  1. Connect. The first session_state has phase idle. All four tracks exist from connect, so the app can prepare its player and microphone before a call starts.
  2. Create or reuse an avatar. Send create_avatar with an upload or a public image URL. The phase changes to preparing_avatar, then avatar_ready. Save the avatar_id. In a later session, send attach_avatar with that id instead.
  3. Start a call. Send start_call with a persona. You can choose a voice from list_voices or use the default. The phase changes through starting and warming_up to live.
  4. Talk and steer. Publish mic or send say. Use interrupt and update_call to steer a live conversation. Use set_reference_images to change what the avatar wears, holds, or stands in front of.
  5. End or start again. Send end_call, or let the call end at its time limit or idle timeout. The avatar stays available, so the app can start another call in the same session.
Use session_state to drive the UI. The snapshot reports the phase, current avatar, call timers, and media state. A refused command or failure arrives as command_error with a stable code. See the schema for commands, messages, and tracks. The prompt guide covers personas, greetings, and turn-taking.