Bots API
Manage transcription bots that join meetings and transcribe audio in real-time.
POST
/botsCreate Bot
Send a transcription bot to join a meeting. The bot will automatically join and start transcribing.
Dashboard Proxy: The dashboard calls
/api/vexa/bots which forwards to this endpoint.Authentication
Requires User API Key in X-API-Key header.
Request Body
Bot configuration
{
"platform": "google_meet",
"native_meeting_id": "abc-defg-hij",
"passcode": "optional_passcode",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Vexa Transcription Bot",
"language": "en"
}Code Examples
curl -X POST "https://api.cloud.vexa.ai/bots" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "google_meet",
"native_meeting_id": "abc-defg-hij",
"passcode": "optional_passcode",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Vexa Transcription Bot",
"language": "en"
}'Response
{
"id": 123,
"platform": "google_meet",
"native_meeting_id": "abc-defg-hij",
"status": "requested",
"start_time": null,
"end_time": null,
"bot_container_id": null,
"data": {},
"created_at": "2024-01-01T12:00:00Z"
}Error Responses
400The meeting ID format is invalid for the specified platform
{
"error": "Invalid meeting ID format"
}401Invalid or missing API key
{
"error": "Unauthorized"
}429User has reached their maximum concurrent bot limit
{
"error": "Too many concurrent bots"
}Notes
- The bot will transition through statuses: requested → joining → awaiting_admission → active
- For Google Meet, meeting IDs follow the format: abc-defg-hij
- For Microsoft Teams, meeting IDs are numeric and require a passcode. Always pass meeting_url for Teams to preserve the exact domain.
- The language parameter is optional. If not specified, the bot will auto-detect the language
DELETE
/bots/{platform}/{native_meeting_id}Stop Bot
Stop an active transcription bot and disconnect it from the meeting.
Dashboard Proxy: The dashboard calls
/api/vexa/bots/{platform}/{native_meeting_id} which forwards to this endpoint.Authentication
Requires User API Key in X-API-Key header.
Path Parameters
platformplatformstringRequired
Meeting platform: google_meet or teams
native_meeting_idnative_meeting_idstringRequired
The platform-specific meeting ID
Code Examples
curl -X DELETE "https://api.cloud.vexa.ai/bots/{platform}/{native_meeting_id}" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"Error Responses
404No active bot found for the specified meeting
{
"error": "Bot not found"
}Notes
- Stopping a bot will mark the meeting as completed
- Transcripts remain available after stopping the bot
PUT
/bots/{platform}/{native_meeting_id}/configUpdate Bot Configuration
Update the configuration of an active bot, such as changing the transcription language.
Dashboard Proxy: The dashboard calls
/api/vexa/bots/{platform}/{native_meeting_id}/config which forwards to this endpoint.Authentication
Requires User API Key in X-API-Key header.
Path Parameters
platformplatformstringRequired
Meeting platform: google_meet or teams
native_meeting_idnative_meeting_idstringRequired
The platform-specific meeting ID
Request Body
Configuration updates
{
"language": "es",
"task": "transcribe",
"bot_name": "Updated Bot Name"
}Code Examples
curl -X PUT "https://api.cloud.vexa.ai/bots/{platform}/{native_meeting_id}/config" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"language": "es",
"task": "transcribe",
"bot_name": "Updated Bot Name"
}'Error Responses
404No active bot found for the specified meeting
{
"error": "Bot not found"
}Notes
- Only active bots can have their configuration updated
- Language changes take effect immediately for new transcript segments
GET
/bots/statusGet Bot Status
Get the status of all currently running bots.
Dashboard Proxy: The dashboard calls
/api/vexa/bots/status which forwards to this endpoint.Authentication
Requires User API Key in X-API-Key header.
Code Examples
curl -X GET "https://api.cloud.vexa.ai/bots/status" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json"Response
{
"running_bots": [
{
"container_id": "abc123",
"meeting_id": 123,
"platform": "google_meet",
"native_meeting_id": "abc-defg-hij"
}
]
}Notes
- Returns only bots that are currently running (not completed or failed)
- Useful for monitoring active transcription sessions