Search Link: https://www.apis.guru.com

Overview

GET /calendars/all/dvd/{start_date}/{days}

Summary: Get DVD releases

✨ Extended Info 🎚 Filters

Returns all movies with a DVD release date during the time period specified.


GET /calendars/all/movies/{start_date}/{days}

Summary: Get movies

✨ Extended Info 🎚 Filters

Returns all movies with a release date during the time period specified.


GET /calendars/all/shows/new/{start_date}/{days}

Summary: Get new shows

✨ Extended Info 🎚 Filters

Returns all new show premieres (season 1, episode 1) airing during the time period specified.


GET /calendars/all/shows/premieres/{start_date}/{days}

Summary: Get season premieres

✨ Extended Info 🎚 Filters

Returns all show premieres (any season, episode 1) airing during the time period specified.


GET /calendars/all/shows/{start_date}/{days}

Summary: Get shows

✨ Extended Info 🎚 Filters

Returns all shows airing during the time period specified.


GET /calendars/my/dvd/{start_date}/{days}

Summary: Get DVD releases

πŸ”’ OAuth Required ✨ Extended Info 🎚 Filters

Returns all movies with a DVD release date during the time period specified.


GET /calendars/my/movies/{start_date}/{days}

Summary: Get movies

πŸ”’ OAuth Required ✨ Extended Info 🎚 Filters

Returns all movies with a release date during the time period specified.


GET /calendars/my/shows/new/{start_date}/{days}

Summary: Get new shows

πŸ”’ OAuth Required ✨ Extended Info 🎚 Filters

Returns all new show premieres (season 1, episode 1) airing during the time period specified.


GET /calendars/my/shows/premieres/{start_date}/{days}

Summary: Get season premieres

πŸ”’ OAuth Required ✨ Extended Info 🎚 Filters

Returns all show premieres (any season, episode 1) airing during the time period specified.


GET /calendars/my/shows/{start_date}/{days}

Summary: Get shows

πŸ”’ OAuth Required ✨ Extended Info 🎚 Filters

Returns all shows airing during the time period specified.


GET /certifications/{type}

Summary: Get certifications

Get a list of all certifications, including names, slugs, and descriptions.


DELETE /checkin

Summary: Delete any active checkins

πŸ”’ OAuth Required

Removes any active checkins, no need to provide a specific item.


POST /checkin

Summary: Check into an item

πŸ”’ OAuth Required

Check into a movie or episode. This should be tied to a user action to manually indicate they are watching something. The item will display as watching on the site, then automatically switch to watched status once the duration has elapsed. A unique history id (64-bit integer) will be returned and can be used to reference this checkin directly.

JSON POST Data

KeyTypeValue
item *objectmovie or episode object. (see examples β†’)
sharingobjectControl sharing to any connected social networks. (see below ↓)
messagestringMessage used for sharing. If not sent, it will use the watching string in the user settings.
venue_idstringFoursquare venue ID.
venue_namestringFoursquare venue name.
app_versionstringVersion number of the app.
app_datestringBuild date of the app.

Sharing

The sharing object is optional and will apply the user’s settings if not sent. If sharing is sent, each key will override the user’s setting for that social network. Send true to post or false to not post on the indicated social network. You can see which social networks a user has connected with the /users/settings method.

KeyType
twitterboolean
tumblrboolean

Note: If a checkin is already in progress, a 409 HTTP status code will returned. The response will contain an expires_at timestamp which is when the user can check in again.


POST /comments

Summary: Post a comment

πŸ”’ OAuth Required 😁 Emojis

Add a new comment to a movie, show, season, episode, or list. Make sure to allow and encourage spoilers to be indicated in your app and follow the rules listed above.

JSON POST Data

KeyTypeDefaultValue
item *objectmovie, show, season, episode, or list object. (see examples β†’)
comment *stringText for the comment.
spoilerbooleanfalseIs this a spoiler?
sharingobjectControl sharing to any connected social networks. (see below ↓)

Sharing

The sharing object is optional and will apply the user’s settings if not sent. If sharing is sent, each key will override the user’s setting for that social network. Send true to post or false to not post on the indicated social network. You can see which social networks a user has connected with the /users/settings method.

KeyType
twitterboolean
tumblrboolean
mediumboolean

GET /comments/recent/{comment_type}/{type}

Summary: Get recently created comments

πŸ“„ Pagination ✨ Extended Info 😁 Emojis

Returns the most recently written comments across all of Trakt. You can optionally filter by the comment_type and media type to limit what gets returned. If you want to include_replies that will return replies in place alongside top level comments.


GET /comments/trending/{comment_type}/{type}

Summary: Get trending comments

πŸ“„ Pagination ✨ Extended Info 😁 Emojis

Returns all comments with the most likes and replies over the last 7 days. You can optionally filter by the comment_type and media type to limit what gets returned. If you want to include_replies that will return replies in place alongside top level comments.


GET /comments/updates/{comment_type}/{type}

Summary: Get recently updated comments

πŸ“„ Pagination ✨ Extended Info 😁 Emojis

Returns the most recently updated comments across all of Trakt. You can optionally filter by the comment_type and media type to limit what gets returned. If you want to include_replies that will return replies in place alongside top level comments.


DELETE /comments/{id}

Summary: Delete a comment or reply

πŸ”’ OAuth Required

Delete a single comment. The OAuth user must match the author of the comment in order to delete it. If not, a 401 HTTP status code is returned. The comment must also be less than 2 weeks old or have 0 replies. If not, a 409 HTTP status is returned.


GET /comments/{id}

Summary: Get a comment or reply

😁 Emojis

Returns a single comment and indicates how many replies it has. Use /comments/:id/replies to get the actual replies.


PUT /comments/{id}

Summary: Update a comment or reply

πŸ”’ OAuth Required 😁 Emojis

Update a single comment. The OAuth user must match the author of the comment in order to update it. If not, a 401 HTTP status is returned.

JSON POST Data

KeyTypeDefaultValue
commentstringText for the comment.
spoilerbooleanfalseIs this a spoiler?

GET /comments/{id}/item

Summary: Get the attached media item

✨ Extended Info

Returns the media item this comment is attached to. The media type can be movie, show, season, episode, or list and it also returns the standard media object for that media type.


DELETE /comments/{id}/like

Summary: Remove like on a comment

πŸ”’ OAuth Required

Remove a like on a comment.


POST /comments/{id}/like

Summary: Like a comment

πŸ”’ OAuth Required

Votes help determine popular comments. Only one like is allowed per comment per user.


GET /comments/{id}/likes

Summary: Get all users who liked a comment

πŸ“„ Pagination

Returns all users who liked a comment. If you only need the replies count, the main comment object already has that, so no need to use this method.


GET /comments/{id}/replies

Summary: Get replies for a comment

πŸ“„ Pagination 😁 Emojis

Returns all replies for a comment. It is possible these replies could have replies themselves, so in that case you would just call /comments/:id/replies again with the new comment id.


POST /comments/{id}/replies

Summary: Post a reply for a comment

πŸ”’ OAuth Required 😁 Emojis

Add a new reply to an existing comment. Make sure to allow and encourage spoilers to be indicated in your app and follow the rules listed above.

