Bots API
Create and manage meeting bots.
List Bots
GET /bots
Returns all bots for the authenticated user.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
page_size | integer | Items per page (default: 20, max: 100) |
status | string | Filter 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
| Parameter | Type | Description |
|---|---|---|
level | string | Filter by log level (info, warn, error) |
limit | integer | Max 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
| Status | Description |
|---|---|
READY_TO_DEPLOY | Bot created, waiting for deployment |
DEPLOYING | Container starting |
JOINING_CALL | Joining the meeting |
IN_WAITING_ROOM | In meeting waiting room |
IN_CALL | Active in meeting, recording |
CALL_ENDED | Meeting ended, processing |
DONE | Complete, recording available |
FATAL | Error occurred |
Event Types
| Event | Description |
|---|---|
BOT_JOINED | Bot entered the meeting |
BOT_LEFT | Bot left the meeting |
RECORDING_STARTED | Recording began |
RECORDING_STOPPED | Recording ended |
PARTICIPANT_JOINED | Someone joined |
PARTICIPANT_LEFT | Someone left |
ERROR | An error occurred |