# PunchPlay - [Overview](https://docs.punchplay.tv/index.md): Build secure apps on top of PunchPlay's versioned platform and public APIs. - [Quickstart](https://docs.punchplay.tv/quickstart.md): Register a developer app, authorize a user, and send your first playback event. - [Authentication](https://docs.punchplay.tv/authentication.md): Implement PunchPlay auth for browser, native, desktop, and TV apps. - [Native App API](https://docs.punchplay.tv/native-app-api.md): Build the core PunchPlay movie and TV experience for iOS, Android, desktop, or TV. - [Playback API](https://docs.punchplay.tv/playback-api.md): Send playback lifecycle events into PunchPlay and keep user state in sync. - [Live Events](https://docs.punchplay.tv/live-events.md): Read Continue Watching, now-playing state, in-progress items, and server-sent playback updates. - [Partner Sync](https://docs.punchplay.tv/partner-sync.md): Mirror a PunchPlay account and write back in bulk, without polling the library endpoints. - [Data Conventions](https://docs.punchplay.tv/data-conventions.md): Field names, timestamps, identifiers, progress units, nulls, and pagination used by PunchPlay APIs. - [Android & TV Integration](https://docs.punchplay.tv/kotlin-integration.md): Build a Kotlin client against the PunchPlay platform API, with device authorization, token refresh, and library sync. - [Public API](https://docs.punchplay.tv/public-api.md): Read public PunchPlay profile data without authentication. - [Errors & Rate Limits](https://docs.punchplay.tv/errors-rate-limits.md): Understand PunchPlay's current developer-facing failure modes and request limits. - [Changelog](https://docs.punchplay.tv/changelog.md): Track externally visible changes to PunchPlay's developer platform. - [Start device authorization](https://docs.punchplay.tv/api-reference/authentication/start-device-authorization.md) - [Exchange an approved device code](https://docs.punchplay.tv/api-reference/authentication/exchange-an-approved-device-code.md) - [Refresh a device-flow token](https://docs.punchplay.tv/api-reference/authentication/refresh-a-device-flow-token.md) - [Show the OAuth consent screen](https://docs.punchplay.tv/api-reference/authentication/show-the-oauth-consent-screen.md) - [Exchange an authorization code or refresh token](https://docs.punchplay.tv/api-reference/authentication/exchange-an-authorization-code-or-refresh-token.md) - [Revoke an access or refresh token](https://docs.punchplay.tv/api-reference/authentication/revoke-an-access-or-refresh-token.md) - [Get the authenticated user and granted scopes](https://docs.punchplay.tv/api-reference/profile/get-the-authenticated-user-and-granted-scopes.md) - [Get editable profile details](https://docs.punchplay.tv/api-reference/profile/get-editable-profile-details.md) - [Update profile details](https://docs.punchplay.tv/api-reference/profile/update-profile-details.md) - [Get display and regional preferences](https://docs.punchplay.tv/api-reference/profile/get-display-and-regional-preferences.md) - [Update display and regional preferences](https://docs.punchplay.tv/api-reference/profile/update-display-and-regional-preferences.md) - [Get the user's community statistics and weekly challenges](https://docs.punchplay.tv/api-reference/community/get-the-users-community-statistics-and-weekly-challenges.md) - [Claim completed weekly challenge rewards idempotently](https://docs.punchplay.tv/api-reference/community/claim-completed-weekly-challenge-rewards-idempotently.md) - [Get cursor-paginated notifications](https://docs.punchplay.tv/api-reference/notifications/get-cursor-paginated-notifications.md) - [Get the unread notification count](https://docs.punchplay.tv/api-reference/notifications/get-the-unread-notification-count.md) - [Mark one notification, or all notifications, as read](https://docs.punchplay.tv/api-reference/notifications/mark-one-notification-or-all-notifications-as-read.md) - [Get push notification preferences](https://docs.punchplay.tv/api-reference/notifications/get-push-notification-preferences.md) - [Update push notification preferences](https://docs.punchplay.tv/api-reference/notifications/update-push-notification-preferences.md) - [Get trophy progress and earned totals](https://docs.punchplay.tv/api-reference/trophies/get-trophy-progress-and-earned-totals.md) - [Get upcoming releases for the user's saved titles](https://docs.punchplay.tv/api-reference/calendar/get-upcoming-releases-for-the-users-saved-titles.md) - [Get cursor-paginated watch history](https://docs.punchplay.tv/api-reference/history/get-cursor-paginated-watch-history.md) - [Delete a history entry](https://docs.punchplay.tv/api-reference/history/delete-a-history-entry.md) - [Change a history entry's watched time](https://docs.punchplay.tv/api-reference/history/change-a-history-entrys-watched-time.md) - [Log a movie watch](https://docs.punchplay.tv/api-reference/history/log-a-movie-watch.md) - [Delete matching history for a title](https://docs.punchplay.tv/api-reference/history/delete-matching-history-for-a-title.md) - [Log multiple episode watches for a season](https://docs.punchplay.tv/api-reference/history/log-multiple-episode-watches-for-a-season.md) - [Delete matching episode history for a season](https://docs.punchplay.tv/api-reference/history/delete-matching-episode-history-for-a-season.md) - [Get ordered account changes and deletion tombstones](https://docs.punchplay.tv/api-reference/sync/get-ordered-account-changes-and-deletion-tombstones.md): Omit cursor to begin a new sync. A resetRequired response supplies the high-water cursor to retain while the client downloads resource snapshots. Cursors expire after 90 days. - [Page through the current state of one sync resource](https://docs.punchplay.tv/api-reference/sync/page-through-the-current-state-of-one-sync-resource.md) - [Idempotently insert up to 100 history items](https://docs.punchplay.tv/api-reference/sync/idempotently-insert-up-to-100-history-items.md) - [Idempotently update up to 100 ratings or title interactions](https://docs.punchplay.tv/api-reference/sync/idempotently-update-up-to-100-ratings-or-title-interactions.md) - [Idempotently add or remove up to 100 watchlist items](https://docs.punchplay.tv/api-reference/sync/idempotently-add-or-remove-up-to-100-watchlist-items.md) - [Get title metadata and scope-dependent user state](https://docs.punchplay.tv/api-reference/titles/get-title-metadata-and-scope-dependent-user-state.md): Private fields are returned only when the token also has ratings:read, history:read, lists:read, or collection:read. - [Get a show's season and episodes](https://docs.punchplay.tv/api-reference/titles/get-a-shows-season-and-episodes.md) - [Get episode metadata](https://docs.punchplay.tv/api-reference/titles/get-episode-metadata.md) - [Rate, favourite, plan, or set watch status](https://docs.punchplay.tv/api-reference/ratings/rate-favourite-plan-or-set-watch-status.md) - [Get the user's ratings](https://docs.punchplay.tv/api-reference/ratings/get-the-users-ratings.md) - [Get the user's favourites](https://docs.punchplay.tv/api-reference/ratings/get-the-users-favourites.md) - [Get the user's planning and show statuses](https://docs.punchplay.tv/api-reference/ratings/get-the-users-planning-and-show-statuses.md) - [Get the user's cursor-paginated list summaries](https://docs.punchplay.tv/api-reference/lists/get-the-users-cursor-paginated-list-summaries.md): externalSource is non-null for externally managed lists. Those lists, and dynamic-list items, are read-only through write operations. - [Create a list](https://docs.punchplay.tv/api-reference/lists/create-a-list.md) - [Get list details](https://docs.punchplay.tv/api-reference/lists/get-list-details.md) - [Delete a list](https://docs.punchplay.tv/api-reference/lists/delete-a-list.md): Only the owner can delete a list. Watchlists cannot be deleted. - [Update a list](https://docs.punchplay.tv/api-reference/lists/update-a-list.md): Only the owner can update an ordinary or dynamic list. Watchlists and externally managed lists cannot be updated. - [Get a dynamic list's paginated items](https://docs.punchplay.tv/api-reference/lists/get-a-dynamic-lists-paginated-items.md) - [Add an item to a list](https://docs.punchplay.tv/api-reference/lists/add-an-item-to-a-list.md): Owners and collaborators can add items to ordinary lists and watchlists. Externally managed and dynamic lists reject manual item changes. - [Remove an item from a list](https://docs.punchplay.tv/api-reference/lists/remove-an-item-from-a-list.md): Owners and collaborators can remove items from ordinary lists and watchlists. Externally managed and dynamic lists reject manual item changes. - [Get the user's cursor-paginated collection](https://docs.punchplay.tv/api-reference/collection/get-the-users-cursor-paginated-collection.md) - [Add a title to the collection](https://docs.punchplay.tv/api-reference/collection/add-a-title-to-the-collection.md) - [Remove a collection item](https://docs.punchplay.tv/api-reference/collection/remove-a-collection-item.md) - [Get continue-watching shows](https://docs.punchplay.tv/api-reference/playback/get-continue-watching-shows.md) - [Get continue-watching details for a show](https://docs.punchplay.tv/api-reference/playback/get-continue-watching-details-for-a-show.md) - [Get resumable playback items](https://docs.punchplay.tv/api-reference/playback/get-resumable-playback-items.md) - [Dismiss an in-progress item](https://docs.punchplay.tv/api-reference/playback/dismiss-an-in-progress-item.md) - [Get the most recent active playback item](https://docs.punchplay.tv/api-reference/playback/get-the-most-recent-active-playback-item.md) - [Stream playback changes with server-sent events](https://docs.punchplay.tv/api-reference/playback/stream-playback-changes-with-server-sent-events.md) - [Send a playback lifecycle or progress update](https://docs.punchplay.tv/api-reference/playback/send-a-playback-lifecycle-or-progress-update.md): An incomplete stop creates inactive resumable progress even when no preceding live session exists. Newer snapshots may reuse the same playback_session_id but must use a unique event_id and a later event_created_at. A standalone pause without an active session returns 409. A watched stop additionally… - [Discover movies, shows, or anime](https://docs.punchplay.tv/api-reference/public-catalog/discover-movies-shows-or-anime.md) - [Search movies, shows, or anime](https://docs.punchplay.tv/api-reference/public-catalog/search-movies-shows-or-anime.md) - [Get trending movies, shows, or anime](https://docs.punchplay.tv/api-reference/public-catalog/get-trending-movies-shows-or-anime.md) - [Get the public community overview](https://docs.punchplay.tv/api-reference/public-api/get-the-public-community-overview.md) - [Get public API health](https://docs.punchplay.tv/api-reference/public-api/get-public-api-health.md) - [Get a public user profile payload](https://docs.punchplay.tv/api-reference/public-users/get-a-public-user-profile-payload.md) ## OpenAPI Specs - [openapi](/openapi.yaml)