JSON POST Data

KeyTypeDefaultValue
comment *stringText for the reply.
spoilerbooleanfalseIs this a spoiler?

GET /countries/{type}

Summary: Get countries

Get a list of all countries, including names and codes.


GET /genres/{type}

Summary: Get genres

Get a list of all genres, including names and slugs.


GET /languages/{type}

Summary: Get languages

Get a list of all langauges, including names and codes.


GET /lists/popular

Summary: Get popular lists

πŸ“„ Pagination 😁 Emojis

Returns the most popular lists. Popularity is calculated using total number of likes and comments.


GET /lists/trending

Summary: Get trending lists

πŸ“„ Pagination 😁 Emojis

Returns all lists with the most likes and comments over the last 7 days.


GET /lists/{id}

Summary: Get list

😁 Emojis

Returns a single list. Use the /lists/:id/items method to get the actual items this list contains.

Note: You must use an integer id, and only public lists will return data.


GET /lists/{id}/comments/{sort}

Summary: Get all list comments

πŸ“„ Pagination 😁 Emojis

Returns all top level comments for a list. By default, the newest comments are returned first. Other sorting options include oldest, most likes, and most replies.


GET /lists/{id}/items/{type}

Summary: Get items on a list

πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

Get all items on a personal list. Items can be a movie, show, season, episode, or person. You can optionally specify the type parameter with a single value or comma delimited string for multiple item types.

Notes

Each list item contains a notes field with text entered by the user.

Sorting Headers

All list items are sorted by ascending rank. We also send X-Sort-By and X-Sort-How headers which can be used to custom sort the list in your app based on the user’s preference. Values for X-Sort-By include rank, added, title, released, runtime, popularity, percentage, votes, my_rating, random, watched, and collected. Values for X-Sort-How include asc and desc.


GET /lists/{id}/likes

Summary: Get all users who liked a list

πŸ“„ Pagination

Returns all users who liked a list.


GET /movies/anticipated

Summary: Get the most anticipated movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most anticipated movies based on the number of lists a movie appears on.


GET /movies/boxoffice

Summary: Get the weekend box office

✨ Extended Info

Returns the top 10 grossing movies in the U.S. box office last weekend. Updated every Monday morning.


GET /movies/collected/{period}

Summary: Get the most Collected movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most collected (unique users) movies in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /movies/played/{period}

Summary: Get the most played movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most played (a single user can watch multiple times) movies in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /movies/popular

Summary: Get popular movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most popular movies. Popularity is calculated using the rating percentage and the number of ratings.


GET /movies/recommended/{period}

Summary: Get the most recommended movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most recommended movies in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /movies/trending

Summary: Get trending movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns all movies being watched right now. Movies with the most users are returned first.


GET /movies/updates/id/{start_date}

Summary: Get recently updated movie Trakt IDs

πŸ“„ Pagination

Returns all movie Trakt IDs updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /movies/updates/{start_date}

Summary: Get recently updated movies

πŸ“„ Pagination ✨ Extended Info

Returns all movies updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /movies/watched/{period}

Summary: Get the most watched movies

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most watched (unique users) movies in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /movies/{id}

Summary: Get a movie

✨ Extended Info

Returns a single movie’s details.

Note: When getting full extended info, the status field can have a value of released, in production, post production, planned, rumored, or canceled.


GET /movies/{id}/aliases

Summary: Get all movie aliases

Returns all title aliases for a movie. Includes country where name is different.


GET /movies/{id}/comments/{sort}

Summary: Get all movie comments

πŸ“„ Pagination 😁 Emojis

Returns all top level comments for a movie. By default, the newest comments are returned first. Other sorting options include oldest, most likes, most replies, highest rated, lowest rated, and most plays.


GET /movies/{id}/lists/{type}/{sort}

Summary: Get lists containing this movie

πŸ“„ Pagination 😁 Emojis

Returns all lists that contain this movie. By default, personal lists are returned sorted by the most popular.


GET /movies/{id}/people

Summary: Get all people for a movie

✨ Extended Info

Returns all cast and crew for a movie. Each cast member will have a characters array and a standard person object.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, and editing (if there are people for those crew positions). Each of those members will have a jobs array and a standard person object.


GET /movies/{id}/ratings

Summary: Get movie ratings

Returns rating (between 0 and 10) and distribution for a movie.


GET /movies/{id}/related

Summary: Get related movies

πŸ“„ Pagination ✨ Extended Info

Returns related and similar movies.


GET /movies/{id}/releases/{country}

Summary: Get all movie releases

Returns all releases for a movie including country, certification, release date, release type, and note. The release type can be set to unknown, premiere, limited, theatrical, digital, physical, or tv. The note might have optional info such as the film festival name for a premiere release or Blu-ray specs for a physical release. We pull this info from TMDB.


GET /movies/{id}/stats

Summary: Get movie stats

Returns lots of movie stats.


GET /movies/{id}/studios

Summary: Get movie studios

Returns all studios for a movie.


GET /movies/{id}/translations/{language}

Summary: Get all movie translations

Returns all translations for a movie, including language and translated values for title, tagline and overview.


GET /movies/{id}/watching

Summary: Get users watching right now

✨ Extended Info

Returns all users watching this movie right now.


GET /networks

Summary: Get networks

Get a list of all TV networks, including the name.


GET /oauth/authorize

Summary: Authorize Application

Construct then redirect to this URL. The Trakt website will request permissions for your app, which the user needs to approve. If the user isn’t signed into Trakt, it will ask them to do so. Send signup=true if you prefer the account sign up page to be the default.

Note: You should use the normal https://trakt.tv hostname when creating this URL and not the API URL.


POST /oauth/device/code

Summary: Generate new device codes

Generate new codes to start the device authentication process. The device_code and interval will be used later to poll for the access_token. The user_code and verification_url should be presented to the user as mentioned in the flow steps above.

JSON POST Data

KeyTypeValue
client_id *stringGet this from your app settings.

POST /oauth/device/token

Summary: Poll for the access_token

Use the device_code and poll at the interval (in seconds) to check if the user has authorized you app. Use expires_in to stop polling after that many seconds, and gracefully instruct the user to restart the process. It is important to poll at the correct interval and also stop polling when expired.

When you receive a 200 success response, save the access_token so your app can authenticate the user in methods that require it. The access_token is valid for 3 months. Save and use the refresh_token to get a new access_token without asking the user to re-authenticate. Check below for all the error codes that you should handle.

JSON POST Data

KeyTypeValue
code *stringdevice_code from the initial method.
client_id *stringGet this from your app settings.
client_secret *stringGet this from your app settings.

Status Codes

This method will send various HTTP status codes that you should handle accordingly.

CodeDescription
200Success - save the access_token
400Pending - waiting for the user to authorize your app
404Not Found - invalid device_code
409Already Used - user already approved this code
410Expired - the tokens have expired, restart the process
418Denied - user explicitly denied this code
429Slow Down - your app is polling too quickly

POST /oauth/revoke

Summary: Revoke an access_token

An access_token can be revoked when a user signs out of their Trakt account in your app. This is not required, but might improve the user experience so the user doesn’t have an unused app connection hanging around.

JSON POST Data

