Adapter: Trakt

Trakt adapter lets CrossWatch sync with Trakt. It supports watchlist, ratings, and history.

circle-info

Connect Trakt first. Use: Trakt (Authentication provider).

What it supports

  • Direction: source or target in a pair (one-way or two-way)

  • Features:

    • Watchlist

    • Ratings (1–10)

    • History (plays with watched_at)

    • Playlists (not supported)

  • Indexing: present-state snapshot (reads “what exists now”)

  • IDs: trakt, imdb, tmdb, tvdb, and sometimes slug

Watchlist behavior

  • Read: /sync/watchlist

  • Write: add/remove watchlist entries

Ratings behavior

  • Read: ratings for movies/shows/seasons/episodes

  • Write: upsert and remove ratings

circle-exclamation

History behavior

  • Read: movie and episode play history

  • Write:

    • Add = scrobble with watched_at

    • Remove = remove plays (“unscrobble”)

Multiple plays are supported by sending multiple distinct watched_at timestamps.

History options (advanced)

chevron-rightOptions under Pair → History → Advancedhashtag

Add collections to Trakt

  • When syncing history to Trakt, also writes collection membership.

  • This can increase write volume on large libraries.

Number Fallback

  • If episode IDs are missing but you have show IDs + season/episode numbers, CrossWatch posts using the shows → seasons → episodes payload.

Settings and state (advanced)

chevron-rightEndpoints usedhashtag

Watchlist:

  • GET /sync/watchlist

  • POST /sync/watchlist

  • POST /sync/watchlist/remove

Ratings:

  • GET /sync/ratings/{movies|shows|seasons|episodes}

  • POST /sync/ratings

  • POST /sync/ratings/remove

History:

  • GET /sync/history/{movies|episodes}

  • POST /sync/history

  • POST /sync/history/remove

chevron-rightLocal cache and unresolved fileshashtag

Stored under /config/.cw_state/.

  • Watchlist ETag/shadow: trakt_watchlist.shadow.json

  • Watchlist unresolved: trakt_watchlist.unresolved.json

  • Ratings index cache: trakt_ratings.index.json

  • History unresolved: trakt_history.unresolved.json

Diagnostics

  • Logs are prefixed with [TRAKT:watchlist], [TRAKT:ratings], [TRAKT:history].

  • Requests use retries with exponential backoff.

  • Trakt rate-limit headers (X-RateLimit-*) are honored.

  • OAuth tokens are refreshed automatically when needed.

Last updated