APPSOCOMDocs

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, plus composite.mp4, the whole call on one grid. The manifest shows composite.status as pending until composite.mp4 is ready (rendering is faster than real time). Pass "composite": false to skip it.

Start and stop

From your backend:

bash
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:

ts
room.on("recording", (rec) => recDot.hidden = !rec); // { id, startedAt, startedBy, video } or null

Get the files

bash
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.