KeyTypeValue
token *stringA valid OAuth access_token.
client_id *stringGet this from your app settings.
client_secret *stringGet this from your app settings.

POST /oauth/token

Summary: Exchange refresh_token for access_token

Use the refresh_token to get a new access_token without asking the user to re-authenticate. The access_token is valid for 3 months before it needs to be refreshed again.

JSON POST Data

KeyTypeValue
refresh_token *stringSaved from the initial token method.
client_id *stringGet this from your app settings.
client_secret *stringGet this from your app settings.
redirect_uri *stringURI specified in your app settings.
grant_type * stringrefresh_token

GET /people/updates/id/{start_date}

Summary: Get recently updated people Trakt IDs

πŸ“„ Pagination

Returns all people Trakt IDs updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /people/updates/{start_date}

Summary: Get recently updated people

πŸ“„ Pagination ✨ Extended Info

Returns all people updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /people/{id}

Summary: Get a single person

✨ Extended Info

Returns a single person’s details.

Gender

If available, the gender property will be set to male, female, or non_binary.

Known For Department

If available, the known_for_department property will be set to production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, or editing. Many people have credits across departments, known_for allows you to select their default credits more accurately.


GET /people/{id}/lists/{type}/{sort}

Summary: Get lists containing this person

πŸ“„ Pagination 😁 Emojis

Returns all lists that contain this person. By default, personal lists are returned sorted by the most popular.


GET /people/{id}/movies

Summary: Get movie credits

✨ Extended Info

Returns all movies where this person is in the cast or crew. Each cast object will have a characters array and a standard movie object.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, and editing (if there are people for those crew positions). Each of those members will have a jobs array and a standard movie object.


GET /people/{id}/shows

Summary: Get show credits

✨ Extended Info

Returns all shows where this person is in the cast or crew, including the episode_count for which they appear. Each cast object will have a characters array and a standard show object. If series_regular is true, this person is a series regular and not simply a guest star.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, editing, and created by (if there are people for those crew positions). Each of those members will have a jobs array and a standard show object.


GET /recommendations/movies

Summary: Get movie recommendations

πŸ”’ OAuth Required ✨ Extended Info

Movie recommendations for a user. By default, 10 results are returned. You can send a limit to get up to 100 results per page. Set ignore_collected=true to filter out movies the user has already collected or ignore_watchlisted=true to filter out movies the user has already watchlisted.


DELETE /recommendations/movies/{id}

Summary: Hide a movie recommendation

πŸ”’ OAuth Required

Hide a movie from getting recommended anymore.


GET /recommendations/shows

Summary: Get show recommendations

πŸ”’ OAuth Required ✨ Extended Info

TV show recommendations for a user. By default, 10 results are returned. You can send a limit to get up to 100 results per page. Set ignore_collected=true to filter out shows the user has already collected or ignore_watchlisted=true to filter out shows the user has already watchlisted.


DELETE /recommendations/shows/{id}

Summary: Hide a show recommendation

πŸ”’ OAuth Required

Hide a show from getting recommended anymore.


POST /scrobble/pause

Summary: Pause watching in a media center

πŸ”’ OAuth Required

Use this method when the video is paused. The playback progress will be saved and /sync/playback can be used to resume the video from this exact position. Unpause a video by calling the /scrobble/start method again.

JSON POST Data

KeyTypeValue
item *objectmovie or episode object. (see examples β†’)
progress *floatProgress percentage between 0 and 100.
app_versionstringVersion number of the app.
app_datestringBuild date of the app.

POST /scrobble/start

Summary: Start watching in a media center

πŸ”’ OAuth Required

Use this method when the video initially starts playing or is unpaused. This will remove any playback progress if it exists.

Note: A watching status will auto expire after the remaining runtime has elapsed. There is no need to call this method again while continuing to watch the same item.

JSON POST Data

KeyTypeValue
item *objectmovie or episode object. (see examples β†’)
progress *floatProgress percentage between 0 and 100.
app_versionstringVersion number of the app.
app_datestringBuild date of the app.

POST /scrobble/stop

Summary: Stop or finish watching in a media center

πŸ”’ OAuth Required

Use this method when the video is stopped or finishes playing on its own. If the progress is above 80%, the video will be scrobbled and the action will be set to scrobble. A unique history id (64-bit integer) will be returned and can be used to reference this scrobble directly.

If the progress is less than 80%, it will be treated as a pause and the action will be set to pause. The playback progress will be saved and /sync/playback can be used to resume the video from this exact position.

Note: If you prefer to use a threshold higher than 80%, you should use /scrobble/pause yourself so it doesn’t create duplicate scrobbles.

JSON POST Data

KeyTypeValue
item *objectmovie or episode object. (see examples β†’)
progress *flloatProgress percentage between 0 and 100.
app_versionstringVersion number of the app.
app_datestringBuild date of the app.

Note: If the same item was just scrobbled, a 409 HTTP status code will returned to avoid scrobbling a duplicate. The response will contain a watched_at timestamp when the item was last scrobbled and a expires_at timestamp when the item can be scrobbled again.


GET /search/{id_type}/{id}

Summary: Get ID lookup results

πŸ“„ Pagination ✨ Extended Info

Lookup items by their Trakt, IMDB, TMDB, or TVDB ID. If you use the search url without a type it might return multiple items if the id_type is not globally unique. Specify the type of results by sending a single value or a comma delimited string for multiple types.

TypeURL
trakt/search/trakt/:id
/search/trakt/:id?type=movie
/search/trakt/:id?type=show
/search/trakt/:id?type=episode
/search/trakt/:id?type=person
imdb/search/imdb/:id
tmdb/search/tmdb/:id
/search/tmdb/:id?type=movie
/search/tmdb/:id?type=show
/search/tmdb/:id?type=episode
/search/tmdb/:id?type=person
tvdb/search/tvdb/:id
/search/tvdb/:id?type=show
/search/tvdb/:id?type=episode

GET /search/{type}

Summary: Get text query results

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Search all text fields that a media object contains (i.e. title, overview, etc). Results are ordered by the most relevant score. Specify the type of results by sending a single value or a comma delimited string for multiple types.

Special Characters

Our search engine (Solr) gives the following characters special meaning when they appear in a query:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : /

To interpret any of these characters literally (and not as a special character), precede the character with a backslash \ character.

Search Fields

By default, all text fields are used to search for the query. You can optionally specify the fields parameter with a single value or comma delimited string for multiple fields. Each type has specific fields that can be specified. This can be useful if you want to support more strict searches (i.e. title only).

TypeField
movietitle
tagline
overview
people
translations
aliases
showtitle
overview
people
translations
aliases
episodetitle
overview
personname
biography
listname
description

GET /shows/anticipated

Summary: Get the most anticipated shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most anticipated shows based on the number of lists a show appears on.


GET /shows/collected/{period}

Summary: Get the most collected shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most collected (unique users) shows in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /shows/played/{period}

Summary: Get the most played shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most played (a single user can watch multiple episodes multiple times) shows in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /shows/popular

Summary: Get popular shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most popular shows. Popularity is calculated using the rating percentage and the number of ratings.


GET /shows/recommended/{period}

