Recordings API
Access and download meeting recordings.
List Recordings
GET /recordings
Returns all recordings for the authenticated user.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
page_size | integer | Items per page (default: 20) |
Example
curl https://api.meetbot.dev/v1/recordings \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"recordings": [
{
"botId": 1,
"meetingTitle": "Team Standup",
"platform": "google",
"recordingUrl": "recordings/1/recording.webm",
"durationSeconds": 3600,
"status": "DONE",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20
}
Get Recording
GET /recordings/{bot_id}
Get recording metadata for a specific bot.
curl https://api.meetbot.dev/v1/recordings/1 \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"botId": 1,
"meetingTitle": "Team Standup",
"platform": "google",
"recordingUrl": "recordings/1/recording.webm",
"durationSeconds": 3600,
"fileSizeBytes": 157286400,
"status": "DONE",
"createdAt": "2024-01-15T10:30:00Z"
}
Get Download URL
GET /recordings/{bot_id}/download
Get a pre-signed URL to download the recording.
curl https://api.meetbot.dev/v1/recordings/1/download \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"downloadUrl": "https://storage.meetbot.dev/recordings/1/recording.webm?signature=...",
"expiresInSeconds": 3600
}
The URL is valid for 1 hour and can be used to download the recording directly.
Download the File
# Get download URL
URL=$(curl -s https://api.meetbot.dev/v1/recordings/1/download \
-H "Authorization: Bearer YOUR_API_KEY" | jq -r '.downloadUrl')
# Download the recording
curl -o recording.webm "$URL"
Get Transcription
GET /recordings/{bot_id}/transcription
Get speaker timeframes for the recording.
curl https://api.meetbot.dev/v1/recordings/1/transcription \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"botId": 1,
"speakerTimeframes": [
{
"speaker": "John Doe",
"startTime": 0.0,
"endTime": 15.5
},
{
"speaker": "Jane Smith",
"startTime": 15.5,
"endTime": 45.2
},
{
"speaker": "John Doe",
"startTime": 45.2,
"endTime": 120.0
}
]
}
Speaker Timeframe Object
| Field | Type | Description |
|---|---|---|
speaker | string | Speaker's name |
startTime | float | Start time in seconds |
endTime | float | End time in seconds |
Stream Recording
GET /recordings/{bot_id}/stream
Stream the recording video directly. Useful for in-browser playback without downloading the full file.
curl https://api.meetbot.dev/v1/recordings/1/stream \
-H "Authorization: Bearer YOUR_API_KEY"
The response streams the video with appropriate Content-Type and Content-Length headers. Supports the token query parameter as an alternative to the Authorization header (useful for <video> elements):
<video src="https://api.meetbot.dev/v1/recordings/1/stream?token=YOUR_API_KEY" controls />
Delete Recording
DELETE /recordings/{bot_id}
Delete a recording and its associated storage file.
curl -X DELETE https://api.meetbot.dev/v1/recordings/1 \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
Recording Formats
Recordings are stored in WebM format with:
- Video: VP8/VP9 codec
- Audio: Opus codec
- Resolution: Up to 1080p (depends on source)
Storage
Recordings are stored in S3-compatible storage:
- Default retention: 30 days
- Max file size: 10GB
- Supported: AWS S3, MinIO, Cloudflare R2, Google Cloud Storage
Share Links
Create shareable links to recordings. See Shareable Recording Links for the full guide.
Create Share Link
POST /recordings/{bot_id}/share
curl -X POST https://api.meetbot.dev/v1/recordings/1/share \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"expiresIn": "7d", "includeTranscript": true}'
Get Share Link
GET /recordings/{bot_id}/share
Delete Share Link
DELETE /recordings/{bot_id}/share
Notes
- Recordings are only available when bot status is
DONE - Download URLs expire after 1 hour
- Large recordings may take time to process after meeting ends