Skip to main content

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.

Create a new page for the profile bound to your session token (profileId is a JWT claim, not request body). Pages with identical filters within the same session are deduplicated (deterministic page id). A page represents a collection of rows (media recommendations) based on optional filters.

Parameters

NameTypeRequiredDescription
pageFiltersFilterSpecNo
namestringNoOptional human-readable name for the page. When provided, the page can be identified by this name in subsequent GET /pages/:id responses.
{
  "genres": ["integer"],
  "keywords": ["integer"],
  "media_type": "movie" /* enum: "movie", "tv", "all" */,
  "region": ["string"],
  "with_runtime_gte": 0,
  "with_runtime_lte": 0,
  "with_release_date_gte": "string" /* date */,
  "with_release_date_lte": "string" /* date */,
  "with_watch_providers": ["string"]
}

Returns

CreatePageResponse — Page created successfully
{
  "id": "string",
  "createdAt": "string" /* date-time */,
  "pageFilters": {
  "genres": ["integer"],
  "keywords": ["integer"],
  "media_type": "movie" /* enum: "movie", "tv", "all" */,
  "region": ["string"],
  "with_runtime_gte": 0,
  "with_runtime_lte": 0,
  "with_release_date_gte": "string" /* date */,
  "with_release_date_lte": "string" /* date */,
  "with_watch_providers": ["string"]
}
}

Example

import { DiscovrClient } from "discovr";
import type { CreatePagePayload, CreatePageResponse, FilterSpec } from "discovr";

const discovr = new DiscovrClient("your-client-id", {
  basePath: "https://api.discovr.media",
});

// After sign-in and profile selection …
const response: CreatePageResponse = await discovr.createPage({ pageFilters: { "media_type": "movie" }, name: "a" });
console.log(response);