Skip to main content

Bots API

Create and manage meeting bots.

List Bots

GET /bots

Returns all bots for the authenticated user.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
page_sizeintegerItems per page (default: 20, max: 100)
statusstringFilter by status

Example

curl "https://api.meetbot.dev/v1/bots?status=IN_CALL&page_size=10" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"bots": [
{
"id": 1,
"botDisplayName": "RecordBot",
"meetingTitle": "Team Standup",
"status": "IN_CALL",
"meetingInfo": {
"platform": "google",
"meetingUrl": "https://meet.google.com/abc-defg-hij"
},
"createdAt": "2024-01-15T10:30:00Z",
"recording": null
}
],
"total": 1,
"page": 1,
"page_size": 20
}

Create Bot

POST /bots

Create a new bot ready for deployment.

Request Body

{
"meetingInfo": {
"platform": "google",
"meetingUrl": "https://meet.google.com/abc-defg-hij"
},
"botDisplayName": "RecordBot",
"meetingTitle": "Team Standup",
"callbackUrl": "https://your-server.com/webhook",
"heartbeatInterval": 5000,
"automaticLeave": {
"waitingRoomTimeout": 300,
"noOneJoinedTimeout": 300,
"everyoneLeftTimeout": 60
}
}

Meeting Info by Platform

Google Meet

{
"platform": "google",
"meetingUrl": "https://meet.google.com/abc-defg-hij"
}

Zoom

{
"platform": "zoom",
"meetingId": "1234567890",
"meetingPassword": "abc123"
}

Microsoft Teams

{
"platform": "teams",
"meetingId": "meeting-id",
"tenantId": "tenant-id",
"organizerId": "organizer-id"
}

Response

{
"id": 1,
"botDisplayName": "RecordBot",
"meetingTitle": "Team Standup",
"status": "READY_TO_DEPLOY",
"meetingInfo": {
"platform": "google",
"meetingUrl": "https://meet.google.com/abc-defg-hij"
},
"createdAt": "2024-01-15T10:30:00Z"
}

Get Bot

GET /bots/{id}

Get details of a specific bot.

curl https://api.meetbot.dev/v1/bots/1 \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"id": 1,
"botDisplayName": "RecordBot",
"meetingTitle": "Team Standup",
"status": "IN_CALL",
"meetingInfo": {
"platform": "google",
"meetingUrl": "https://meet.google.com/abc-defg-hij"
},
"recording": null,
"deploymentError": null,
"lastHeartbeat": "2024-01-15T10:35:00Z",
"createdAt": "2024-01-15T10:30:00Z"
}

Update Bot

PATCH /bots/{id}

Update bot settings. Only allowed before deployment.

curl -X PATCH https://api.meetbot.dev/v1/bots/1 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"botDisplayName": "New Name",
"meetingTitle": "Updated Title"
}'

Delete Bot

DELETE /bots/{id}

Delete a bot. Only allowed when status is READY_TO_DEPLOY, DONE, or FATAL.

curl -X DELETE https://api.meetbot.dev/v1/bots/1 \
-H "Authorization: Bearer YOUR_API_KEY"

Deploy Bot

POST /bots/{id}/deploy

Deploy the bot to join the meeting.

curl -X POST https://api.meetbot.dev/v1/bots/1/deploy \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"message": "Bot deployment started",
"botId": 1,
"status": "DEPLOYING"
}

Kill Bot

POST /bots/{id}/kill

Force stop a running bot.

curl -X POST https://api.meetbot.dev/v1/bots/1/kill \
-H "Authorization: Bearer YOUR_API_KEY"

Response

{
"message": "Bot terminated",
"botId": 1,
"status": "FATAL"
}

Get Bot Logs

GET /bots/{id}/logs

Get logs from a bot.

Query Parameters

ParameterTypeDescription
levelstringFilter by log level (info, warn, error)
limitintegerMax number of logs (default: 100)
curl "https://api.meetbot.dev/v1/bots/1/logs?level=error&limit=50" \
-H "Authorization: Bearer YOUR_API_KEY"

Response

[
{
"id": 1,
"level": "info",
"message": "Bot started",
"createdAt": "2024-01-15T10:30:00Z"
},
{
"id": 2,
"level": "info",
"message": "Joining meeting...",
"createdAt": "2024-01-15T10:30:05Z"
}
]

Get Bot Events

GET /bots/{id}/events

Get events from a bot.

curl https://api.meetbot.dev/v1/bots/1/events \
-H "Authorization: Bearer YOUR_API_KEY"

Response

[
{
"id": 1,
"eventType": "BOT_JOINED",
"eventTime": "2024-01-15T10:30:10Z",
"data": null
},
{
"id": 2,
"eventType": "RECORDING_STARTED",
"eventTime": "2024-01-15T10:30:15Z",
"data": null
},
{
"id": 3,
"eventType": "PARTICIPANT_JOINED",
"eventTime": "2024-01-15T10:31:00Z",
"data": {
"participantName": "John Doe"
}
}
]

Bot Status Values

StatusDescription
READY_TO_DEPLOYBot created, waiting for deployment
DEPLOYINGContainer starting
JOINING_CALLJoining the meeting
IN_WAITING_ROOMIn meeting waiting room
IN_CALLActive in meeting, recording
CALL_ENDEDMeeting ended, processing
DONEComplete, recording available
FATALError occurred

Event Types

EventDescription
BOT_JOINEDBot entered the meeting
BOT_LEFTBot left the meeting
RECORDING_STARTEDRecording began
RECORDING_STOPPEDRecording ended
PARTICIPANT_JOINEDSomeone joined
PARTICIPANT_LEFTSomeone left
ERRORAn error occurred