---
title: "List library videos"
method: GET
path: "/videos"
tags: ["Videos"]
---

# List library videos

`GET /videos`

## Request

- Base URL: `https://api.braiv.co/v1`
- URL: `https://api.braiv.co/v1/videos`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Lists accessible videos newest first. Pass the previous response's token to continue. Required scope: `videos:read`.

## Query parameters

- `limit` integer
- `pageToken` string

## Response `200`

A page of videos.

- VideoList
  - `videos` Video[], required: Videos in descending creation order.
    - `id` string, required: Library video ID.
    - `status` 'queued' | 'processing' | 'ready' | 'failed', required: Normalized lifecycle shared by jobs and video projections: `queued` is waiting to start, `processing` is running, `ready` completed successfully, and `failed` reached a terminal error.
    - `title` string: Current video title.
    - `description` string: Current video description.
    - `duration` number: Media duration in seconds.
    - `posterUrl` string, uri: Current poster image URL.
    - `provider` string: Internal source provider label.
    - `mediaType` 'video' | 'audio': Ingested media kind.
    - `defaultLanguageCode` string: ISO-style language or locale code accepted by the underlying product.
    - `url` string, uri: Primary playback URL when available.
    - `urlMulti` object: Playback URLs keyed by language code.
    - `workspaceId` string: Owning workspace, if any.
    - `folderIds` string[]: Studio folder ids this video belongs to (`UserVideos.tags`).
    - `createdAt` string, date-time: ISO creation timestamp.
    - `import` VideoStatusRef
      - `status` 'queued' | 'processing' | 'ready' | 'failed', required: Normalized lifecycle shared by jobs and video projections: `queued` is waiting to start, `processing` is running, `ready` completed successfully, and `failed` reached a terminal error.
      - `language` string: ISO-style language or locale code accepted by the underlying product.
    - `transcript` VideoStatusRef
      - `status` 'queued' | 'processing' | 'ready' | 'failed', required: Normalized lifecycle shared by jobs and video projections: `queued` is waiting to start, `processing` is running, `ready` completed successfully, and `failed` reached a terminal error.
      - `language` string: ISO-style language or locale code accepted by the underlying product.
  - `nextPageToken` string, nullable, required: Last video ID to pass to the next request, or null at the end.

## Other responses

- `400`: Request fields are missing, malformed, out of bounds, or mutually inconsistent.
- `401`: A supported authentication header is missing or contains an invalid Public API key.
- `403`: Authentication succeeded, but the required scope, workspace role, or resource permission is missing.
- `429`: The API key exceeded its allowed concurrency or request rate. Retry after in-flight work completes or the limit resets.
- `500`: An unexpected server error occurred.

---

[API](https://skmtc.dev/braiv/apis/braiv-public-api.md) - [All operations](https://skmtc.dev/braiv/apis/braiv-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/braiv/apis/braiv-public-api/revisions/8ed0fd0d0a6f?raw)