Summary: Get the most recommended shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most recommended shows in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /shows/trending

Summary: Get trending shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns all shows being watched right now. Shows with the most users are returned first.


GET /shows/updates/id/{start_date}

Summary: Get recently updated show Trakt IDs

πŸ“„ Pagination

Returns all show Trakt IDs updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /shows/updates/{start_date}

Summary: Get recently updated shows

πŸ“„ Pagination ✨ Extended Info

Returns all shows updated since the specified UTC date and time. We recommended storing the X-Start-Date header you can be efficient using this method moving forward. By default, 10 results are returned. You can send a limit to get up to 100 results per page.

Important! The start_date is only accurate to the hour, for caching purposes. Please drop the minutes and seconds from your timestamp to help optimize our cached data. For example, use 2021-07-17T12:00:00Z and not 2021-07-17T12:23:34Z.

Note: The start_date can only be a maximum of 30 days in the past.


GET /shows/watched/{period}

Summary: Get the most watched shows

πŸ“„ Pagination ✨ Extended Info 🎚 Filters

Returns the most watched (unique users) shows in the specified time period, defaulting to weekly. All stats are relative to the specific time period.


GET /shows/{id}

Summary: Get a single show

✨ Extended Info

Returns a single shows’s details. If you request extended info, the airs object is relative to the show’s country. You can use the day, time, and timezone to construct your own date then convert it to whatever timezone your user is in.

Note: When getting full extended info, the status field can have a value of returning series (airing right now), continuing (airing right now), in production (airing soon), planned (in development), upcoming (in development), pilot, canceled, or ended.


GET /shows/{id}/aliases

Summary: Get all show aliases

Returns all title aliases for a show. Includes country where name is different.


GET /shows/{id}/certifications

Summary: Get all show certifications

Returns all content certifications for a show, including the country.


GET /shows/{id}/comments/{sort}

Summary: Get all show comments

πŸ“„ Pagination 😁 Emojis

Returns all top level comments for a show. By default, the newest comments are returned first. Other sorting options include oldest, most likes, most replies, highest rated, lowest rated, most plays, and highest watched percentage.


GET /shows/{id}/last_episode

Summary: Get last episode

✨ Extended Info

Returns the most recently aired episode. If no episode is found, a 204 HTTP status code will be returned.


GET /shows/{id}/lists/{type}/{sort}

Summary: Get lists containing this show

πŸ“„ Pagination 😁 Emojis

Returns all lists that contain this show. By default, personal lists are returned sorted by the most popular.


GET /shows/{id}/next_episode

Summary: Get next episode

✨ Extended Info

Returns the next scheduled to air episode. If no episode is found, a 204 HTTP status code will be returned.


GET /shows/{id}/people

Summary: Get all people for a show

✨ Extended Info

Returns all cast and crew for a show, including the episode_count for which they appears. Each cast member will have a characters array and a standard person object.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, editing, and created by (if there are people for those crew positions). Each of those members will have a jobs array and a standard person object.

Guest Stars

If you add ?extended=guest_stars to the URL, it will return all guest stars that appeared in at least 1 episode of the show.

Note: This returns a lot of data, so please only use this extended parameter if you actually need it!


GET /shows/{id}/progress/collection

Summary: Get show collection progress

πŸ”’ OAuth Required

Returns collection progress for a show including details on all aired seasons and episodes. The next_episode will be the next episode the user should collect, if there are no upcoming episodes it will be set to null.

By default, any hidden seasons will be removed from the response and stats. To include these and adjust the completion stats, set the hidden flag to true.

By default, specials will be excluded from the response. Set the specials flag to true to include season 0 and adjust the stats accordingly. If you’d like to include specials, but not adjust the stats, set count_specials to false.

By default, the last_episode and next_episode are calculated using the last aired episode the user has collected, even if they’ve collected older episodes more recently. To use their last collected episode for these calculations, set the last_activity flag to collected.

Note: Only aired episodes are used to calculate progress. Episodes in the future or without an air date are ignored.


GET /shows/{id}/progress/watched

Summary: Get show watched progress

πŸ”’ OAuth Required

Returns watched progress for a show including details on all aired seasons and episodes. The next_episode will be the next episode the user should watch, if there are no upcoming episodes it will be set to null. If not null, the reset_at date is when the user started re-watching the show. Your app can adjust the progress by ignoring episodes with a last_watched_at prior to the reset_at.

By default, any hidden seasons will be removed from the response and stats. To include these and adjust the completion stats, set the hidden flag to true.

By default, specials will be excluded from the response. Set the specials flag to true to include season 0 and adjust the stats accordingly. If you’d like to include specials, but not adjust the stats, set count_specials to false.

By default, the last_episode and next_episode are calculated using the last aired episode the user has watched, even if they’ve watched older episodes more recently. To use their last watched episode for these calculations, set the last_activity flag to watched.

Note: Only aired episodes are used to calculate progress. Episodes in the future or without an air date are ignored.


DELETE /shows/{id}/progress/watched/reset

Summary: Undo reset show progress

πŸ”’ OAuth Required πŸ”₯ VIP Only

Undo the reset and have watched progress use all watched history for the show.


POST /shows/{id}/progress/watched/reset

Summary: Reset show progress

πŸ”’ OAuth Required πŸ”₯ VIP Only

Reset a show’s progress when the user started re-watching the show. You can optionally specify the reset_at date to have it calculate progress from that specific date onwards.


GET /shows/{id}/ratings

Summary: Get show ratings

Returns rating (between 0 and 10) and distribution for a show.


GET /shows/{id}/related

Summary: Get related shows

πŸ“„ Pagination ✨ Extended Info

Returns related and similar shows.


GET /shows/{id}/seasons

Summary: Get all seasons for a show

✨ Extended Info

Returns all seasons for a show including the number of episodes in each season.

Episodes

If you add ?extended=episodes to the URL, it will return all episodes for all seasons.

Note: This returns a lot of data, so please only use this extended parameter if you actually need it!


GET /shows/{id}/seasons/{season}

Summary: Get single season for a show

✨ Extended Info

Returns all episodes for a specific season of a show.

Translations

If you’d like to included translated episode titles and overviews in the response, include the translations parameter in the URL. Include all languages by setting the parameter to all or use a specific 2 digit country language code to further limit it.

Note: This returns a lot of data, so please only use this parameter if you actually need it!


GET /shows/{id}/seasons/{season}/comments/{sort}

Summary: Get all season comments

πŸ“„ Pagination 😁 Emojis

Returns all top level comments for a season. By default, the newest comments are returned first. Other sorting options include oldest, most likes, most replies, highest rated, lowest rated, most plays, and highest watched percentage.


GET /shows/{id}/seasons/{season}/episodes/{episode}

Summary: Get a single episode for a show

✨ Extended Info

Returns a single episode’s details. All date and times are in UTC and were calculated using the episode’s air_date and show’s country and air_time.

Note: If the first_aired is unknown, it will be set to null.


GET /shows/{id}/seasons/{season}/episodes/{episode}/comments/{sort}

Summary: Get all episode comments

πŸ“„ Pagination 😁 Emojis

Returns all top level comments for an episode. By default, the newest comments are returned first. Other sorting options include oldest, most likes, most replies, highest rated, lowest rated, and most plays.


