Recordings
List meeting recordings and download them — decrypted on your side, never on ours.
A host starts a recording inside the meeting. It is composed and encrypted in that browser and uploaded in parts, so the stored file is ciphertext: our servers keep the parts, not the meeting. The API lists recordings and hands you the parts with the key for that one recording.
List recordings
const { data } = await deewan.recordings.list({ room_id: roomId, limit: 20 });
// { id, title, status, mime_type, parts, bytes, duration_ms, started_at, … }Download one
The SDK fetches every part and decrypts them locally, returning a playable file:
import { writeFile } from "node:fs/promises";
const { bytes, mimeType } = await deewan.recordings.download(recordingId);
await writeFile("lesson.webm", bytes); // mimeType is usually video/webmWithout the SDK: POST /recordings/{id}/download returns the key and the part URLs. Fetch the parts in order; each is a 12-byte IV followed by AES-256-GCM ciphertext, with deewan-recording:<id>:<index> as additional authenticated data. Concatenate the decrypted parts — that is the file.
That key decrypts the meeting. Treat the download response like a password: fetch it from your server, never from a browser, and don't log it.
When a recording is ready
recording.readyfires when the host stops (or leaves and the recording closes itself).statusisrecording, thenready;partsis how many pieces to fetch.- Deleting a recording removes its stored parts and cannot be undone.
- Who may watch a recording in Deewan follows the room: everyone who can use it, or only its hosts.