API Reference
Complete reference for the MeetBot REST API. Authenticate, send bots, and retrieve transcripts.
Authentication
The API supports two authentication methods:
Pass via X-API-Key header. Recommended for server-to-server requests.
Pass JWT token via Authorization: Bearer <token> header. Used for user-scoped dashboard requests.
Authentication
MeetBot supports two authentication methods: API Key authentication for server-to-server requests, and JWT Bearer tokens for user-scoped requests from the dashboard.
/auth/registerCreate a new user account. Returns a JWT access token and user object.
Request
curl -X POST http://localhost:3001/auth/register \ -H "Content-Type: application/json" \ -d '{ "email": "john@example.com", "password": "securepassword123", "name": "John Doe" }'Response
{ "success": true, "data": { "user": { "id": "uuid-abc-123", "email": "john@example.com", "name": "John Doe", "createdAt": "2024-03-15T10:30:00.000Z", "updatedAt": "2024-03-15T10:30:00.000Z" }, "accessToken": "eyJhbGciOiJIUzI1NiIs..." }, "timestamp": "2024-03-15T10:30:00.000Z"}/auth/loginAuthenticate with email and password. Returns a JWT access token.
Request
curl -X POST http://localhost:3001/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "john@example.com", "password": "securepassword123" }'Response
{ "success": true, "data": { "user": { "id": "uuid-abc-123", "email": "john@example.com", "name": "John Doe", "createdAt": "2024-03-15T10:30:00.000Z", "updatedAt": "2024-03-15T10:30:00.000Z" }, "accessToken": "eyJhbGciOiJIUzI1NiIs..." }, "timestamp": "2024-03-15T10:30:00.000Z"}Bots
Manage transcription bots. Send bots to meetings, check their status, update configuration, and remove them.
/botsCreate and send a transcription bot to a meeting. The bot will join the specified meeting and begin transcribing.
Request
curl -X POST http://localhost:3001/bots \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{ "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "botName": "MyBot", "language": "en" }'Response
{ "success": true, "data": { "meetingId": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "constructedMeetingUrl": "https://meet.google.com/abc-defg-hij", "status": "requested", "botContainerId": null, "data": {}, "createdAt": "2024-03-15T10:30:00.000Z" }, "timestamp": "2024-03-15T10:30:00.000Z"}/bots/statusGet the current status of all active bots. Returns an array of bot status objects.
Request
curl http://localhost:3001/bots/status \ -H "X-API-Key: YOUR_API_KEY"Response
{ "success": true, "data": [ { "meetingId": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "constructedMeetingUrl": "https://meet.google.com/abc-defg-hij", "status": "active", "botContainerId": "container-xyz", "startTime": "2024-03-15T10:30:05.000Z", "data": {}, "createdAt": "2024-03-15T10:30:00.000Z" } ], "timestamp": "2024-03-15T10:31:00.000Z"}/bots/:platform/:nativeMeetingIdRemove a bot from a meeting. The bot will leave the meeting and stop transcribing. The transcript is preserved.
Request
curl -X DELETE http://localhost:3001/bots/google_meet/abc-defg-hij \ -H "X-API-Key: YOUR_API_KEY"Response
{ "success": true, "data": { "meetingId": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "status": "stopping", "endTime": "2024-03-15T11:00:00.000Z", "message": "Bot stop requested" }, "timestamp": "2024-03-15T11:00:00.000Z"}/bots/:platform/:nativeMeetingId/configUpdate the configuration of an active bot. You can change settings like the transcription language.
Request
curl -X PUT http://localhost:3001/bots/google_meet/abc-defg-hij/config \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{ "language": "es" }'Response
{ "success": true, "data": { "meetingId": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "status": "active", "data": { "language": "es" }, "message": "Bot configuration updated" }, "timestamp": "2024-03-15T10:35:00.000Z"}Meetings
View and manage meeting records. Each meeting is automatically created when a bot joins.
/meetingsList all meetings for the authenticated user.
Request
curl http://localhost:3001/meetings \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Response
{ "success": true, "data": [ { "id": "uuid-meeting-123", "userId": "uuid-user-456", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "constructedMeetingUrl": "https://meet.google.com/abc-defg-hij", "status": "completed", "botContainerId": "container-xyz", "startTime": "2024-03-15T10:30:05.000Z", "endTime": "2024-03-15T11:00:00.000Z", "data": {}, "createdAt": "2024-03-15T10:30:00.000Z", "updatedAt": "2024-03-15T11:00:00.000Z" } ], "timestamp": "2024-03-15T11:05:00.000Z"}/meetings/:platform/:nativeMeetingIdGet a single meeting by platform and native meeting ID. Includes transcript segments if available.
Request
curl http://localhost:3001/meetings/google_meet/abc-defg-hij \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Response
{ "success": true, "data": { "id": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "constructedMeetingUrl": "https://meet.google.com/abc-defg-hij", "status": "completed", "botContainerId": "container-xyz", "startTime": "2024-03-15T10:30:05.000Z", "endTime": "2024-03-15T11:00:00.000Z", "data": {}, "transcriptSegments": [], "createdAt": "2024-03-15T10:30:00.000Z", "updatedAt": "2024-03-15T11:00:00.000Z" }, "timestamp": "2024-03-15T11:05:00.000Z"}/meetings/:platform/:nativeMeetingIdUpdate meeting metadata such as name or notes via the data field.
Request
curl -X PATCH http://localhost:3001/meetings/google_meet/abc-defg-hij \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -d '{ "data": { "name": "Q4 Planning Meeting", "notes": "Discussed roadmap priorities" } }'Response
{ "success": true, "data": { "id": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "status": "completed", "data": { "name": "Q4 Planning Meeting", "notes": "Discussed roadmap priorities" }, "updatedAt": "2024-03-15T11:10:00.000Z", "message": "Meeting updated" }, "timestamp": "2024-03-15T11:10:00.000Z"}/meetings/:platform/:nativeMeetingIdDelete a meeting record and its associated transcript permanently.
Request
curl -X DELETE http://localhost:3001/meetings/google_meet/abc-defg-hij \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Response
{ "success": true, "data": { "message": "Meeting deleted" }, "timestamp": "2024-03-15T11:15:00.000Z"}Transcripts
Retrieve and share meeting transcripts. Transcripts include speaker labels and timestamps.
/transcripts/:platform/:nativeMeetingIdGet the full transcript for a meeting. Includes speaker labels, timestamps, and a concatenated full text.
Request
curl http://localhost:3001/transcripts/google_meet/abc-defg-hij \ -H "X-API-Key: YOUR_API_KEY"Response
{ "success": true, "data": { "meeting": { "id": "uuid-meeting-123", "platform": "google_meet", "nativeMeetingId": "abc-defg-hij", "constructedMeetingUrl": "https://meet.google.com/abc-defg-hij", "status": "completed", "startTime": "2024-03-15T10:30:05.000Z", "endTime": "2024-03-15T11:00:00.000Z", "data": {} }, "segments": [ { "id": "uuid-seg-1", "speaker": "John Doe", "text": "Let's start with the Q4 roadmap discussion", "language": "en", "startTime": 0, "endTime": 3.2, "absoluteStartTime": "2024-03-15T10:30:05.000Z", "absoluteEndTime": "2024-03-15T10:30:08.200Z", "completed": true, "createdAt": "2024-03-15T10:30:08.200Z" }, { "id": "uuid-seg-2", "speaker": "Sarah Chen", "text": "I have the metrics dashboard ready to share", "language": "en", "startTime": 3.5, "endTime": 6.1, "absoluteStartTime": "2024-03-15T10:30:08.500Z", "absoluteEndTime": "2024-03-15T10:30:11.100Z", "completed": true, "createdAt": "2024-03-15T10:30:11.100Z" } ], "totalSegments": 2, "fullText": "Let's start with the Q4 roadmap discussion\nI have the metrics dashboard ready to share" }, "timestamp": "2024-03-15T11:05:00.000Z"}/transcripts/:platform/:nativeMeetingId/shareGenerate a shareable link for a transcript.
Request
curl -X POST http://localhost:3001/transcripts/google_meet/abc-defg-hij/share \ -H "X-API-Key: YOUR_API_KEY"Response
{ "success": true, "data": { "shareToken": "sh_abc123xyz", "shareUrl": "http://localhost:3000/share/sh_abc123xyz", "message": "Share link created" }, "timestamp": "2024-03-15T11:05:00.000Z"}API Keys
Create and manage API keys for authenticating with the MeetBot API.
/api-keysCreate a new API key. The full key is only returned once upon creation - store it securely.
Request
curl -X POST http://localhost:3001/api-keys \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "My Key" }'Response
{ "success": true, "data": { "id": "uuid-key-123", "name": "My Key", "key": "mk_live_a1b2c3d4e5f6...", "isActive": true, "createdAt": "2024-03-15T10:30:00.000Z", "message": "API key created. Store it securely — it will not be shown again." }, "timestamp": "2024-03-15T10:30:00.000Z"}/api-keysList all API keys for the authenticated user. Keys are masked for security.
Request
curl http://localhost:3001/api-keys \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Response
{ "success": true, "data": [ { "id": "uuid-key-123", "name": "My Key", "keyPrefix": "mk_live_a1b2", "isActive": true, "lastUsedAt": "2024-03-15T09:00:00.000Z", "createdAt": "2024-03-10T10:30:00.000Z" } ], "timestamp": "2024-03-15T10:35:00.000Z"}/api-keys/:idRevoke an API key permanently. Any requests using this key will immediately fail.
Request
curl -X DELETE http://localhost:3001/api-keys/uuid-key-123 \ -H "Authorization: Bearer YOUR_JWT_TOKEN"Response
{ "success": true, "data": { "message": "API key revoked" }, "timestamp": "2024-03-15T10:40:00.000Z"}