GET /shows/{id}/seasons/{season}/episodes/{episode}/lists/{type}/{sort}

Summary: Get lists containing this episode

πŸ“„ Pagination 😁 Emojis

Returns all lists that contain this episode. By default, personal lists are returned sorted by the most popular.


GET /shows/{id}/seasons/{season}/episodes/{episode}/people

Summary: Get all people for an episode

✨ Extended Info

Returns all cast and crew for an episode. Each cast member will have a characters array and a standard person object.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, and editing (if there are people for those crew positions). Each of those members will have a jobs array and a standard person object.

Guest Stars

If you add ?extended=guest_stars to the URL, it will return all guest stars that appeared in the episode.

Note: This returns a lot of data, so please only use this extended parameter if you actually need it!


GET /shows/{id}/seasons/{season}/episodes/{episode}/ratings

Summary: Get episode ratings

Returns rating (between 0 and 10) and distribution for an episode.


GET /shows/{id}/seasons/{season}/episodes/{episode}/stats

Summary: Get episode stats

Returns lots of episode stats.


GET /shows/{id}/seasons/{season}/episodes/{episode}/translations/{language}

Summary: Get all episode translations

Returns all translations for an episode, including language and translated values for title and overview.


GET /shows/{id}/seasons/{season}/episodes/{episode}/watching

Summary: Get users watching right now

✨ Extended Info

Returns all users watching this episode right now.


GET /shows/{id}/seasons/{season}/lists/{type}/{sort}

Summary: Get lists containing this season

πŸ“„ Pagination 😁 Emojis

Returns all lists that contain this season. By default, personal lists are returned sorted by the most popular.


GET /shows/{id}/seasons/{season}/people

Summary: Get all people for a season

✨ Extended Info

Returns all cast and crew for a season, including the episode_count for which they appear. Each cast member will have a characters array and a standard person object.

The crew object will be broken up by department into production, art, crew, costume & make-up, directing, writing, sound, camera, visual effects, lighting, and editing (if there are people for those crew positions).. Each of those members will have a jobs array and a standard person object.

Guest Stars

If you add ?extended=guest_stars to the URL, it will return all guest stars that appeared in at least 1 episode of the season.

Note: This returns a lot of data, so please only use this extended parameter if you actually need it!


GET /shows/{id}/seasons/{season}/ratings

Summary: Get season ratings

Returns rating (between 0 and 10) and distribution for a season.


GET /shows/{id}/seasons/{season}/stats

Summary: Get season stats

Returns lots of season stats.


GET /shows/{id}/seasons/{season}/translations/{language}

Summary: Get all season translations

Returns all translations for an season, including language and translated values for title and overview.


GET /shows/{id}/seasons/{season}/watching

Summary: Get users watching right now

✨ Extended Info

Returns all users watching this season right now.


GET /shows/{id}/stats

Summary: Get show stats

Returns lots of show stats.


GET /shows/{id}/studios

Summary: Get show studios

Returns all studios for a show.


GET /shows/{id}/translations/{language}

Summary: Get all show translations

Returns all translations for a show, including language and translated values for title and overview.


GET /shows/{id}/watching

Summary: Get users watching right now

✨ Extended Info

Returns all users watching this show right now.


POST /sync/collection

Summary: Add items to collection

πŸ”’ OAuth Required

Add items to a user’s collection. Accepts shows, seasons, episodes and movies. If only a show is passed, all episodes for the show will be collected. If seasons are specified, all episodes in those seasons will be collected.

Send a collected_at UTC datetime to mark items as collected in the past. You can also send additional metadata about the media itself to have a very accurate collection. Showcase what is available to watch from your epic HD DVD collection down to your downloaded iTunes movies.

Note: You can resend items already in your collection and they will be updated with any new values. This includes the collected_at and any other metadata.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

Media Object POST Data

KeyTypeValue
item *objectmovie, show, or episode object.
collected_atdatetimeUTC datetime when the item was collected. Set to released to automatically use the inital release date + runtime (episodes only)).
media_typestringSet to digital, bluray, hddvd, dvd, vcd, vhs, betamax, or laserdisc.
resolutionstringSet to uhd_4k, hd_1080p, hd_1080i, hd_720p, sd_480p, sd_480i, sd_576p, or sd_576i.
hdrstringSet to dolby_vision, hdr10, hdr10_plus, or hlg.
audiostringSet to dolby_digital, dolby_digital_plus, dolby_digital_plus_atmos, dolby_truehd, dolby_atmos (Dolby TrueHD Atmos), dolby_prologic, dts, dts_ma, dts_hr, dts_x, auro_3d, mp3, mp2, aac, lpcm, ogg (Ogg Vorbis), ogg_opus, wma, or flac.
audio_channelsstringSet to 1.0, 2.0, 2.1, 3.0, 3.1, 4.0, 4.1, 5.0, 5.1, 5.1.2, 5.1.4, 6.1, 7.1, 7.1.2, 7.1.4, 9.1, or 10.1
3dbooleanSet true if in 3D.

POST /sync/collection/remove

Summary: Remove items from collection

πŸ”’ OAuth Required

Remove one or more items from a user’s collection.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

GET /sync/collection/{type}

Summary: Get collection

πŸ”’ OAuth Required ✨ Extended Info

Get all collected items in a user’s collection. A collected item indicates availability to watch digitally or on physical media.

Each movie object contains collected_at and updated_at timestamps. Since users can set custom dates when they collected movies, it is possible for collected_at to be in the past. We also include updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the movie if you see a newer timestamp.

Each show object contains last_collected_at and last_updated_at timestamps. Since users can set custom dates when they collected episodes, it is possible for last_collected_at to be in the past. We also include last_updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the show if you see a newer timestamp.

If you add ?extended=metadata to the URL, it will return the additional media_type, resolution, hdr, audio, audio_channels and β€˜3d’ metadata. It will use null if the metadata isn’t set for an item.


POST /sync/history

Summary: Add items to watched history

πŸ”’ OAuth Required

Add items to a user’s watch history. Accepts shows, seasons, episodes and movies. If only a show is passed, all episodes for the show will be added. If seasons are specified, only episodes in those seasons will be added.

Send a watched_at UTC datetime to mark items as watched in the past. This is useful for syncing past watches from a media center.

Note: Please be careful with sending duplicate data. We don’t verify the item + watched_at to ensure it’s unique, it is up to your app to veify this and not send duplicate plays.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

Media Object POST Data

KeyTypeValue
item *objectmovie, show, or episode object.
watched_atdatetimeUTC datetime when the item was watched. Set to released to automatically use the initial release date + runtime (episodes only).

POST /sync/history/remove

Summary: Remove items from history

πŸ”’ OAuth Required

Remove items from a user’s watch history including all watches, scrobbles, and checkins. Accepts shows, seasons, episodes and movies. If only a show is passed, all episodes for the show will be removed. If seasons are specified, only episodes in those seasons will be removed.

You can also send a list of raw history ids (64-bit integers) to delete single plays from the watched history. The /sync/history method will return an individual id (64-bit integer) for each history item.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.
idsarrayArray of history ids.

GET /sync/history/{type}/{id}

