API Overview
MeetBot provides a RESTful API for managing meeting bots.
Base URL
Sandbox:
https://noncivilized-lorelei-rattly.ngrok-free.dev/api/v1
Production:
https://api.meetbot.dev/v1
Authentication
All API requests require authentication via Bearer token:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.meetbot.dev/v1/bots
See Authentication for details on obtaining tokens.
Request Format
- Content-Type:
application/json - Accept:
application/json
curl -X POST https://api.meetbot.dev/v1/bots \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"meetingInfo": {"platform": "google", "meetingUrl": "..."}}'
Response Format
All responses are JSON:
{
"id": 1,
"status": "READY_TO_DEPLOY",
"createdAt": "2024-01-15T10:30:00Z"
}
Error Responses
{
"detail": "Bot not found"
}
Or with validation errors:
{
"detail": [
{
"loc": ["body", "meetingInfo", "platform"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
HTTP Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created |
204 | No Content (successful deletion) |
400 | Bad Request (validation error) |
401 | Unauthorized (invalid/missing token) |
403 | Forbidden (insufficient permissions) |
404 | Not Found |
409 | Conflict (e.g., bot already deployed) |
422 | Unprocessable Entity |
429 | Rate Limited |
500 | Internal Server Error |
Pagination
List endpoints support pagination:
GET /api/v1/bots?page=1&page_size=20
Response includes pagination metadata:
{
"bots": [...],
"total": 150,
"page": 1,
"page_size": 20
}
Rate Limiting
Coming Soon: Rate limiting is planned but not yet enforced. The following limits will apply in a future release.
- 60 requests/minute per API key
- 1000 requests/hour per API key
Rate limit headers (planned):
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1705312800
API Endpoints
Authentication
| Method | Endpoint | Description |
|---|---|---|
| POST | /auth/register | Register new user |
| POST | /auth/login | Login with email/password |
| POST | /auth/logout | Invalidate tokens |
| POST | /auth/refresh | Refresh access token |
Users
| Method | Endpoint | Description |
|---|---|---|
| GET | /users/me | Get current user |
| PATCH | /users/me | Update profile |
| GET | /users/me/usage | Get usage statistics |
Bots
| Method | Endpoint | Description |
|---|---|---|
| GET | /bots | List all bots |
| POST | /bots | Create new bot |
| GET | /bots/{id} | Get bot details |
| PATCH | /bots/{id} | Update bot |
| DELETE | /bots/{id} | Delete bot |
| POST | /bots/{id}/deploy | Deploy bot |
| POST | /bots/{id}/kill | Force stop bot |
| GET | /bots/{id}/logs | Get bot logs |
| GET | /bots/{id}/events | Get bot events |
Recordings
| Method | Endpoint | Description |
|---|---|---|
| GET | /recordings | List recordings |
| GET | /recordings/{bot_id} | Get recording info |
| GET | /recordings/{bot_id}/download | Get download URL |
| GET | /recordings/{bot_id}/transcription | Get transcription |
| GET | /recordings/{bot_id}/stream | Stream recording video |
| DELETE | /recordings/{bot_id} | Delete recording |
| POST | /recordings/{bot_id}/share | Create share link |
| GET | /recordings/{bot_id}/share | Get share link |
| DELETE | /recordings/{bot_id}/share | Delete share link |
Webhooks
| Method | Endpoint | Description |
|---|---|---|
| GET | /webhooks | List webhooks |
| POST | /webhooks | Create webhook |
| GET | /webhooks/{id} | Get webhook details |
| PATCH | /webhooks/{id} | Update webhook |
| DELETE | /webhooks/{id} | Delete webhook |
| POST | /webhooks/{id}/test | Test webhook |
| GET | /webhooks/{id}/deliveries | Get delivery history |
Transcripts
| Method | Endpoint | Description |
|---|---|---|
| POST | /transcripts/{bot_id}/transcribe | Start transcription |
| GET | /transcripts/{bot_id} | Get full transcript |
| GET | /transcripts/{bot_id}/status | Get transcript status |
| DELETE | /transcripts/{bot_id} | Delete transcript |
Summaries
| Method | Endpoint | Description |
|---|---|---|
| POST | /summaries/{bot_id}/summarize | Generate summary |
| GET | /summaries/{bot_id} | Get summary |
| GET | /summaries/{bot_id}/status | Get summary status |
| DELETE | /summaries/{bot_id} | Delete summary |
Events
| Method | Endpoint | Description |
|---|---|---|
| GET | /events | List aggregated events |
API Keys
| Method | Endpoint | Description |
|---|---|---|
| GET | /api-keys | List API keys |
| POST | /api-keys | Create API key |
| DELETE | /api-keys/{id} | Revoke API key |
| GET | /api-keys/{id}/usage | Get key usage stats |
Analytics & Usage
| Method | Endpoint | Description |
|---|---|---|
| GET | /users/me/analytics | Usage analytics dashboard |
| GET | /users/me/api-logs | API request logs |
Public Endpoints
These endpoints do not require authentication:
| Method | Endpoint | Description |
|---|---|---|
| GET | /share/{token} | Access shared recording |
SDKs
Coming soon:
- Python SDK
- JavaScript/TypeScript SDK
- Go SDK
OpenAPI Specification
Interactive API documentation is available at:
- Swagger UI: http://localhost:8004/docs
- ReDoc: http://localhost:8004/redoc
- OpenAPI JSON: http://localhost:8004/openapi.json