Skip to main content
AvatarController exposes two independent state enums that you can observe through callbacks.

ConversationState

The current playback state of the digital human. Subscribe to state changes through AvatarController.onConversationState.
Android also has an intermediate Active state. It means avatar speech audio has been received, but playable motion data is not ready yet.
Detailed definitions for each platform: Web ConversationState | iOS ConversationState | Android ConversationState | Flutter ConversationState

ConnectionState

Only available in Direct Mode. In Platform Integrations and Backend Mode integrations, the connection is managed by the agent worker, TEN graph, or developer backend, and is not exposed through AvatarController.ConnectionState.
The WebSocket connection state from AvatarKit to Motion Server in Direct Mode integrations. Subscribe to state changes through AvatarController.onConnectionState. Detailed definitions for each platform: Web ConnectionState | iOS ConnectionState | Android ConnectionState | Flutter ConnectionState

Errors (onError)

Subscribe through AvatarController.onError. Errors are grouped by category: Complete error enum, including WebSocket close codes: Resources -> Error Codes.