Summary: Get watched history

πŸ”’ OAuth Required πŸ“„ Pagination ✨ Extended Info

Returns movies and episodes that a user has watched, sorted by most recent. You can optionally limit the type to movies or episodes. The id (64-bit integer) in each history item uniquely identifies the event and can be used to remove individual events by using the /sync/history/remove method. The action will be set to scrobble, checkin, or watch.

Specify a type and trakt id to limit the history for just that item. If the id is valid, but there is no history, an empty array will be returned.

Example URLReturns watches for…
/history/movies/12601TRON: Legacy
/history/shows/1388All episodes of Breaking Bad
/history/seasons/3950All episodes of Breaking Bad: Season 1
/history/episodes/73482Only episode 1 for Breaking Bad: Season 1

GET /sync/last_activities

Summary: Get last activity

πŸ”’ OAuth Required

This method is a useful first step in the syncing process. We recommended caching these dates locally, then you can compare to know exactly what data has changed recently. This can greatly optimize your syncs so you don’t pull down a ton of data only to see nothing has actually changed.

Account

settings_at is set when the OAuth user updates any of their Trakt settings on the website. followed_at is set when another Trakt user follows or unfollows the OAuth user. following_at is set when the OAuth user follows or unfollows another Trakt user. pending_at is set when the OAuth user follows a private account, which requires their approval. requested_at is set when the OAuth user has a private account and someone requests to follow them.


DELETE /sync/playback/{id}

Summary: Remove a playback item

πŸ”’ OAuth Required

Remove a playback item from a user’s playback progress list. A 404 will be returned if the id is invalid.


GET /sync/playback/{type}

Summary: Get playback progress

πŸ”’ OAuth Required πŸ“„ Pagination Optional

Whenever a scrobble is paused, the playback progress is saved. Use this progress to sync up playback across different media centers or apps. For example, you can start watching a movie in a media center, stop it, then resume on your tablet from the same spot. Each item will have the progress percentage between 0 and 100.

You can optionally specify a type to only get movies or episodes.

By default, all results will be returned. Pagination is optional and can be used for something like an β€œon deck” feature, or if you only need a limited data set.

Note: We only save playback progress for the last 6 months.


POST /sync/ratings

Summary: Add new ratings

πŸ”’ OAuth Required

Rate one or more items. Accepts shows, seasons, episodes and movies. If only a show is passed, only the show itself will be rated. If seasons are specified, all of those seasons will be rated.

Send a rated_at UTC datetime to mark items as rated in the past. This is useful for syncing ratings from a media center.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

Media Object POST Data

KeyTypeValue
item *objectmovie, show, season, or episode object.
rating *integerBetween 1 and 10.
rated_atdatetimeUTC datetime when the item was rated.

POST /sync/ratings/remove

Summary: Remove ratings

πŸ”’ OAuth Required

Remove ratings for one or more items.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

GET /sync/ratings/{type}/{rating}

Summary: Get ratings

πŸ”’ OAuth Required πŸ“„ Pagination Optional ✨ Extended Info

Get a user’s ratings filtered by type. You can optionally filter for a specific rating between 1 and 10. Send a comma separated string for rating if you need multiple ratings.


POST /sync/recommendations

Summary: Add items to personal recommendations

πŸ”’ OAuth Required 😁 Emojis

If the user only had 50 movies and TV shows to bring with them on a desert island, what would they be? These recommendations are used to enchance Trakt’s social recommendation algorithm. Apps should encourage user’s to build their personal recommendations so the algorithm keeps getting better.

Notes

Each recommendation can optionally accept a notes (255 maximum characters) field explaining why the user recommended the item.

Limits

If the user has recommended 50 items already, a 420 HTTP error code is returned. This limit applies to all users.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.

POST /sync/recommendations/remove

Summary: Remove items from personal recommendations

πŸ”’ OAuth Required

Remove items from a user’s personal recommendations. These recommendations are used to enchance Trakt’s social recommendation algorithm. Apps should encourage user’s to build their personal recommendations so the algorithm keeps getting better.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.

POST /sync/recommendations/reorder

Summary: Reorder personally recommended items

πŸ”’ OAuth Required

Reorder all items on a user’s personal recommendations by sending the updated rank of list item ids. Use the /sync/recommendations method to get all list item ids.


GET /sync/recommendations/{type}/{sort}

Summary: Get personal recommendations

πŸ”’ OAuth Required πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

If the user only had 50 movies and TV shows to bring with them on a desert island, what would they be? These recommendations are used to enchance Trakt’s social recommendation algorithm. Apps should encourage user’s to build their personal recommendations so the algorithm keeps getting better.

Notes

Each recommendation contains a notes field explaining why the user recommended the item.


GET /sync/watched/{type}

Summary: Get watched

πŸ”’ OAuth Required ✨ Extended Info

Returns all movies or shows a user has watched sorted by most plays.

If type is set to shows and you add ?extended=noseasons to the URL, it won’t return season or episode info.

Each movie and show object contains last_watched_at and last_updated_at timestamps. Since users can set custom dates when they watched movies and episodes, it is possible for last_watched_at to be in the past. We also include last_updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the movies and shows if you see a newer timestamp.

Each show object contains a reset_at timestamp. If not null, this is when the user started re-watching the show. Your app can adjust the progress by ignoring episodes with a last_watched_at prior to the reset_at.


POST /sync/watchlist

Summary: Add items to watchlist

πŸ”’ OAuth Required 😁 Emojis πŸ”₯ VIP Enhanced

Add one of more items to a user’s watchlist. Accepts shows, seasons, episodes and movies. If only a show is passed, only the show itself will be added. If seasons are specified, all of those seasons will be added.

Notes

Each watchlist item can optionally accept a notes (255 maximum characters) field with custom text. The user must be a Trakt VIP to send notes.

Limits

If the user’s watchlist limit is exceeded, a 420 HTTP error code is returned. Use the /users/settings method to get all limits for a user account. In most cases, upgrading to Trakt VIP will increase the limits.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

POST /sync/watchlist/remove

Summary: Remove items from watchlist

πŸ”’ OAuth Required

Remove one or more items from a user’s watchlist.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.

POST /sync/watchlist/reorder

Summary: Reorder watchlist items

πŸ”’ OAuth Required

Reorder all items on a user’s watchlist by sending the updated rank of list item ids. Use the /sync/watchlist method to get all list item ids.


GET /sync/watchlist/{type}/{sort}

Summary: Get watchlist

πŸ”’ OAuth Required πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

Returns all items in a user’s watchlist filtered by type.

Notes

Each watchlist item contains a notes field with text entered by the user.

Sorting Headers

By default, all list items are sorted by rank asc. We send X-Applied-Sort-By and X-Applied-Sort-How headers to indicate how the results are actually being sorted.

We also send X-Sort-By and X-Sort-How headers which indicate the user’s sort preference. Use these to to custom sort the watchlist in your app for more advanced sort abilities we can’t do in the API. Values for X-Sort-By include rank, added, title, released, runtime, popularity, percentage, and votes. Values for X-Sort-How include asc and desc.

Auto Removal

When an item is watched, it will be automatically removed from the watchlist. For shows and seasons, watching 1 episode will remove the entire show or season.

