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
| Method | Path | Purpose |
|---|---|---|
| GET | /catalog/titles | List available titles with filtering and pagination. |
| GET | /catalog/titles/{title_id} | Title detail with rights availability. |
| GET | /catalog/titles/{title_id}/episodes | Episodes for a title. |
List titles
Filters
| Query | Type | Notes |
|---|---|---|
genre | string | Filter by genre |
territory | string | ISO 3166-1 alpha-2 |
language | string | ISO 639-1 |
format | string | For example: series, film |
resale_allowed | boolean | Only titles that permit resale |
exclusive_available | boolean | Only titles with exclusivity available |
page | integer | Default 1, minimum 1 |
limit | integer | Default 20, maximum 100 |
cursor | string | Opaque 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)
| Field | Meaning |
|---|---|
available_territories / available_languages | Territories and audiences available for licensing |
resale_allowed, exclusive_available | Commercial options |
rights_status | clear or restricted |
risk_level | Rights-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).