Bots & Meetings
This guide covers everything related to bots and meetings: launching bots, controlling them during meetings, retrieving transcripts and recordings, and managing meeting metadata.
Launching a bot
To send a bot into a meeting, use the POST /api/v1/bots endpoint.
curl -X POST https://api.serveka.com/api/v1/bots \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"platform": "google_meet",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Notetaker",
"language": "en",
"recording_enabled": true
}'Required fields:
platform: One ofgoogle_meet,zoom, orteamsmeeting_url: The full URL of the meeting
Optional but commonly used:
bot_name: Display name for the bot in the meetinglanguage: BCP-47 language code for transcription (e.g.,en,es,fr)recording_enabled: Whether to record the meeting (default: workspace setting)transcribe_enabled: Whether to transcribe audio (default: workspace setting)capture_modes: Array of streams to capture (["audio"]or["audio", "video"])voice_agent_enabled: Enable TTS, chat, and screen share (default:true)
Response 201:
{
"id": 99,
"bot_id": "550e8400-e29b-41d4-a716-446655440000",
"platform": "google_meet",
"native_meeting_id": "abc-defg-hij",
"status": "requested",
"created_at": "2026-05-12T10:00:00Z",
"updated_at": "2026-05-12T10:00:00Z"
}Important: Save the bot_id (UUID) — this is the primary identifier for all bot operations.
Bot status lifecycle
Bots transition through these statuses:
requested → joining → awaiting_admission → active → stopping → completed
│ │
└── failed ────────┘
You can check a bot's current status with GET /api/v1/bots/{bot_id}.
Controlling an active bot
When a bot is in active status, you can control its behavior in the meeting.
Speak (TTS)
Make the bot speak using text-to-speech:
curl -X POST https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/speak \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello everyone, I am your AI notetaker."
}'Send chat message
Post a message in the meeting chat:
curl -X POST https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/chat \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"message": "I'll be taking notes for this meeting."
}'Screen share
Display a URL on the bot's screen:
curl -X POST https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/screen \
-H "X-API-Key: srvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/presentation.pdf"
}'Hand raise/lower
Raise or lower the bot's hand:
# Raise hand
curl -X POST https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/hand \
-H "X-API-Key: srvk_your_key_here"
# Lower hand
curl -X DELETE https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/hand \
-H "X-API-Key: srvk_your_key_here"Screenshot
Capture a screenshot of the bot's view:
curl -X POST https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/screenshot \
-H "X-API-Key: srvk_your_key_here"Stop speaking/chat/screen
Each of the above actions has a corresponding DELETE endpoint to stop the action.
Getting participant list
Retrieve the current participants in the meeting:
curl https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/participants \
-H "X-API-Key: srvk_your_key_here"Response:
{
"bot_id": "550e8400-e29b-41d4-a716-446655440000",
"participants": ["Alice", "Bob", "Charlie"]
}Stopping a bot
Remove the bot from the meeting:
curl -X DELETE https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000 \
-H "X-API-Key: srvk_your_key_here"Response 202:
{ "message": "Bot stopping" }The bot will leave gracefully and finalize the transcript.
Getting the full transcript
After the meeting ends, retrieve the complete transcript:
curl https://api.serveka.com/api/v1/bots/550e8400-e29b-41d4-a716-446655440000/transcription \
-H "X-API-Key: srvk_your_key_here"See the Quickstart for the full response format.
Listing bots
Get a list of bots in your workspace with optional filters:
curl "https://api.serveka.com/api/v1/bots?status=active&limit=10" \
-H "X-API-Key: srvk_your_key_here"Meeting management
Meeting records are accessible via /api/v1/meetings/{meeting_id} endpoints.
You can:
- List meetings with filters
- Get a specific meeting by ID
- Update meeting metadata (name, participants, languages, notes)
- Delete meeting artifacts (transcriptions, recordings) for completed meetings
- List all bots that attended a specific meeting
See the API Reference for full details.