API workflows
Use these sequences as integration shapes. Read the live OpenAPI document for the exact request and response fields on your Server version.
Browse and search
- Call
GET /api/v1to discover the API. - Call
GET /api/v1/librarywithlimit,offset,sort, and an optionalqorview. - Follow an item identifier with
GET /api/v1/items/{id}. - Use the returned item type to choose the next action.
Keep pagination bounded. Do not assume that every Profile sees the same items or fields.
Start playback
- Call
GET /api/v1/items/{id}/playbackwith the client video codecs when known. - Read the returned playback plan and policy decision.
- Use the media path returned by the Server. Keep media requests on the household Server.
- Send playback events only when the integration owns a playback session.
Kinosail prefers the original media representation when the source and client support it. A compatible representation is available only when policy and Server capacity allow it. Do not assume that every item has an HLS URL or that every Viewer may transcode.
Track personal state
Use the same token for the Profile whose state the integration represents:
PUT /api/v1/items/{id}/progresssaves viewing progress;DELETE /api/v1/items/{id}/continue-watchingdismisses a shelf item;PUT /api/v1/items/{id}/listchanges My List; andGET /api/v1/historyreads that Profile’s history.
Do not use an Owner token for shared automation unless the automation truly acts as the Owner.
Work with playlists and collections
- Call
GET /api/v1/playlistsorGET /api/v1/collections. - Create or select a named list.
- Add or remove items with the named resource route.
- Read the resource again after a mutation if the integration needs the canonical result.
Use the resource name and item identifier returned by the Server. Do not build names from filesystem paths.
Prepare an offline download
- Confirm that the authenticated Profile permits downloads.
- Call
POST /api/v1/items/{id}/downloads. - Poll
GET /api/v1/downloads/{id}until the Server reports a terminal state. - Retrieve the file with
GET /api/v1/downloads/{id}/file. - Delete the download with
DELETE /api/v1/downloads/{id}when it is no longer needed.
Treat downloads as Profile-bound. Do not copy a download URL between Profiles or expose it in logs.
Build an Owner integration
Use an Owner-scoped key only for tasks such as configuration, Profile management, library management, diagnostics, or backups. Keep Owner integrations separate from Viewer automations.
If a task changes Server configuration, prefer the Owner guide and configuration reference. The API still enforces managed settings, required fields, cross-field rules, and restart behavior.
Protect media and credentials
Kinosail sends Library Content directly between the device and the household Server. A third-party integration should proxy neither media nor playback tokens.
Use HTTPS for remote access. Store tokens in a secret manager. Redact authorization headers, cookies, playback URLs, Media Share tokens, and private Server addresses from logs and support reports.
For exact routes, schemas, and security requirements, use the API reference.