The watchlist should not be used as a list of what the user is actively watching.

Use a combination of the /sync/watched and /shows/:id/progress methods to get what the user is actively watching.


GET /users/hidden/{section}

Summary: Get hidden items

πŸ”’ OAuth Required πŸ“„ Pagination ✨ Extended Info

Get hidden items for a section. This will return an array of standard media objects. You can optionally limit the type of results to return.


POST /users/hidden/{section}

Summary: Add hidden items

πŸ”’ OAuth Required

Hide items for a specific section. Here’s what type of items can hidden for each section.

Hideable Media Objects

| Section | Objects | |---|---|---| | calendar | movie, show | | progress_watched | show, season | | progress_collected | show, season | | recommendations | movie, show | | comments | user |

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
usersarrayArray of user objects.

POST /users/hidden/{section}/remove

Summary: Remove hidden items

πŸ”’ OAuth Required

Unhide items for a specific section. Here’s what type of items can unhidden for each section.

Unhideable Media Objects

| Section | Objects | |---|---|---| | calendar | movie, show | | progress_watched | show, season | | progress_collected | show, season | | recommendations | movie, show | | comments | user |

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
usersarrayArray of user objects.

GET /users/requests

Summary: Get follow requests

πŸ”’ OAuth Required ✨ Extended Info

List a user’s pending follow requests so they can either approve or deny them.


GET /users/requests/following

Summary: Get pending following requests

πŸ”’ OAuth Required ✨ Extended Info

List a user’s pending following requests that they’re waiting for the other user’s to approve.


DELETE /users/requests/{id}

Summary: Deny follow request

πŸ”’ OAuth Required

Deny a follower using the id of the request. If the id is not found, was already approved, or was already denied, a 404 error will be returned.


POST /users/requests/{id}

Summary: Approve follow request

πŸ”’ OAuth Required

Approve a follower using the id of the request. If the id is not found, was already approved, or was already denied, a 404 error will be returned.


GET /users/saved_filters/{section}

Summary: Get saved filters

πŸ”’ OAuth Required πŸ“„ Pagination πŸ”₯ VIP Only

Get all saved filters a user has created. The path and query can be used to construct an API path to retrieve the saved data. Think of this like a dynamically updated list.


GET /users/settings

Summary: Retrieve settings

πŸ”’ OAuth Required

Get the user’s settings so you can align your app’s experience with what they’re used to on the trakt website. A globally unique uuid is also returned, which can be used to identify the user locally in your app if needed. However, the uuid can’t be used to retrieve data from the Trakt API.


GET /users/{id}

Summary: Get user profile

πŸ”“ OAuth Optional ✨ Extended Info

Get a user’s profile information. If the user is private, info will only be returned if you send OAuth and are either that user or an approved follower. Adding ?extended=vip will return some additional VIP related fields so you can display the user’s Trakt VIP status and year count.


GET /users/{id}/collection/{type}

Summary: Get collection

πŸ”“ OAuth Optional ✨ Extended Info

Get all collected items in a user’s collection. A collected item indicates availability to watch digitally or on physical media.

Each movie object contains collected_at and updated_at timestamps. Since users can set custom dates when they collected movies, it is possible for collected_at to be in the past. We also include updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the movie if you see a newer timestamp.

Each show object contains last_collected_at and last_updated_at timestamps. Since users can set custom dates when they collected episodes, it is possible for last_collected_at to be in the past. We also include last_updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the show if you see a newer timestamp.

If you add ?extended=metadata to the URL, it will return the additional media_type, resolution, hdr, audio, audio_channels and β€˜3d’ metadata. It will use null if the metadata isn’t set for an item.


GET /users/{id}/comments/{comment_type}/{type}

Summary: Get comments

πŸ”“ OAuth Optional πŸ“„ Pagination ✨ Extended Info

Returns the most recently written comments for the user. You can optionally filter by the comment_type and media type to limit what gets returned.

By default, only top level comments are returned. Set ?include_replies=true to return replies in addition to top level comments. Set ?include_replies=only to return only replies and no top level comments.


DELETE /users/{id}/follow

Summary: Unfollow this user

πŸ”’ OAuth Required

Unfollow someone you already follow.


POST /users/{id}/follow

Summary: Follow this user

πŸ”’ OAuth Required

If the user has a private profile, the follow request will require approval (approved_at will be null). If a user is public, they will be followed immediately (approved_at will have a date).

Note: If this user is already being followed, a 409 HTTP status code will returned.


GET /users/{id}/followers

Summary: Get followers

πŸ”“ OAuth Optional ✨ Extended Info

Returns all followers including when the relationship began.


GET /users/{id}/following

Summary: Get following

πŸ”“ OAuth Optional ✨ Extended Info

Returns all user’s they follow including when the relationship began.


GET /users/{id}/friends

Summary: Get friends

πŸ”“ OAuth Optional ✨ Extended Info

Returns all friends for a user including when the relationship began. Friendship is a 2 way relationship where each user follows the other.


GET /users/{id}/history/{type}/{item_id}

Summary: Get watched history

πŸ”“ OAuth Optional πŸ“„ Pagination ✨ Extended Info

Returns movies and episodes that a user has watched, sorted by most recent. You can optionally limit the type to movies or episodes. The id (64-bit integer) in each history item uniquely identifies the event and can be used to remove individual events by using the /sync/history/remove method. The action will be set to scrobble, checkin, or watch.

Specify a type and trakt item_id to limit the history for just that item. If the item_id is valid, but there is no history, an empty array will be returned.

Example URLReturns watches for…
/history/movies/12601TRON: Legacy
/history/shows/1388All episodes of Breaking Bad
/history/seasons/3950All episodes of Breaking Bad: Season 1
/history/episodes/73482Only episode 1 for Breaking Bad: Season 1

GET /users/{id}/likes/{type}

Summary: Get likes

πŸ”’ OAuth Optional πŸ“„ Pagination

Get items a user likes. This will return an array of standard media objects. You can optionally limit the type of results to return.

Comment Media Objects

If you add ?extended=comments to the URL, it will return media objects for each comment like.

Note: This returns a lot of data, so please only use this extended parameter if you actually need it!


GET /users/{id}/lists

Summary: Get a user’s personal lists

πŸ”“ OAuth Optional 😁 Emojis

Returns all personal lists for a user. Use the /users/:id/lists/:list_id/items method to get the actual items a specific list contains.


POST /users/{id}/lists

Summary: Create personal list

πŸ”’ OAuth Required πŸ”₯ VIP Enhanced

Create a new personal list. The name is the only required field, but the other info is recommended to ask for.

Limits

If the user’s list limit is exceeded, a 420 HTTP error code is returned. Use the /users/settings method to get all limits for a user account. In most cases, upgrading to Trakt VIP will increase the limits.

JSON POST Data

KeyTypeDefaultValue
name *stringName of the list.
descriptionstringDescription for this list.
privacystringprivateprivate, friends, public
display_numbersbooleanfalseShould each item be numbered?
allow_commentsbooleantrueAre comments allowed?
sort_bystringrankrank, added, title, released, runtime, popularity, percentage, votes, my_rating, random, watched, collected
sort_howstringascasc, desc

