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

# Video Catalog

> OSN+ video — shows, seasons, episodes, and movies.

`VideoCatalogService` is the OSN+ side of the SDK. Read-only, idempotent, cacheable. Live linear TV is **not** included — the public SDK is video-on-demand only.

## Entities

```
Show ── has ──> Season ── has ──> Episode
Movie (standalone)
```

A show response includes season summaries (so you can build a season selector without an extra request). A season response includes its paginated episode list.

## Operations

| RPC                | What it does                                          |
| ------------------ | ----------------------------------------------------- |
| `GetShow`          | Fetch a show by `ShowID` with season summaries.       |
| `GetSeason`        | Fetch a season by `SeasonID` with paginated episodes. |
| `GetEpisode`       | Fetch an episode by `EpisodeID`.                      |
| `GetMovie`         | Fetch a movie by `MovieID`.                           |
| `BatchGetShows`    | Up to N shows in one call.                            |
| `BatchGetSeasons`  | Batch seasons.                                        |
| `BatchGetEpisodes` | Batch episodes.                                       |
| `BatchGetMovies`   | Batch movies.                                         |

## Authentication

Public catalog data is accessible with **either** an API key or an OAuth access token. Acquiring a stream for an episode or movie requires OAuth + the `stream` scope. See [Streaming & Billing](/streaming-billing).

## Batch patterns

When rendering a "browse" or "search" surface that returns mixed video items, fetch full details with the appropriate `BatchGet*`. As with music, batches succeed and fail per-item — see [Errors / Batch errors](/usage-errors#batch-errors).

```ts theme={null}
const res = await video.batchGetEpisodes({
  episodeIds: episodeIds.map(value => ({ value })),
});
```

## Season pagination

Long-running shows have many episodes. `GetSeason` paginates the episode list with the standard cursor scheme — provide `page_token` from the previous response to continue. See [Pagination](/usage-pagination).

## Localization

Show, season, episode, and movie titles and descriptions use [`Localized`](https://github.com/anghami/sdk/blob/main/sdk/shared/v1/localized.proto) where multiple languages are available. Pick the value matching your client's locale, falling back to a sensible default (typically `en` or the first available).

## Related

* [Soundtrack](/soundtrack) — discover the songs in a show or movie.
* [Library](/library) — saved shows/movies.
* [Streaming & Billing](/streaming-billing) — `AcquireVideoStream`.
