Create a voice chat session and receive LiveKit connection details. The Trellis voice agent automatically joins the room when the client connects, enabling real-time voice conversations with your database.
For mobile integration, use the LiveKit React Native SDK (@livekit/react-native) to connect to the room with the returned token.
Bearer token obtained from the authenticate endpoint.
ID of the database integration to use for voice queries.
ID of an existing chat to continue the conversation. Omit to create a new chat.
Response
Unique LiveKit room name for this session.
Signed JWT token for connecting to the LiveKit room. Valid for 2 hours.
LiveKit WebSocket URL to connect to (e.g., wss://your-project.livekit.cloud).
Token validity duration in seconds (7200).
Chat ID for this session. Either the provided chat_id or a newly created one.
How it works
Connecting to the room
Use the returned token and livekit_url to connect with the LiveKit client SDK:
import { useRoom, AudioSession } from "@livekit/react-native";
// Start audio session (required on mobile)
await AudioSession.startAudioSession();
// Connect to the room
const { connect } = useRoom();
await connect(livekitUrl, token, {
autoSubscribe: true,
});
curl -X POST https://api.trellis.sh/v1/voice/sessions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"integration_id": "550e8400-e29b-41d4-a716-446655440000"
}'
import requests
response = requests.post(
"https://api.trellis.sh/v1/voice/sessions",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json",
},
json={
"integration_id": "550e8400-e29b-41d4-a716-446655440000",
},
)
session = response.json()
room_name = session["room_name"]
token = session["token"]
livekit_url = session["livekit_url"]
const response = await fetch("https://api.trellis.sh/v1/voice/sessions", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
integration_id: "550e8400-e29b-41d4-a716-446655440000",
}),
});
const { room_name, token, livekit_url } = await response.json();
{
"room_name": "trellis-voice-550e8400-a1b2c3d4",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"livekit_url": "wss://trellis-abc123.livekit.cloud",
"expires_in_seconds": 7200,
"chat_id": "8f14e45f-ceea-467f-a83c-0a06b8901a45"
}
{
"detail": "Authentication required"
}
{
"detail": "Integration not found"
}
{
"detail": "Voice chat is not configured"
}