SEQUENCER
Tuning into this reality.

Connecting to the world and its live audience.

Uncaged Worlds
Realtime Experiences API
Back to Live Avatar

Live Avatar API

Bring your own agent, voice, character system, and interaction logic, or use the complete platform through one API. Approved teams receive model access, documentation, and integration support.

Quickstart

Keep your API key on a trusted backend. Start a session for a prepared avatar, then return only the session-scoped LiveKit URL and token to the browser.
Copy
curl -X POST \ https://api.sequencer.media/v1/workspaces/{workspaceId}/live-characters/{characterId}/sessions \ -H "x-api-key: sk_..." \ -H "Content-Type: application/json" \ -d '{ "launchMode": "webrtc", "sessionMode": "conversation" }'
Required response fields
sessionId · livekitUrl · livekitClientToken · roomName · expiresAt · streamTransport

Connect the browser

Use the short-lived connection fields returned by your backend. Subscribe to both remote tracks and play the returned audio, which stays synchronized with the avatar video.
Copy
import { Room, RoomEvent, Track } from 'livekit-client'; const room = new Room(); room.on(RoomEvent.TrackSubscribed, (track) => { if (track.kind === Track.Kind.Video || track.kind === Track.Kind.Audio) { document.querySelector('#avatar')?.appendChild(track.attach()); } }); await room.connect(session.livekitUrl, session.livekitClientToken);

Session modes

Conversation
Microphone or text input. Conversation, generated voice, and synchronized avatar video are included.
$4.90/hr
Audio stream
Publish speech from your own voice agent and receive the same audio with synchronized avatar video.
$4.41/hr
Pricing is usage based, with volume pricing available for products operating at scale.

Send a text turn

Conversation sessions accept text turns. Audio stream sessions receive live audio through the connected LiveKit room instead.
Copy
curl -X POST \ https://api.sequencer.media/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/messages \ -H "x-api-key: sk_..." \ -H "Content-Type: application/json" \ -d '{ "message": "Hello" }'

End every session

End the runtime when the visitor leaves. This reconciles connected usage and releases the unused session reserve.
Copy
curl -X POST \ https://api.sequencer.media/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/end \ -H "x-api-key: sk_..."

Core endpoints

GET
/v1/workspaces/{workspaceId}/live-characters
List avatars
POST
/v1/workspaces/{workspaceId}/live-characters
Create an avatar
GET
/v1/workspaces/{workspaceId}/live-characters/{characterId}
Get status and configuration
PATCH
/v1/workspaces/{workspaceId}/live-characters/{characterId}
Update configuration
POST
/v1/workspaces/{workspaceId}/live-characters/{characterId}/prepare
Prepare the avatar runtime
POST
/v1/workspaces/{workspaceId}/live-characters/{characterId}/sessions
Start a WebRTC session
POST
/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/messages
Send a text turn
POST
/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/animations/trigger
Trigger a prepared motion
GET
/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/metrics?live=true
Read live metrics
POST
/v1/workspaces/{workspaceId}/live-character-sessions/{sessionId}/end
End the session