GET /users/{id}/lists/collaborations

Summary: Get all lists a user can collaborate on

πŸ”“ OAuth Optional

Returns all lists a user can collaborate on. This gives full access to add, remove, and re-order list items. It essentially works just like a list owned by the user, just make sure to use the correct list owner user when building the API URLs.


POST /users/{id}/lists/reorder

Summary: Reorder a user’s lists

πŸ”’ OAuth Required

Reorder all lists by sending the updated rank of list ids. Use the /users/:id/lists method to get all list ids.


DELETE /users/{id}/lists/{list_id}

Summary: Delete a user’s personal list

πŸ”’ OAuth Required

Remove a personal list and all items it contains.


GET /users/{id}/lists/{list_id}

Summary: Get personal list

πŸ”“ OAuth Optional 😁 Emojis

Returns a single personal list. Use the /users/:id/lists/:list_id/items method to get the actual items this list contains.


PUT /users/{id}/lists/{list_id}

Summary: Update personal list

πŸ”’ OAuth Required

Update a personal list by sending 1 or more parameters. If you update the list name, the original slug will still be retained so existing references to this list won’t break.

JSON POST Data

| Key | Type | Value | |---|---|---|---| | name | string | Name of the list. | | description | string | Description for this list. | | privacy | string | private, friends, public | | display_numbers | boolean | Should each item be numbered? | | allow_comments | boolean | Are comments allowed? | | sort_by | string | rank, added, title, released, runtime, popularity, percentage, votes, my_rating, random, watched, collected | | sort_how | string | asc, desc |


GET /users/{id}/lists/{list_id}/comments/{sort}

Summary: Get all list comments

πŸ”“ OAuth Optional πŸ“„ Pagination 😁 Emojis

Returns all top level comments for a list. By default, the newest comments are returned first. Other sorting options include oldest, most likes, and most replies.


POST /users/{id}/lists/{list_id}/items

Summary: Add items to personal list

πŸ”’ OAuth Required 😁 Emojis πŸ”₯ VIP Enhanced

Add one or more items to a personal list. Items can be movies, shows, seasons, episodes, or people.

Notes

Each list item can optionally accept a notes (255 maximum characters) field with custom text. The user must be a Trakt VIP to send notes.

Limits

If the user’s list item limit is exceeded, a 420 HTTP error code is returned. Use the /users/settings method to get all limits for a user account. In most cases, upgrading to Trakt VIP will increase the limits.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.
peoplearrayArray of person objects.

POST /users/{id}/lists/{list_id}/items/remove

Summary: Remove items from personal list

πŸ”’ OAuth Required

Remove one or more items from a personal list.

JSON POST Data

KeyTypeValue
moviesarrayArray of movie objects. (see examples β†’)
showsarrayArray of show objects.
seasonsarrayArray of season objects.
episodesarrayArray of episode objects.
peoplearrayArray of person objects.

POST /users/{id}/lists/{list_id}/items/reorder

Summary: Reorder items on a list

πŸ”’ OAuth Required

Reorder all items on a list by sending the updated rank of list item ids. Use the /users/:id/lists/:list_id/items method to get all list item ids.


GET /users/{id}/lists/{list_id}/items/{type}

Summary: Get items on a personal list

πŸ”“ OAuth Optional πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

Get all items on a personal list. Items can be a movie, show, season, episode, or person. You can optionally specify the type parameter with a single value or comma delimited string for multiple item types.

Notes

Each list item contains a notes field with text entered by the user.

Sorting Headers

All list items are sorted by ascending rank. We also send X-Sort-By and X-Sort-How headers which can be used to custom sort the list in your app based on the user’s preference. Values for X-Sort-By include rank, added, title, released, runtime, popularity, percentage, votes, my_rating, random, watched, and collected. Values for X-Sort-How include asc and desc.


DELETE /users/{id}/lists/{list_id}/like

Summary: Remove like on a list

πŸ”’ OAuth Required

Remove a like on a list.


POST /users/{id}/lists/{list_id}/like

Summary: Like a list

πŸ”’ OAuth Required

Votes help determine popular lists. Only one like is allowed per list per user.


GET /users/{id}/lists/{list_id}/likes

Summary: Get all users who liked a list

πŸ”“ OAuth Optional πŸ“„ Pagination

Returns all users who liked a list.


GET /users/{id}/ratings/{type}/{rating}

Summary: Get ratings

πŸ”“ OAuth Optional πŸ“„ Pagination Optional ✨ Extended Info

Get a user’s ratings filtered by type. You can optionally filter for a specific rating between 1 and 10. Send a comma separated string for rating if you need multiple ratings.


GET /users/{id}/recommendations/{type}/{sort}

Summary: Get personal recommendations

πŸ”’ OAuth Required πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

Returns the top 50 items a user personally recommendeds to others. These recommendations are used to enchance Trakt’s social recommendation algorithm. Apps should encourage user’s to build their personal recommendations so the algorithm keeps getting better.

Notes

Each recommendation contains a notes field explaining why the user recommended the item.


GET /users/{id}/stats

Summary: Get stats

πŸ”“ OAuth Optional

Returns stats about the movies, shows, and episodes a user has watched, collected, and rated.


GET /users/{id}/watched/{type}

Summary: Get watched

πŸ”“ OAuth Optional ✨ Extended Info

Returns all movies or shows a user has watched sorted by most plays.

If type is set to shows and you add ?extended=noseasons to the URL, it won’t return season or episode info.

Each movie and show object contains last_watched_at and last_updated_at timestamps. Since users can set custom dates when they watched movies and episodes, it is possible for last_watched_at to be in the past. We also include last_updated_at to help sync Trakt data with your app. Cache this timestamp locally and only re-process the movies and shows if you see a newer timestamp.

Each show object contains a reset_at timestamp. If not null, this is when the user started re-watching the show. Your app can adjust the progress by ignoring episodes with a last_watched_at prior to the reset_at.


GET /users/{id}/watching

Summary: Get watching

πŸ”“ OAuth Optional ✨ Extended Info

Returns a movie or episode if the user is currently watching something. If they are not, it returns no data and a 204 HTTP status code.


GET /users/{id}/watchlist/{type}/{sort}

Summary: Get watchlist

πŸ”“ OAuth Optional πŸ“„ Pagination Optional ✨ Extended Info 😁 Emojis

Returns all items in a user’s watchlist filtered by type.

Notes

Each watchlist item contains a notes field with text entered by the user.

Sorting Headers

By default, all list items are sorted by rank asc. We send X-Applied-Sort-By and X-Applied-Sort-How headers to indicate how the results are actually being sorted.

We also send X-Sort-By and X-Sort-How headers which indicate the user’s sort preference. Use these to to custom sort the watchlist in your app for more advanced sort abilities we can’t do in the API. Values for X-Sort-By include rank, added, title, released, runtime, popularity, percentage, and votes. Values for X-Sort-How include asc and desc.

Auto Removal

When an item is watched, it will be automatically removed from the watchlist. For shows and seasons, watching 1 episode will remove the entire show or season.

The watchlist should not be used as a list of what the user is actively watching.

Use a combination of the /sync/watched and /shows/:id/progress methods to get what the user is actively watching.