Skip to main content

Recordings API

Access and download meeting recordings.

List Recordings

GET /recordings

Returns all recordings for the authenticated user.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
page_sizeintegerItems 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

FieldTypeDescription
speakerstringSpeaker's name
startTimefloatStart time in seconds
endTimefloatEnd 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

Create shareable links to recordings. See Shareable Recording Links for the full guide.

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 /recordings/{bot_id}/share

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