Sync guide β full walkthrough
Two-phase model end-to-end β Phase 1 sequential pull, Phase 2
/sync/activities + date_from delta loop, deletion reconciliation, when to actually run sync, useful query params, and a Node + Python reference implementation.Common request parameters
Every Sync endpoint shares the same auth + identification surface. See Headers and required parameters for the full reference.Supported ID keys
Every Sync write endpoint matches items by theids object. See the full key list (with types and examples) in Standard media objects β Supported ID keys.
Anime works under either
shows[] or anime[]. All Sync write endpoints accept movies[], shows[], anime[], and episodes[] as top-level arrays. Anime entries are resolved by ids regardless of which wrapper you use β match the field to your data type when known, fall back to shows[] when you only have TMDB / TVDB IDs. Caveat: not_found.shows carries any unresolved anime entries too (no separate not_found.anime bucket). See Anime in shows[] or anime[].Endpoints
Activities
GET /sync/activities β last-modified timestamps per category. The βis anything new?β gate.All items
GET /sync/all-items/{type}/{status} β both segments optional. Library reads (full or delta).Add to history
POST /sync/history β mark items watched.Remove history
POST /sync/history/remove β un-mark watched.Add to watchlist
POST /sync/add-to-list β move between watchlist statuses.Mark watched
POST /sync/watched β bulk legacy βwatchedβ write.Rate items
POST /sync/ratings β 1β10 user rating per item.Remove ratings
POST /sync/ratings/remove β clear user-set ratings.Filter ratings
GET /sync/ratings/{type}/{rating} β list rated items filtered by type and one or more rating values.Get playbacks
GET /sync/playback β list saved paused playbacks (optionally narrow with /{type} where {type} is episodes or movies).Delete playback
DELETE /sync/playback/{id} β clear a single saved session.