Skip to main content

Bot API

Deploy, monitor, and terminate Lira bots in Google Meet sessions. All routes are under /lira/v1/bot and require JWT authentication.

Limits
  • Max active bots globally: 3
  • Max bots per user: 2

Exceeding these limits returns a 429 error.

Deploy Bot

POST /lira/v1/bot/deploy

Launch a Lira bot into a Google Meet meeting. The bot takes approximately 16 seconds to start (Chromium launch + Nova Sonic warm-up).

Request Body:

FieldTypeRequiredDescription
meeting_urlstring (URL)YesGoogle Meet URL
session_idstringNoExisting meeting session ID to rejoin
display_namestringNoBot display name in the meeting
org_idstringNoOrganization ID for context
meeting_topicstringNoMeeting topic for AI context
meeting_typestringNoType of meeting
interview_idstringNoLink to an interview record
settingsobjectNoBot behavior configuration (see below)

Settings Object:

FieldTypeDefaultDescription
personalitystring"supportive"supportive, challenger, facilitator, analyst
participation_levelstringHow actively the bot participates
wake_word_enabledbooleantrueWhether the bot listens for its name
proactive_suggestbooleanProactively offer suggestions
ai_namestring"Lira"Custom name for the bot
voice_idstringVoice selection for TTS
dynamic_context_refreshbooleanRefresh org context mid-session
curl -X POST https://api.creovine.com/lira/v1/bot/deploy \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"org_id": "org_xyz789",
"settings": {
"personality": "facilitator",
"wake_word_enabled": true,
"ai_name": "Lira"
}
}'

Response:

{
"success": true,
"data": {
"bot_id": "bot_abc123",
"session_id": "ses_def456",
"state": "launching",
"platform": "google_meet",
"display_name": "Lira AI"
}
}

Get Bot Status

GET /lira/v1/bot/:botId

Check the current status of a deployed bot.

curl https://api.creovine.com/lira/v1/bot/bot_abc123 \
-H "Authorization: Bearer <token>"

Response:

{
"success": true,
"data": {
"bot_id": "bot_abc123",
"state": "active",
"platform": "google_meet",
"display_name": "Lira AI",
"session_id": "ses_def456",
"deployed_at": "2026-03-29T10:00:00Z"
}
}

Bot States

The bot transitions through these states during its lifecycle:

StateDescription
launchingChromium browser starting, Nova Sonic warming up (~16s)
navigatingBrowser navigating to the Google Meet URL
in_lobbyBot is in the meeting lobby waiting to be admitted
joiningBot is entering the meeting room
activeIn the meeting — listening, transcribing, and responding
leavingGracefully exiting the meeting (post-meeting summary in progress)
terminatedBot has been stopped
errorDeployment or session failure
launching → navigating → in_lobby → joining → active → leaving → terminated
↘ error

Terminate Bot

POST /lira/v1/bot/:botId/terminate

Force-stop a running bot. Triggers the post-meeting flow (summary generation, task extraction).

curl -X POST https://api.creovine.com/lira/v1/bot/bot_abc123/terminate \
-H "Authorization: Bearer <token>"

Response:

{
"success": true
}

List Active Bots

GET /lira/v1/bot/active

List all currently active bots for the authenticated user.

curl https://api.creovine.com/lira/v1/bot/active \
-H "Authorization: Bearer <token>"

Response:

{
"success": true,
"data": [
{
"bot_id": "bot_abc123",
"state": "active",
"platform": "google_meet",
"session_id": "ses_def456"
}
]
}

Terminate All Bots

POST /lira/v1/bot/terminate-all

Terminate all active bots for the authenticated user.

Response:

{
"success": true,
"data": {
"terminated": 2
}
}

Auth Session Status

GET /lira/v1/bot/auth-status

Check the health of the Google authentication session used by the bot to join meetings.

curl https://api.creovine.com/lira/v1/bot/auth-status \
-H "Authorization: Bearer <token>"

Response:

{
"success": true,
"data": {
"google_authenticated": true,
"google_email": "lira-bot@creovine.com"
}
}

Refresh Auth

POST /lira/v1/bot/auth-refresh

Refresh the Google authentication session.

Response:

{
"success": true
}