Skip to content

Recordings

GET /api/v1/recordings

Returns a paginated list of recordings accessible to the authenticated user.

ParameterTypeDefaultDescription
limitnumber20Number of results (1–100)
offsetnumber0Pagination offset
searchstringFilter by title (partial match)
statusstringFilter by status (see Recording statuses)
date_fromstringISO 8601 date — only return recordings created on or after
date_tostringISO 8601 date — only return recordings created on or before
organization_idstringScope to an organization
folder_idstringScope to a folder (requires organization_id)
{
"data": [
{
"id": "uuid",
"status": "COMPLETED",
"title": "Weekly sync",
"createdAt": "2025-09-19T15:00:00.000Z",
"thumbnailUrl": "https://...",
"progress": 1.0,
"capabilities": {
"canDownload": true,
"canShare": true,
"canViewTranscription": true,
"canGenerateSummary": true,
"canAskQuestions": true
}
}
],
"pagination": {
"total": 42,
"limit": 20,
"offset": 0,
"has_more": true
}
}

GET /api/v1/recordings/:id

Returns full details for a single recording.

{
"data": {
"id": "uuid",
"status": "COMPLETED",
"title": "Weekly sync",
"createdAt": "2025-09-19T15:00:00.000Z",
"updatedAt": "2025-09-19T15:30:00.000Z",
"startedAt": "2025-09-19T15:01:00.000Z",
"endedAt": "2025-09-19T15:30:00.000Z",
"videoUrl": "https://...",
"hlsUrl": "https://...",
"downloadUrl": "https://...",
"downloadUrlExpiresAt": "2025-09-19T21:00:00.000Z",
"thumbnailUrl": "https://...",
"organizationId": "org_uuid or null",
"transcription": {
"status": "completed",
"language": "en",
"speakers": ["Speaker 1", "Speaker 2"],
"segmentsCount": 184,
"duration": 1740.5
},
"summary": {
"status": "completed",
"content": "## Key topics\n...",
"topics": [
{
"title": "Project timeline",
"keyPoints": [
{ "point": "Launch date confirmed", "details": ["Set for Q1"] }
]
}
]
},
"isLocked": false,
"capabilities": {
"canDownload": true,
"canShare": true,
"canViewTranscription": true,
"canStartTranscription": true,
"canRegenerateTranscription": false,
"canRenameSpeaker": true,
"canViewSummary": true,
"canGenerateSummary": true,
"canAskQuestions": true
}
}
}

GET /api/v1/recordings/:id/transcript

Returns paginated transcript segments for a recording.

ParameterTypeDefaultDescription
start_chunknumber0Chunk index to start from
limitnumber50Number of chunks (1–100)
{
"data": {
"status": "completed",
"language": "en",
"speakers": ["Speaker 1", "Alice"],
"duration": 1740.5,
"segments": [
{
"id": 1,
"start": 0.5,
"end": 3.2,
"text": "Good morning everyone.",
"speaker": "Alice",
"confidence": 0.97
}
],
"pagination": {
"total_chunks": 184,
"has_more": true
}
}
}

PATCH /api/v1/recordings/:id

Update the title or notes of a recording. At least one field is required.

{
"title": "New title (1–500 characters)",
"notes": "Optional notes (max 100,000 characters)"
}
{
"data": { "success": true }
}

DELETE /api/v1/recordings/:id

Permanently deletes a recording and all associated data (transcript, summary, shares).

{
"data": { "success": true }
}

POST /api/v1/recordings/:id/share-link

Generates a public share link for the recording.

{
"permission": "view"
}
ValueDescription
viewRecipients can watch the video and access the transcript/summary
downloadRecipients can also download the video file
{
"data": {
"share_url": "https://recordmeeting.com/app/shared/abc123",
"share_token": "abc123",
"permission": "view"
}
}

StatusDescription
STARTINGRecording request received, setup in progress
CONNECTINGConnecting to the Google Meet session
WAIT_APPROVALWaiting for in-call approval to record
RECORDINGActively recording
UPLOADINGClient-side upload in progress (chunks draining to storage)
PROCESSINGCloudflare Stream packaging HLS/DASH — not yet playable
MIGRATINGVideo fully playable; HLS being migrated to long-term storage
COMPLETEDRecording fully processed and stored
ERRORRecording failed

API consumers should treat MIGRATING identically to COMPLETED for playback, download, and share operations — the distinction is internal.