Documentation Index
Fetch the complete documentation index at: https://docs.discovr.media/llms.txt
Use this file to discover all available pages before exploring further.
What is a row?
Rows are the horizontal recommendation rails on a page—each row is a scrollable list of titles, categories, or streaming providers. After you fetch a page, you paginate through its rows and load items (titles) from each row your user scrolls into. Rows come in four types: media (title thumbnails), top_n (ranked lists), navigation (drill-down destinations), and provider (filter by streaming service). You use the rowtype to pick the right cell layout, and each item’s type to render appropriately.
Rows APIs require an active profile session (start with
selectProfile()). See Sessions, Profiles & Sign Out for setup. Code snippets use TypeScript, Kotlin, and Swift tabs.How rows surface in your app
getRows()lists row shells on a page:id,title,pageId,type,createdAt. Rows are created on demand and the list is paginated (hasMore,nextPageToken).getRow()loads one row by id if you only need a single rail’s metadata.getRowItems()loads items for that row—also paginated. Every item includes atypediscriminator:media,navigation, orprovider.
row.type for the rail and each item’s type for the cell. Field names are spelled out under Row and Row item in Type reference—Media, Navigation, Provider—and the same JSON is returned by getRow(), getRowItems(), and Get items in a row.
media rows
Classic horizontal title rails: items are type: "media" with poster/backdrop URLs and media_type (movie or tv). Use the same cell layout you would for any browse strip.

top_n rows
Visually, treat top_n like media: items are still media-shaped (same fields as media items). Discovr uses the separate top_n row type to signal editorial “top‑N” style rails versus generic media mixes—useful if you want different labels, ordering emphasis, or analytics. If you only need one poster rail renderer, media and top_n can share it—the only extra signal is type: "top_n" on the enclosing Row.

navigation rows
Navigation rows surface destination pages: each item is type: "navigation" and carries page_id for where to push next (stack depth lives in Pages overview). Optional vertical_path / horizontal_path back tile artwork.

provider rows
Provider rails list streaming services: each type: "provider" tile exposes paths (square logo URLs keyed roughly by size—"60", "100", …) and a page_id for that provider hub. After a tap, load that page with getPage() / getRows().

Load rows and items
After you have apageId (from createPage() or a page_id on an item), fetch row metadata, then items for the rails you render.
Related reading
- Pages overview — hero + rows, tabs, stack navigation and depth
- Media details — after a
media/top_ntap: catalog, images, seasons, similar - Profile context — lists, playback, scrobbling (not row types)—see after you wire tiles
- Error handling — session refresh and
SESSION_EXPIRED - Type reference —
Row, Row item wire fields (media / navigation / provider) - SDK:
getRows()·getRow()·getRowItems() - HTTP: Get rows for a page · Get a row · Get items in a row



