Skip to main content
Every realtime session runs one avatar. Start with the stock avatar av_stock_001 while you validate session creation and media routing, then switch to a custom avatar built from the dashboard or the API. Building is asynchronous. You upload a PNG or JPEG portrait, and the avatar must reach status: "ready" before a session accepts it. Source images has examples of portraits that build and ones that fail.

Create an avatar

The portrait needs one clearly visible, forward-facing face or face-like subject. Avoid heavy occlusion, extreme crops, harsh lighting, and multiple faces. A "failed" build puts the reason on failure_reason.

List avatars

Retrieve an avatar

Poll this endpoint until status reaches ready or failed.

Use an avatar

Pass a ready avatar ID into the LiveKit plugin:
The avatar starts before the agent session. Once running, avatar.session_id holds the Protoface sess_... ID, and GET /v1/sessions/{id} reports status and usage. End it with await avatar.aclose() or POST /v1/sessions/{id}/end. LiveKit Agents covers the plugin in full. Without the plugin, the avatar ID goes to POST /v1/sessions as avatar_id. The request shape is in API Reference.

Delete an avatar

Deleting a custom avatar removes its source image and built assets. Past session and usage records remain. Stock avatars cannot be deleted.