> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wcr.is/llms.txt
> Use this file to discover all available pages before exploring further.

# WeCareRemote meeting recordings API

> Access and manage video meeting recordings via the WeCareRemote records API. Authorized org_admin users can list, retrieve, and download stored recording files.

The WeCareRemote recordings API provides access to meeting recordings captured during video sessions. Recordings are stored in secure cloud storage and are accessible to authorized users. The API handles the full recording lifecycle — from storage through to expiry and deletion.

Common use cases for this API:

* Building an internal dashboard that lists recent meetings for NGO staff
* Pulling recordings into a transcription or summarisation pipeline
* Archiving recordings to long-term storage before they expire
* Auditing meeting activity for compliance reporting

## How recordings are stored

When a meeting ends, the recording is automatically uploaded to secure cloud storage. Access, metadata, and retention are managed by the platform. After the configured retention period, recordings are automatically removed.

<Warning>Recordings are automatically deleted after the retention period expires. Download any important recordings before they are removed — deleted recordings cannot be recovered.</Warning>

## Accessing recordings

All recordings endpoints require authentication. Include your Bearer token in the `Authorization` header on every request.

```http theme={null}
Authorization: Bearer your-token
```

<Note>Access to recordings is restricted to users with `org_admin` permissions. Requests from users without this permission will be rejected with a `403 Forbidden` response.</Note>

## Listing recordings

Retrieve a list of all available recordings for your organization.

**Endpoint:** `GET /recordings`

**Authentication:** Bearer token required — see [Authentication](/api/authentication).

### Response

```json theme={null}
{
  "recordings": [
    {
      "id": "rec_001",
      "meeting_id": "wcr-meeting-xyz",
      "created_at": "2025-01-15T10:30:00Z",
      "duration_seconds": 3600,
      "url": "https://storage.wcr.is/recordings/rec_001.mp4"
    }
  ]
}
```

<ResponseField name="recordings" type="array">
  An array of recording objects.

  <Expandable title="recording properties">
    <ResponseField name="id" type="string">
      The unique identifier for this recording.
    </ResponseField>

    <ResponseField name="meeting_id" type="string">
      The Jitsi meeting ID that produced this recording.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp of when the recording was created.
    </ResponseField>

    <ResponseField name="duration_seconds" type="integer">
      The length of the recording in seconds.
    </ResponseField>

    <ResponseField name="url" type="string">
      The direct URL to download or stream the recording file.
    </ResponseField>
  </Expandable>
</ResponseField>

### Example

```bash theme={null}
curl https://your-records-backend/recordings \
  -H "Authorization: Bearer your-token"
```

## Downloading a recording

Use the `url` field from the listing response to download a recording. The download URL also requires authentication.

```bash theme={null}
curl -L "https://storage.wcr.is/recordings/rec_001.mp4" \
  -H "Authorization: Bearer your-token" \
  -o meeting-recording.mp4
```

```python theme={null}
import httpx

client = httpx.Client(headers={"Authorization": "Bearer your-token"})

# First, get the list of recordings
recordings = client.get("https://your-records-backend/recordings").json()

# Download the first recording
url = recordings["recordings"][0]["url"]
with client.stream("GET", url) as response:
    with open("recording.mp4", "wb") as f:
        for chunk in response.iter_bytes():
            f.write(chunk)
```

## Error responses

| Status code                 | Cause                                                                  |
| --------------------------- | ---------------------------------------------------------------------- |
| `401 Unauthorized`          | The Bearer token is missing or invalid.                                |
| `403 Forbidden`             | The token is valid but the user does not have `org_admin` permissions. |
| `404 Not Found`             | The requested recording does not exist or has been deleted.            |
| `500 Internal Server Error` | An unexpected error occurred in the recordings backend.                |
