playback:write scope. A stop that resolves as watched and creates history also requires history:write.
Supported actions
Send these actions to:startpauseresumestopprogress
Minimum payload shape
At a minimum, send enough identity to resolve the title reliably.Supported payload fields
Movie example
Episode example
Event ordering behavior
PunchPlay applies session-aware event handling so clients can send real playback events without manually reconstructing user state. Important behaviors:- Duplicate
event_idvalues are deduped. - A
stopmay create a completed watch or only save progress, depending on completion state. - Older events that arrive after a stop are ignored.
- Newer progress after a stopped session can reopen the session.
pauseupdates state without creating a watch.
Best practices
- Always send a stable
playback_session_id. - Send
event_created_atfrom the client, not the server, when possible. - Send
tmdb_idwhenever available. - Include
position_secondsandduration_secondsfor accurate progress. - Treat
event_idas required if your client can generate one.
Completion rules
Astop event is treated as watched when one of these is true:
watchedis explicitlytrueprogressor derived progress meetswatched_threshold
history:write. Request that scope during authorization for clients that are allowed to create completed watch history.
Failure handling
Platform playback errors include:request_idin the JSON bodyX-PunchPlay-Request-Idin the response headers