For mobile integration, use the LiveKit React Native SDK (
@livekit/react-native) to connect to the room with the returned token.string
required
Bearer token obtained from the authenticate endpoint.
string
ID of an existing chat to continue the conversation. Omit to create a new chat. A malformed, unknown, or out-of-scope ID also creates a new chat instead of returning an error, so always use the
chat_id returned in the response. The voice session derives its datasource from the chat’s agent — there is no integration_id on this request.string
Optional model override for durable voice turns. Use an id returned by List Models. If the voice service falls back to legacy in-process generation, that fallback uses its configured model instead.
string
Optional client-generated correlation id, threaded through to the voice agent so a single session can be reconstructed end-to-end in telemetry. See Voice Timing.
Response
string
required
Unique LiveKit room name for this session.
string
required
Signed JWT token for connecting to the LiveKit room. Valid for 2 hours.
string
required
LiveKit WebSocket URL to connect to (e.g.,
wss://your-project.livekit.cloud).integer
required
Token validity duration in seconds (7200).
string
required
Authoritative chat ID for this session. It can differ from the requested ID when the request did not identify an accessible existing chat.
How it works
Connect and subscribe to structured events
Register theagent_events text-stream handler before connecting so the client cannot miss an early agent_ready or greeting event:
JavaScript
agent_events payloads
Events are JSON objects published on the LiveKit text-stream topic agent_events. Delivery is best-effort; persisted chat messages remain the source of truth.
Only client-facing data-tool calls and results are published.
inline is present only when the result is small enough to send directly on the live path; it can also be null on the durable path. Treat a missing or null value as a degraded preview and reconcile from the persisted chat after the turn. Durable events can use synthetic message_id values beginning with voice-, which are not retrievable message IDs.
tool_result
Session lifecycle
There is no end-session API call. Disconnect from the LiveKit room to end the client session. The room token is valid for 7,200 seconds; create a new session after it expires. Voice messages are persisted in the returned chat. Creating another voice session with that accessiblechat_id reloads the conversation and suppresses the new-chat greeting when prior messages exist.