---
title: "List recordings"
method: GET
path: "/recordings"
tags: ["Recordings"]
---

# List recordings

`GET /recordings`

Returns recordings **visible to the owner of the API key**.

If you want to access "all" recordings, use an admin user who is added to all restricted groups. Recordings with explicit `only_me` permission are only accessible by said user.

Rate limits:
- Global: 120 requests per minute per API key.
- Endpoint-specific: 60 requests per minute per API key.

## Query parameters

- `filter` object
  - `created_at_eq` string
  - `created_at_not_eq` string
  - `created_at_lt` string
  - `created_at_lteq` string
  - `created_at_gt` string
  - `created_at_gteq` string
  - `created_at_in` union
    - string
    - string[]
  - `created_at_not_in` union
    - string
    - string[]
  - `created_at_cont` string
  - `updated_at_eq` string
  - `updated_at_not_eq` string
  - `updated_at_lt` string
  - `updated_at_lteq` string
  - `updated_at_gt` string
  - `updated_at_gteq` string
  - `updated_at_in` union
    - string
    - string[]
  - `updated_at_not_in` union
    - string
    - string[]
  - `updated_at_cont` string
  - `demo_start_date_eq` string
  - `demo_start_date_not_eq` string
  - `demo_start_date_lt` string
  - `demo_start_date_lteq` string
  - `demo_start_date_gt` string
  - `demo_start_date_gteq` string
  - `demo_start_date_in` union
    - string
    - string[]
  - `demo_start_date_not_in` union
    - string
    - string[]
  - `demo_start_date_cont` string
  - `duration_eq` string
  - `duration_not_eq` string
  - `duration_lt` string
  - `duration_lteq` string
  - `duration_gt` string
  - `duration_gteq` string
  - `duration_in` union
    - string
    - string[]
  - `duration_not_in` union
    - string
    - string[]
  - `duration_cont` string
  - `demo_id_eq` string
  - `demo_id_not_eq` string
  - `demo_id_lt` string
  - `demo_id_lteq` string
  - `demo_id_gt` string
  - `demo_id_gteq` string
  - `demo_id_in` union
    - string
    - string[]
  - `demo_id_not_in` union
    - string
    - string[]
  - `demo_id_cont` string
  - `host_eq` string — Host selector. Accepts an email address or `me`.
  - `host_in` union — Host selectors. Each value accepts an email address or `me`.
    - string
    - string[]
  - `attendee_eq` string — Attendee selector. Accepts an email address or `me`.
  - `attendee_in` union — Attendee selectors. Each value accepts an email address or `me`.
    - string
    - string[]
  - `status_eq` 'pending' | 'ready' | 'failure' | 'cancelled' | 'expired'
  - `status_not_eq` 'pending' | 'ready' | 'failure' | 'cancelled' | 'expired'
  - `status_in` union
    - 'pending' | 'ready' | 'failure' | 'cancelled' | 'expired'
    - string[]
  - `status_not_in` union
    - 'pending' | 'ready' | 'failure' | 'cancelled' | 'expired'
    - string[]
  - `postprocessing_status_eq` 'pending' | 'done' | 'too_short' | 'failed'
  - `postprocessing_status_not_eq` 'pending' | 'done' | 'too_short' | 'failed'
  - `postprocessing_status_in` union
    - 'pending' | 'done' | 'too_short' | 'failed'
    - string[]
  - `postprocessing_status_not_in` union
    - 'pending' | 'done' | 'too_short' | 'failed'
    - string[]
  - `group_id_eq` string
  - `group_id_in` union
    - string
    - string[]
  - `access_eq` 'company_wide' | 'selected_groups' | 'host_only'
  - `access_not_eq` 'company_wide' | 'selected_groups' | 'host_only'
  - `access_in` union
    - 'company_wide' | 'selected_groups' | 'host_only'
    - string[]
  - `access_not_in` union
    - 'company_wide' | 'selected_groups' | 'host_only'
    - string[]
- `cursor` string
- `limit` integer

## Response `200`

Recordings fetched successfully.

- RecordingIndexResponse
  - `data` RecordingListItem[], required
    - `recordingToken` string, required — Public recording token identifier.
    - `recordingId` string, required — Internal recording id as string.
    - `demoId` string, required — Internal demo id as string.
    - `userId` integer, required — ID of the demo host user.
    - `name` string, nullable, required
    - `recordingWebUrl` string, required — URL to the recording view in Demodesk.
    - `temporaryDirectUrl` string, nullable, required — Direct link to the video file, signed with a temporary access token.
    - `status` 'pending' | 'ready' | 'failure' | 'cancelled' | 'expired', required — Recording status. - `pending`: recording is still in progress or processing - `ready`: recording can be consumed - `failure`: recording failed - `cancelled`: recording never started, eg. because the bot was not admitted - `expired`: recording expired
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `demoStartDate` string, date-time, nullable, required
    - `durationMs` integer, nullable, required
    - `postprocessingStatus` 'pending' | 'done' | 'failed' | 'too_short', nullable, required — Recording post-processing status. Post-processing includes transcription, participant data enrichment, meeting statistics, generating summaries, etc.
    - `access` 'company_wide' | 'selected_groups' | 'host_and_participants' | 'host_only', required — Access permission level of the demo. - `company_wide`: visible to all company members - `selected_groups`: visible to members of assigned groups - `host_and_participants`: visible only to the host and participants - `host_only`: visible only to the host
    - `groupIds` string[] — IDs of groups assigned to the demo. Present in list responses only; detail responses use `groups` instead.
  - `meta` object, required
    - `hasNext` boolean, required
    - `limit` integer, required
    - `nextCursor` string, nullable

## Other responses

- `400` — Request validation failed.
- `401` — API key is missing or invalid.
- `429` — Rate limit exceeded.

---

[API](https://skmtc.net/demodesk/apis/demodesk-public-api.md) · [All operations](https://skmtc.net/demodesk/apis/demodesk-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/demodesk/demodesk-public-api/revisions/3c40ff85e81d/schema)
