Catalog API

Browse NU titles and episodes visible to your organization. Requires catalog:read. The catalog returns only partner-visible titles backed by clear or restricted rights packages matching the requested territory and language.

Endpoints

MethodPathPurpose
GET/catalog/titlesList available titles with filtering and pagination.
GET/catalog/titles/{title_id}Title detail with rights availability.
GET/catalog/titles/{title_id}/episodesEpisodes for a title.

List titles

Filters

QueryTypeNotes
genrestringFilter by genre
territorystringISO 3166-1 alpha-2
languagestringISO 639-1
formatstringFor example: series, film
resale_allowedbooleanOnly titles that permit resale
exclusive_availablebooleanOnly titles with exclusivity available
pageintegerDefault 1, minimum 1
limitintegerDefault 20, maximum 100
cursorstringOpaque cursor; when supplied, page is ignored

Pagination

Both modes share the pagination envelope. Use page/limit for simple paging and follow next_cursor for stable forward iteration over large result sets. When cursor is supplied, page is ignored.

curl "https://signal-partners.newunivers.ai/v1/catalog/titles?territory=KR&genre=drama&limit=20" \
  -H "Authorization: Bearer nsp_live_xxx" \
  -H "X-NU-Partner-Id: org_acme"
{
  "data": [
    {
      "title_id": "ttl_abc",
      "slug": "signal-city",
      "title": "Signal City",
      "title_en": "Signal City",
      "format": "series",
      "genres": ["drama", "thriller"],
      "episode_count": 12,
      "avg_duration_sec": 3600,
      "available_territories": ["KR", "JP"],
      "available_languages": ["ko", "en"],
      "resale_allowed": true,
      "exclusive_available": false,
      "license_status": "available"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 87, "has_next": true, "next_cursor": "eyJpZCI6InR0bF9hYmMifQ" }
}

Follow the cursor:

curl "https://signal-partners.newunivers.ai/v1/catalog/titles?cursor=eyJpZCI6InR0bF9hYmMifQ&limit=20" \
  -H "Authorization: Bearer nsp_live_xxx" -H "X-NU-Partner-Id: org_acme"

Title detail

GET /catalog/titles/{title_id} returns summary fields plus logline, synopsis, original_language, and a rights object. If the title is not visible to your organization, it returns 404 resource_not_found.

Rights availability fields (rights)

FieldMeaning
available_territories / available_languagesTerritories and audiences available for licensing
resale_allowed, exclusive_availableCommercial options
rights_statusclear or restricted
risk_levelRights-risk indicator, lowercase; for example low or medium
{
  "data": {
    "title_id": "ttl_abc",
    "slug": "signal-city",
    "title": "Signal City",
    "title_en": "Signal City",
    "logline": "A detective decodes a city that talks back.",
    "synopsis": "...",
    "format": "series",
    "genres": ["drama", "thriller"],
    "episode_count": 12,
    "avg_duration_sec": 3600,
    "original_language": "ko",
    "rights": {
      "available_territories": ["KR", "JP"],
      "available_languages": ["ko", "en"],
      "resale_allowed": true,
      "exclusive_available": false,
      "rights_status": "clear",
      "risk_level": "low"
    }
  }
}

Episodes

curl "https://signal-partners.newunivers.ai/v1/catalog/titles/ttl_abc/episodes" \
  -H "Authorization: Bearer nsp_live_xxx" -H "X-NU-Partner-Id: org_acme"
{
  "data": [
    { "episode_id": "ep_001", "episode_no": 1, "name": "Pilot", "duration_sec": 3480, "free_preview": true }
  ]
}

Use title_id and episode_id to request a quote (License API) or a playback token (Playback API).