---
title: "Vimond Content Discovery API — compact index for LLMs"
description: "Compact index of viewer-facing content discovery operations (assets, categories, curated lists, EPG, popular)."
---

<!-- /openapi/content-discovery.llms.md — generated from /openapi/content-discovery.yaml; do not edit by hand -->

# Vimond Content Discovery API — compact index for LLMs

> One block per operation: method, path, `operationId`, tag, auth, and a one-line summary. Hub-maintained spec (enriched from guides); runtime Swagger in `vimond-content-discovery` until export is automated.

- **Per-tag slices:** `/openapi/content-discovery/tags/<slug>.openapi.yml` — see [Tags overview](#tags-overview) below.
- Canonical OpenAPI YAML: `/openapi/content-discovery.yaml`
- Interactive Scalar reference: `/reference/content-discovery/`
- Guides: [content-discovery](/docs/content-discovery/), [search-apis](/docs/search-apis/)

## API basics

- **Base URL:** `https://{tenant}.content-discovery.cf.{environment}.vmnd.tv`
- **Auth:** Usually public; some tenants require Bearer JWT and/or `X-Vimond-Tenant`. See [authentication](/docs/authentication/).
- **Published content only:** 404 often means unpublished — verify with discovery after publishing.
- **Search:** Non-empty `query` (Vimond query DSL). Guide: [search-apis](/docs/search-apis/).
- **Locale:** `Accept-Language` (e.g. `en_US`).
- **Images:** Use `images.templates` from payloads — [content-images](/docs/content-images/), [image-service.llms.md](/openapi/image-service.llms.md).
- **Caching:** `Cache-Control`, `X-Cache` — typical ~60s lookup / ~120s search.

## Tags overview

| Tag | Operations | Per-tag slice | Description |
|-----|------------|---------------|-------------|
| Assets | 2 | [`openapi/content-discovery/tags/assets.openapi.yml`](/openapi/content-discovery/tags/assets.openapi.yml) | Published assets (VOD, clips, live channels). |
| Categories | 2 | [`openapi/content-discovery/tags/categories.openapi.yml`](/openapi/content-discovery/tags/categories.openapi.yml) | Category tree nodes and search. |
| Curated lists | 2 | [`openapi/content-discovery/tags/curated-lists.openapi.yml`](/openapi/content-discovery/tags/curated-lists.openapi.yml) | Curated lists (content panels / smartlists). |
| EPG | 2 | [`openapi/content-discovery/tags/epg.openapi.yml`](/openapi/content-discovery/tags/epg.openapi.yml) | Electronic program guide — live channels and programs for a channel on a given date. |
| Popular | 1 | [`openapi/content-discovery/tags/popular.openapi.yml`](/openapi/content-discovery/tags/popular.openapi.yml) | Precomputed popular asset rankings (views/plays) for a time window. |

## Operations

### Tag: Assets (2)

**Per-tag slice:** [`/openapi/content-discovery/tags/assets.openapi.yml`](/openapi/content-discovery/tags/assets.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Published assets (VOD, clips, live channels). Lookup by id or metadata search.

#### GET /api/v1/assets — `searchAssets`
**Tag:** Assets • **Auth:** VimondAuth • **Responses:** 200, 400, 503
query: query, fields, extraFields, sort, platform, version, includeAllVersions, showChildren, page[number], page[size] • headers: Accept-Language
**Search published assets**
Full-text and metadata search across **published** assets. Requires a non-empty **`query`** (Vimond query DSL).

#### GET /api/v1/assets/{assetId} — `getAsset`
**Tag:** Assets • **Auth:** VimondAuth • **Responses:** 200, 400, 404, 503
path: assetId • query: fields, extraFields, platform, version, includeAllVersions • headers: Accept-Language
**Get published asset by ID**
Direct lookup of one **published** asset version. Returns 404 if the asset is not published or does not exist.

### Tag: Categories (2)

**Per-tag slice:** [`/openapi/content-discovery/tags/categories.openapi.yml`](/openapi/content-discovery/tags/categories.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Category tree nodes and search. Use depth on lookup to include child categories.

#### GET /api/v1/categories — `searchCategories`
**Tag:** Categories • **Auth:** VimondAuth • **Responses:** 200, 400, 503
query: query, fields, sort, platform, depth, page[number], page[size] • headers: Accept-Language
**Search published categories**
Full-text / metadata search for **published** categories. Requires non-empty **`query`**.

#### GET /api/v1/categories/{categoryId} — `getCategory`
**Tag:** Categories • **Auth:** VimondAuth • **Responses:** 200, 400, 404, 503
path: categoryId • query: fields, depth, sort, platform • headers: Accept-Language
**Get published category by ID**
Direct lookup of one **published** category. Use **`depth`** (default from service config) to embed child categories in the `children` array.

### Tag: Curated lists (2)

**Per-tag slice:** [`/openapi/content-discovery/tags/curated-lists.openapi.yml`](/openapi/content-discovery/tags/curated-lists.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Curated lists (content panels / smartlists). Lookup by alias or search with query.

#### GET /api/v1/lists — `searchCuratedLists`
**Tag:** Curated lists • **Auth:** VimondAuth • **Responses:** 200, 400, 503
query: query, fields, fields[asset], fields[category], sort, depth, page[number], page[size], childrenPage[size], platform, includeNotPublished • headers: Accept-Language
**Search curated lists**
Search **curated lists** (content panels) by metadata `query`. Control nesting with **`depth`** (max enforced by service).

#### GET /api/v1/lists/{alias} — `getCuratedListByAlias`
**Tag:** Curated lists • **Auth:** VimondAuth • **Responses:** 200, 400, 404, 503
path: alias • query: fields, fields[asset], fields[category], depth, childrenPage[number], childrenPage[size], includeNotPublished • headers: Accept-Language
**Get curated list by alias**
Lookup a single curated list by **alias** (path segment), e.g. `editorial_root` or a panel alias from the CMS.

### Tag: EPG (2)

**Per-tag slice:** [`/openapi/content-discovery/tags/epg.openapi.yml`](/openapi/content-discovery/tags/epg.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Electronic program guide — live channels and programs for a channel on a given date.

#### GET /api/v1/epg/channels — `listEpgChannels`
**Tag:** EPG • **Auth:** VimondAuth • **Responses:** 200, 400, 503
query: publisherId, fields, extraFields, sort, platform, page[number], page[size] • headers: Accept-Language
**List live EPG channels**
Returns **live channel** assets configured for EPG. Optional filter by **`publisherId`** (company / publisher id in metadata).

#### GET /api/v1/epg/channels/{channelId}/programs — `listEpgPrograms`
**Tag:** EPG • **Auth:** VimondAuth • **Responses:** 200, 400, 503
path: channelId • query: date, offset, publisherId, platform, sort, page[number], page[size] • headers: Accept-Language
**List EPG programs for a channel and date**
Programs (EPG events) for **`channelId`** on **`date`** (`YYYY-MM-DD`, required).

### Tag: Popular (1)

**Per-tag slice:** [`/openapi/content-discovery/tags/popular.openapi.yml`](/openapi/content-discovery/tags/popular.openapi.yml) — self-contained OpenAPI for just this tag's operations and the schemas they reference.

Precomputed popular asset rankings (views/plays) for a time window.

#### GET /api/v1/popular — `getPopularContent`
**Tag:** Popular • **Auth:** VimondAuth • **Responses:** 200, 400, 503
query: window, rankingMetric, documentType, assetType, responseSize, fields, platform, version • headers: Accept-Language
**Get popular content**
Pre-aggregated **popular** documents (typically assets) for a ranking window.

---

_Generated from `/openapi/content-discovery.yaml` — 9 operations across 5 tags. Re-run `npm run openapi-derivatives` to refresh._
