Recording
Record a call as separate files, one per person's mic, camera and screen share. You can download them, or have them combined into a single video. Recording needs prepaid credit (see Pricing).
- Audio (default): one WAV file per microphone or screen audio.
- Video (
"video": true): every camera, mic and screen share as WebM files, pluscomposite.mp4, the whole call on one grid. The manifest showscomposite.statusaspendinguntilcomposite.mp4is ready (rendering is faster than real time). Pass"composite": falseto skip it.
Start and stop
From your backend:
curl -X POST https://api.appsocom.dev/rooms/class-1/recording \
-H "Authorization: Bearer $APPSOCOM_API_KEY" -H "Content-Type: application/json" \
-d '{"video":true,"maxMinutes":120}'
curl -X DELETE https://api.appsocom.dev/rooms/class-1/recording -H "Authorization: Bearer $APPSOCOM_API_KEY"Or a teacher from the call: room.startRecording({ video: true }) and room.stopRecording(). A recording stops by itself when the last person leaves or the room is closed. Video recordings also stop after maxMinutes (default 360). The first video recording in a room can take up to a minute to start.
Tell people they're being recorded
Everyone in the room gets the recording state, including people who join late. Show it:
room.on("recording", (rec) => recDot.hidden = !rec); // { id, startedAt, startedBy, video } or nullGet the files
curl https://api.appsocom.dev/rooms/class-1/recordings -H "Authorization: Bearer $APPSOCOM_API_KEY"
# → each recording, with its files and a manifest.json
curl -O https://api.appsocom.dev/rooms/class-1/recordings/<recordingId>/<file> -H "Authorization: Bearer $APPSOCOM_API_KEY"Downloads support Range requests, so you can stream or resume them.
| Endpoint | |
|---|---|
POST /rooms/:roomId/recording |
start: {} for audio, or { "video": true, "maxMinutes": 120 }. 409 if already recording or the room is empty. |
GET /rooms/:roomId/recording |
what's recording now |
DELETE /rooms/:roomId/recording |
stop; returns the manifest |
GET /rooms/:roomId/recordings |
finished recordings and their files |
GET /rooms/:roomId/recordings/:recordingId/:file |
download a file |
Video recording saves VP8 and VP9 video with Opus audio, which is what browsers send by default. A sender that only offers H.264 is skipped and listed in the manifest's errors.