Skip to main content
Version: Next

Manage recordings

Once a recording exists, you manage it through the Fishjam Server API the same way, whether it was created with a template or from a composition output. Every call below is a method on the FishjamClient of the JS and Python server SDKs.

export FISHJAM_URL="https://fishjam.io/api/v1/connect/<YOUR_FISHJAM_ID>" export TOKEN="<YOUR_MANAGEMENT_TOKEN>" export RECORDING="<RECORDING_ID>"

Check the status​

const { status } = await fishjamClient.getRecording(recording.id);

A recording has four statuses:

StatusMeaning
activeMedia is being captured.
finishedCapture has ended and the file is being prepared.
availableThe MP4 is ready and files contains the download URL.
failedAn error occurred and no file will be produced.

Instead of polling, you can subscribe to server notifications: every status change emits a RecordingStatusChanged message containing the recording's id, its new status, and its metadata, delivered over your configured webhook or a websocket.

Stop the recording​

await fishjamClient.stopRecording(recording.id);

Finalization is asynchronous: the recording remains active until capture has ended, then transitions to finished. Stopping a recording that is no longer active has no effect.

Stopping a recording explicitly is optional. Capture also ends when the composition ends, so deleting the composition finalizes its recordings. A recording of a composition output also ends when that output ends.

Download the MP4​

Once the status is available, the recording's files field lists its media files in playback order as direct HTTPS URLs:

{ "data": { "id": "<RECORDING_ID>", "status": "available", "files": [{ "url": "https://media.fishjam.io/.../index.mp4" }], "source": { "...": "..." }, "metadata": { "show": "weekly-standup" } } }

You can download the file or serve the URL to your users directly. Until the recording is available, files is empty.

Fishjam keeps recordings for 3 months after they are created, so download any file you need for longer. See Retention.

List your recordings​

GET /recordings lists every recording in your app and accepts filters on status and metadata. A metadata filter matches recordings whose metadata contains all of the given pairs. Values are compared as strings, so numeric and boolean metadata values cannot be matched this way.

const recordings = await fishjamClient.getAllRecordings({ show: "weekly-standup", });

The SDK methods filter by metadata only. To filter by status as well, call the REST endpoint directly.

Delete a recording​

Recordings persist independently of the composition for 3 months. To remove one sooner, delete it. Deleting a recording also removes its files:

await fishjamClient.deleteRecording(recording.id);

An active recording cannot be deleted. Stop it first and delete it once its status is no longer active.

See the Server REST API reference for the complete request and response schemas.