Trakt Sync API

History, watchlist, ratings, favorites, collection, playback progress.

Operations 20

GET /sync/last_activities Get Last Activity #
GET /sync/playback Get Playback Progress #
DELETE /sync/playback/{id} Remove A Playback Item #
GET /sync/collection/movies Get Movie Collection #
GET /sync/collection/shows Get Show Collection #
POST /sync/collection Add Items To Collection #
POST /sync/collection/remove Remove Items From Collection #
GET /sync/watched/movies Get Watched Movies #
GET /sync/watched/shows Get Watched Shows #
GET /sync/history Get Watched History #
POST /sync/history Add Items To Watched History #
POST /sync/history/remove Remove Items From History #
POST /sync/ratings Add New Ratings #
POST /sync/ratings/remove Remove Ratings #
GET /sync/watchlist Get Watchlist #
POST /sync/watchlist Add Items To Watchlist #
POST /sync/watchlist/remove Remove Items From Watchlist #
GET /sync/favorites Get Favorites #
POST /sync/favorites Add Items To Favorites #
POST /sync/favorites/remove Remove Items From Favorites #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/trakt-sync-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

trakt-sync-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Trakt Sync API
  description: 'The Trakt API is a RESTful API for integrating TV show and movie tracking

    features into applications.'
  version: '2.0'
  contact:
    name: Trakt API Support
    url: https://forums.trakt.tv
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://api.trakt.tv
  description: Production
- url: https://api-staging.trakt.tv
  description: Staging
security:
- bearerAuth: []
tags:
- name: Sync
  description: History, watchlist, ratings, favorites, collection, playback progress.
paths:
  /sync/last_activities:
    get:
      tags:
      - Sync
      operationId: getLastActivities
      summary: Get Last Activity
      description: Returns timestamps for the last activity of each Sync resource, so apps can determine what to refresh.
      responses:
        '200':
          description: Last activities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LastActivities'
  /sync/playback:
    get:
      tags:
      - Sync
      operationId: getPlaybackProgress
      summary: Get Playback Progress
      description: Returns paused and unfinished playback progress for the authenticated user.
      responses:
        '200':
          description: Playback progress.
  /sync/playback/{id}:
    delete:
      tags:
      - Sync
      operationId: removePlaybackItem
      summary: Remove A Playback Item
      description: Remove a playback item from a user's playback progress list.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Removed.
  /sync/collection/movies:
    get:
      tags:
      - Sync
      operationId: getCollectionMovies
      summary: Get Movie Collection
      description: Returns movies in the authenticated user collection.
      responses:
        '200':
          description: Movie collection.
  /sync/collection/shows:
    get:
      tags:
      - Sync
      operationId: getCollectionShows
      summary: Get Show Collection
      description: Returns shows in the authenticated user collection, including collected seasons and episodes.
      responses:
        '200':
          description: Show collection.
  /sync/collection:
    post:
      tags:
      - Sync
      operationId: addToCollection
      summary: Add Items To Collection
      description: Add items to a user's collection. Accepts movies, shows, seasons, episodes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '201':
          description: Added.
  /sync/collection/remove:
    post:
      tags:
      - Sync
      operationId: removeFromCollection
      summary: Remove Items From Collection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: Removed.
  /sync/watched/movies:
    get:
      tags:
      - Sync
      operationId: getWatchedMovies
      summary: Get Watched Movies
      description: Returns all movies a user has watched, sorted by most plays.
      responses:
        '200':
          description: Watched movies.
  /sync/watched/shows:
    get:
      tags:
      - Sync
      operationId: getWatchedShows
      summary: Get Watched Shows
      description: Returns all shows a user has watched, sorted by most plays.
      responses:
        '200':
          description: Watched shows.
  /sync/history:
    get:
      tags:
      - Sync
      operationId: getWatchedHistory
      summary: Get Watched History
      description: Returns movies and episodes that a user has watched, sorted by most recent.
      parameters:
      - name: type
        in: query
        schema:
          type: string
          enum:
          - movies
          - shows
          - seasons
          - episodes
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: History entries.
    post:
      tags:
      - Sync
      operationId: addToHistory
      summary: Add Items To Watched History
      description: Add items to a user's watch history.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: History add result.
  /sync/history/remove:
    post:
      tags:
      - Sync
      operationId: removeFromHistory
      summary: Remove Items From History
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: Removed.
  /sync/ratings:
    post:
      tags:
      - Sync
      operationId: addRatings
      summary: Add New Ratings
      description: Rate one or more items.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '201':
          description: Ratings added.
  /sync/ratings/remove:
    post:
      tags:
      - Sync
      operationId: removeRatings
      summary: Remove Ratings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: Ratings removed.
  /sync/watchlist:
    get:
      tags:
      - Sync
      operationId: getWatchlist
      summary: Get Watchlist
      description: Returns all items in a user's watchlist.
      responses:
        '200':
          description: Watchlist items.
    post:
      tags:
      - Sync
      operationId: addToWatchlist
      summary: Add Items To Watchlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '201':
          description: Watchlist add result.
  /sync/watchlist/remove:
    post:
      tags:
      - Sync
      operationId: removeFromWatchlist
      summary: Remove Items From Watchlist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: Removed.
  /sync/favorites:
    get:
      tags:
      - Sync
      operationId: getFavorites
      summary: Get Favorites
      responses:
        '200':
          description: Favorites items.
    post:
      tags:
      - Sync
      operationId: addToFavorites
      summary: Add Items To Favorites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '201':
          description: Favorites add result.
  /sync/favorites/remove:
    post:
      tags:
      - Sync
      operationId: removeFromFavorites
      summary: Remove Items From Favorites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkMediaRequest'
      responses:
        '200':
          description: Removed.
components:
  schemas:
    Ids:
      type: object
      properties:
        trakt:
          type: integer
        slug:
          type: string
        imdb:
          type: string
        tmdb:
          type: integer
        tvdb:
          type: integer
    LastActivities:
      type: object
      properties:
        all:
          type: string
          format: date-time
        movies:
          type: object
        episodes:
          type: object
        shows:
          type: object
        seasons:
          type: object
        comments:
          type: object
        lists:
          type: object
        watchlist:
          type: object
        favorites:
          type: object
        recommendations:
          type: object
    BulkMediaRequest:
      type: object
      properties:
        movies:
          type: array
          items:
            type: object
            properties:
              ids:
                $ref: '#/components/schemas/Ids'
              watched_at:
                type: string
                format: date-time
              rating:
                type: integer
                minimum: 1
                maximum: 10
        shows:
          type: array
          items:
            type: object
            properties:
              ids:
                $ref: '#/components/schemas/Ids'
        seasons:
          type: array
          items:
            type: object
        episodes:
          type: array
          items:
            type: object
            properties:
              ids:
                $ref: '#/components/schemas/Ids'
              watched_at:
                type: string
                format: date-time
        ids:
          type: array
          items:
            type: integer
  parameters:
    Page:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: Page number for pagination.
    Limit:
      name: limit
      in: query
      schema:
        type: integer
        minimum: 1
        default: 10
      description: Items per page.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth 2.0 access token from /oauth/token or /oauth/device/token. Send via Authorization header and required headers trakt-api-version (2) and trakt-api-key (client_id).