List titles
Two ways to page. Without page, rows come newest-updated first and nextCursor continues the walk — use this for sync: stop when a row's updatedAt is older than your last run. With page, you get total and totalPages and may sort. Episodes and seasons that arrived from a connected platform sit under their series and are listed only when you ask for their type.
Scope: library:read
apiKeyAuthorizationBearer <ik_live_…>An organisation API key from Settings → Organisation → API keys. Each operation names the one scope it needs — see https://developer.ingenee.ai/docs/authentication.
cursor?stringThe nextCursor from the previous response (cursor mode).
limit?integerRows per call in cursor mode (default 20, max 200).
page?integerPage number, from 1.
pageSize?integerItems per page (max 200).
sort?stringPage mode only: title | year | runtime | updated | added.
dir?stringasc | desc (default desc).
q?stringMatches title text or any external id.
type?stringmovie | series | episode | season | short | song | web.
status?stringEnrichment status: pending | enriching | enriched | partial | error.
catalogId?stringOnly titles in this catalog; none for titles in no catalog.
ids?stringComma-separated title ids (max 100).
source?stringstudio | feed — where the title came from.
year?integerExact release year.
rating?stringComma-separated content ratings.
hasPoster?booleantrue for titles with a poster.
OK
application/json- response
[key: string]?anycurl -X GET 'https://dev.app.ingenee.ai/api/v1/titles'{ "rows": [ { "id": "1b478b6a-7721-4a94-aade-55c5658f259c", "type": "movie", "title": "E2E source video fixture", "status": "partial", "stateLabel": "Review", "year": null, "runtimeMinutes": null, "runtimeHms": null, "claimedRuntimeMin": null, "contentRuntimeMin": null, "contentRating": null, "language": null, "posterUrl": null, "genres": [], "confidence": 0.9, "matchConfidence": null, "matchNote": null, "catalog": { "id": "5eb30874-f069-484d-a913-65fec170f485", "name": "pasted-list" }, "fromStudio": false, "rotation": [ { "tier": "off", "label": "Off rotation" } ], "offRotation": false, "blocker": null, "updatedAt": "2026-10-30T08:34:44.278Z", "createdAt": "2026-10-29T10:06:44.936Z" }, { "id": "882d87f3-d336-4993-b0d1-96334aee8b19", "type": "movie", "title": "E2E no video fixture", "status": "partial", "stateLabel": "Review", "year": null, "runtimeMinutes": null, "runtimeHms": null, "claimedRuntimeMin": null, "contentRuntimeMin": null, "contentRating": null, "language": null, "posterUrl": null, "genres": [], "confidence": 0.95, "matchConfidence": null, "matchNote": null, "catalog": { "id": "5eb30874-f069-484d-a913-65fec170f485", "name": "pasted-list" }, "fromStudio": false, "rotation": [ { "tier": "off", "label": "Off rotation" } ], "offRotation": false, "blocker": null, "updatedAt": "2026-10-29T10:06:50.482Z", "createdAt": "2026-10-29T10:06:50.406Z" } ], "nextCursor": "eyJ1cGRhdGVkQXQiOiIyMDI2LTEwLTE1VDExOjQ1OjE3LjczNFoiLCJpZCI6IjhjNTVhZTVkLWEyMjctNGVlYS1hYWI5LTMwN2RjZmFhOGRhYiJ9"}