UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 415 kB
{"openapi":"3.0.0","servers":[{"url":"https://api.trakt.tv"}],"x-hasEquivalentPaths":true,"info":{"description":"At Trakt, we collect lots of interesting information about what tv shows and movies everyone is watching. Part of the fun with such data is making it available for anyone to mash up and use on their own site or app. The Trakt API was made just for this purpose. It is very easy to use, you basically call a URL and get some JSON back.\n\nMore complex API calls (such as adding a movie or show to your collection) involve sending us data. These are still easy to use, you simply POST some JSON data to a specific URL.\n\nMake sure to check out the [**Required Headers**](#introduction/required-headers) and [**Authentication**](#reference/authentication-oauth) sections for more info on what needs to be sent with each API call. Also check out the [**Terminology**](#introduction/terminology) section insight into the features Trakt supports.\n\n# Create an App\n\nTo use the Trakt API, you'll need to [**create a new API app**](https://trakt.tv/oauth/applications/new).\n\n# Stay Connected\n\nAPI discussion and bugs should be posted in the [**GitHub Developer Forum**](https://github.com/trakt/api-help/issues) and *watch* the repository if you'd like to get notifications. Make sure to follow our [**API Blog**](https://apiblog.trakt.tv) and [**@traktapi on Twitter**](https://twitter.com/traktapi) too.\n\n# API URL\n\nThe API should always be accessed over SSL.\n\n```\nhttps://api.trakt.tv\n```\n\nIf you would like to use our sandbox environment to not fill production with test data, use this URL over SSL. **Note:** Staging is a completely separate environment, so you'll need to [**create a new API app on staging**](https://staging.trakt.tv/oauth/applications/new).\n\n```\nhttps://api-staging.trakt.tv\n```\n\n# Verbs\n\nThe API uses restful verbs.\n\n| Verb | Description |\n|---|---|\n| `GET` | Select one or more items. Success returns `200` status code. |\n| `POST` | Create a new item. Success returns `201` status code. |\n| `PUT` | Update an item. Success returns `200` status code. |\n| `DELETE` | Delete an item. Success returns `200` or `204` status code. |\n\n# Status Codes\n\nThe API will respond with one of the following HTTP status codes.\n\n| Code | Description |\n|---|---|\n| `200` | Success\n| `201` | Success - *new resource created (POST)*\n| `204` | Success - *no content to return (DELETE)*\n| `400` | Bad Request - *request couldn't be parsed*\n| `401` | Unauthorized - *OAuth must be provided*\n| `403` | Forbidden - *invalid API key or unapproved app*\n| `404` | Not Found - *method exists, but no record found*\n| `405` | Method Not Found - *method doesn't exist*\n| `409` | Conflict - *resource already created*\n| `412` | Precondition Failed - *use application/json content type*\n| `420` | Account Limit Exceeded - *list count, item count, etc*\n| `422` | Unprocessable Entity - *validation errors*\n| `423` | Locked User Account - *have the user contact support*\n| `426` | VIP Only - *user must upgrade to VIP*\n| `429` | Rate Limit Exceeded\n| `500` | Server Error - *please open a support ticket*\n| `502` | Service Unavailable - *server overloaded (try again in 30s)*\n| `503` | Service Unavailable - *server overloaded (try again in 30s)*\n| `504` | Service Unavailable - *server overloaded (try again in 30s)*\n| `520` | Service Unavailable - *Cloudflare error*\n| `521` | Service Unavailable - *Cloudflare error*\n| `522` | Service Unavailable - *Cloudflare error*\n\n# Required Headers\n\nYou'll need to send some headers when making API calls to identify your application, set the version and set the content type to JSON.\n\n| Header | Value |\n|---|---|\n| `Content-type` <span style=\"color:red;\">*</a> | `application/json` |\n| `trakt-api-key` <span style=\"color:red;\">*</a> | Your `client_id` listed under your Trakt applications. |\n| `trakt-api-version` <span style=\"color:red;\">*</a> | `2` | API version to use.\n\nAll `POST`, `PUT`, and `DELETE` methods require a valid OAuth `access_token`. Some `GET` calls require OAuth and others will return user specific data if OAuth is sent. Methods that &#128274; **require** or have &#128275; **optional** OAuth will be indicated.\n\nYour OAuth library should take care of sending the auth headers for you, but for reference here's how the Bearer token should be sent.\n\n| Header | Value |\n|---|---|\n| `Authorization` | `Bearer [access_token]` |\n\n# Rate Limiting\n\nAll API methods are rate limited. A `429` HTTP status code is returned when the limit has been exceeded. Check the headers for detailed info, then try your API call in `Retry-After` seconds.\n\n| Header | Value |\n|---|---|\n| `X-Ratelimit` | `{\"name\":\"UNAUTHED_API_GET_LIMIT\",\"period\":300,\"limit\":1000,\"remaining\":0,\"until\":\"2020-10-10T00:24:00Z\"}` |\n| `Retry-After` | `10` |\n\nHere are the current limits. There are separate limits for authed (user level) and unauthed (application level) calls. We'll continue to adjust these limits to optimize API performance for everyone. The goal is to prevent API abuse and poor coding, but allow users to use apps normally.\n\n| Name | Verb | Methods | Limit |\n|---|---|---|---|\n| `AUTHED_API_POST_LIMIT` | `POST`, `PUT`, `DELETE` | all | 1 call per second |\n| `AUTHED_API_GET_LIMIT` | `GET` | all | 1000 calls every 5 minutes |\n| `UNAUTHED_API_GET_LIMIT` | `GET` | all | 1000 calls every 5 minutes |\n\n# Locked User Account\n\nA `423` HTTP status code is returned when the OAuth user has a locked user account. Please instruct the user to [**contact Trakt support**](https://support.trakt.tv) so we can fix their account. API access will be suspended for the user until we fix their account.\n\n# VIP Methods\n\nSome API methods are tagged 🔥 **VIP Only**. A `426` HTTP status code is returned when the user isn't a VIP, indicating they need to sign up for [**Trakt VIP**](https://trakt.tv/vip) in order to use this method. In your app, please open a browser to `X-Upgrade-URL` so the user can sign up for Trakt VIP.\n\n| Header | Value |\n|---|---|\n| `X-Upgrade-URL` | `https://trakt.tv/vip` |\n\nSome API methods are tagged 🔥 **VIP Enhanced**. A `420` HTTP status code is returned when the user has exceeded their account limit. Signing up for [**Trakt VIP**](https://trakt.tv/vip) will increase these limits. If the user isn't a VIP, please open a browser to `X-Upgrade-URL` so the user can sign up for Trakt VIP. If they are already VIP and still exceeded the limit, please display a message indicating this.\n\n| Header | Value |\n|---|---|\n| `X-Upgrade-URL` | `https://trakt.tv/vip` |\n| `X-VIP-User` | `true` or `false` |\n| `X-Account-Limit` | Limit allowed. |\n\n# Pagination\n\nSome methods are paginated. Methods with &#128196; **Pagination** will load 1 page of 10 items by default. Methods with &#128196; **Pagination Optional** will load all items by default. In either case, append a query string like `?page={page}&limit={limit}` to the URL to influence the results.\n\n| Parameter | Type | Default | Value |\n|---|---|---|---|\n| `page` | integer | `1` | Number of page of results to be returned. |\n| `limit` | integer | `10` | Number of results to return per page. |\n\nAll paginated methods will return these HTTP headers.\n\n| Header | Value |\n|---|---|\n| `X-Pagination-Page` | Current page. |\n| `X-Pagination-Limit` | Items per page. |\n| `X-Pagination-Page-Count` | Total number of pages. |\n| `X-Pagination-Item-Count` | Total number of items. |\n\n# Extended Info\n\nBy default, all methods will return minimal info for movies, shows, episodes, people, and users. Minimal info is typically all you need to match locally cached items and includes the `title`, `year`, and `ids`. However, you can request different extended levels of information by adding `?extended={level}` to the URL. Send a comma separated string to get multiple types of extended info.\n\n**Note:** This returns a lot of extra data, so please only use extended parameters if you actually need them!\n\n| Level | Description |\n|---|---|\n| `full` | Complete info for an item.\n| `metadata` | **Collection only.** Additional video and audio info.\n\n# Filters\n\nSome `movies`, `shows`, `calendars`, and `search` methods support additional filters and will be tagged with &#127898; **Filters**. Applying these filters refines the results and helps your users to more easily discover new items.\n\nAdd a query string (i.e. `?years=2016&genres=action`) with any filters you want to use. Some filters allow multiples which can be sent as comma delimited parameters. For example, `?genres=action,adventure` would match the `action` OR `adventure` genre.\n\n**Note:** Make sure to properly URL encode the parameters including spaces and special characters.\n\n#### Common Filters\n\n| Parameter | Multiples | Example | Value |\n|---|---|---|---|\n| `query` | | `batman` | Search titles and descriptions. |\n| `years` | | `2016` | 4 digit year or range of years. |\n| `genres` | &#10003; | `action` | [Genre slugs.](#reference/genres) |\n| `languages` | &#10003; | `en` | [2 character language code.](#reference/languages) |\n| `countries` | &#10003; | `us` | [2 character country code.](#reference/countries) |\n| `runtimes` | | `30-90` | Range in minutes. |\n| `studios` | &#10003; | `marvel-studios` | Studio slugs. |\n\n#### Rating Filters\n\nTrakt, TMDB, and IMDB ratings apply to `movies`, `shows`, and `episodes`. Rotten Tomatoes and Metacritic apply to `movies`.\n\n| Parameter | Multiples | Example | Value |\n|---|---|---|---|\n| `ratings` | | `75-100` | Trakt rating range between `0` and `100`. |\n| `votes` | | `5000-10000` | Trakt vote count between `0` and `100000`. |\n| `tmdb_ratings` | | `5.5-10.0` | TMDB rating range between `0.0` and `10.0`. |\n| `tmdb_votes` | | `5000-10000` | TMDB vote count between `0` and `100000`. |\n| `imdb_ratings` | | `5.5-10.0` | IMDB rating range between `0.0` and `10.0`. |\n| `imdb_votes` | | `5000-10000` | IMDB vote count between `0` and `3000000`. |\n| `rt_meters` | | `5.5-10.0` | Rotten Tomatoes meter range between `0` and `100`. |\n| `metascores` | | `5.5-10.0` | Metacritic score range between `0` and `100`. |\n\n#### Movie Filters\n\n| Parameter | Multiples | Example | Value |\n|---|---|---|---|\n| `certifications` | &#10003; | `pg-13` | US content certification. |\n\n#### Show Filters\n\n| Parameter | Multiples | Example | Value |\n|---|---|---|---|\n| `certifications` | &#10003; | `tv-pg` | US content certification. |\n| `networks` | &#10003; | `HBO` | Network name. |\n| `status` | &#10003; | `ended` | Set to `returning series`, `continuing`, `in production`, `planned`, `upcoming`, `pilot`, `canceled`, or `ended`. |\n\n# CORS\n\nWhen creating your API app, specify the JavaScript (CORS) origins you'll be using. We use these origins to return the headers needed for CORS.\n\n# Dates\n\nAll dates will be GMT and returned in the ISO 8601 format like `2014-09-01T09:10:11.000Z`. Adjust accordingly in your app for the user's local timezone.\n\n# Emojis\n\nWe use short codes for emojis like `:smiley:` and `:raised_hands:` and render them on the Trakt website using [**JoyPixels**](https://www.joypixels.com/) _(verion 6.6.0)_. Methods that support emojis are tagged with &#128513; **Emojis**. For POST methods, you can send standard unicode emojis and we'll automatically convert them to short codes. For GET methods, we'll return the short codes and it's up to your app to convert them back to unicode emojis.\n\n# Standard Media Objects\n\nAll methods will accept or return standard media objects for `movie`, `show`, `season`, `episode`, `person`, and `user` items. Here are examples for all minimal objects.\n\n#### movie\n\n```\n{\n \"title\": \"Batman Begins\",\n \"year\": 2005,\n \"ids\": {\n \"trakt\": 1,\n \"slug\": \"batman-begins-2005\",\n \"imdb\": \"tt0372784\",\n \"tmdb\": 272\n }\n}\n```\n\n#### show\n\n```\n{\n \"title\": \"Breaking Bad\",\n \"year\": 2008,\n \"ids\": {\n \"trakt\": 1,\n \"slug\": \"breaking-bad\",\n \"tvdb\": 81189,\n \"imdb\": \"tt0903747\",\n \"tmdb\": 1396\n }\n}\n```\n\n#### season\n\n```\n{\n \"number\": 0,\n \"ids\": {\n \"trakt\": 1,\n \"tvdb\": 439371,\n \"tmdb\": 3577\n }\n}\n```\n\n#### episode\n\n```\n{\n \"season\": 1,\n \"number\": 1,\n \"title\": \"Pilot\",\n \"ids\": {\n \"trakt\": 16,\n \"tvdb\": 349232,\n \"imdb\": \"tt0959621\",\n \"tmdb\": 62085\n }\n}\n```\n\n#### person\n\n```\n{\n \"name\": \"Bryan Cranston\",\n \"ids\": {\n \"trakt\": 142,\n \"slug\": \"bryan-cranston\",\n \"imdb\": \"nm0186505\",\n \"tmdb\": 17419\n }\n}\n```\n\n#### user\n\n```\n{\n \"username\": \"sean\",\n \"private\": false,\n \"name\": \"Sean Rudford\",\n \"vip\": true,\n \"vip_ep\": true,\n \"ids\": {\n \"slug\": \"sean\"\n }\n}\n```\n\n# Images\n\nThe standard media objects for all `movie`, `show`, `season`, `episode`, and `person` items include an `ids` object. These `ids` map to other services like [TMDB](https://www.themoviedb.org), [TVDB](https://thetvdb.com), [Fanart.tv](https://fanart.tv), [IMDB](https://www.imdb.com), and [OMDB](https://www.omdbapi.com/).\n\nMost of these services have free APIs you can use to grab lots of great looking images. Here’s a chart to help you find the best artwork for your app. [**We also wrote an article to help with this.**](https://apiblog.trakt.tv/how-to-find-the-best-images-516045bcc3b6)\n\n| Media | Type | [TMDB](https://developers.themoviedb.org/3) | [TVDB](https://api.thetvdb.com/swagger) | [Fanart.tv](http://docs.fanarttv.apiary.io) | [OMDB](https://www.omdbapi.com) |\n|---|---|---|---|---|---|\n| `shows` | `poster` | &#10003; | &#10003; | &#10003; | &#10003; |\n| | `fanart` | &#10003; | &#10003; | &#10003; | |\n| | `banner` | | &#10003; | &#10003; | |\n| | `logo` | | | &#10003; | |\n| | `clearart` | | | &#10003; | |\n| | `thumb` | | | &#10003; | |\n| `seasons` | `poster` | &#10003; | &#10003; | &#10003; | |\n| | `banner` | | &#10003; | &#10003; | |\n| | `thumb` | | | &#10003; | |\n| `episodes` | `screenshot` | &#10003; | &#10003; | | |\n| `movies` | `poster` | &#10003; | | &#10003; | &#10003; |\n| | `fanart` | &#10003; | | &#10003; | |\n| | `banner` | | | &#10003; | |\n| | `logo` | | | &#10003; | |\n| | `clearart` | | | &#10003; | |\n| | `thumb` | | | &#10003; | |\n| `person` | `headshot` | &#10003; | | | |\n| | `character` | | &#10003; | | |\n\n# Website Media Links\n\nThere are several ways to construct direct links to media on the Trakt website. The website itself uses slugs so the URLs are more readable.\n\n| Type | URL |\n|---|---|\n| `movie` | `/movies/:slug` |\n| `show` | `/shows/:slug` |\n| `season` | `/shows/:slug/seasons/:num` |\n| `episode` | `/shows/:slug/seasons/:num/episodes/:num` |\n| `person` | `/people/:slug` |\n| `comment` | `/comments/:id` |\n| `list` | `/lists/:id` |\n\nYou can also create links using the Trakt, IMDB, TMDB, or TVDB IDs. We recommend using the Trakt ID if possible since that will always have full coverage. If you use the search url without an `id_type` it will return search results if multiple items are found.\n\n| Type | URL |\n|---|---|\n| `trakt` | `/search/trakt/:id` |\n| | `/search/trakt/:id?id_type=movie` |\n| | `/search/trakt/:id?id_type=show` |\n| | `/search/trakt/:id?id_type=season` |\n| | `/search/trakt/:id?id_type=episode` |\n| | `/search/trakt/:id?id_type=person` |\n| `imdb` | `/search/imdb/:id` |\n| `tmdb` | `/search/tmdb/:id` |\n| | `/search/tmdb/:id?id_type=movie` |\n| | `/search/tmdb/:id?id_type=show` |\n| | `/search/tmdb/:id?id_type=episode` |\n| | `/search/tmdb/:id?id_type=person` |\n| `tvdb` | `/search/tvdb/:id` |\n| | `/search/tvdb/:id?id_type=show` |\n| | `/search/tvdb/:id?id_type=episode` |\n\n# Third Party Libraries\n\nAll of the libraries listed below are user contributed. If you find a bug or missing feature, please contact the developer directly. These might help give your project a head start, but we can't provide direct support for any of these libraries. Please help us keep this list up to date.\n\n| Language | Name | Repository |\n|---|---|---|\n| `C#` | `Trakt.NET` | https://github.com/henrikfroehling/Trakt.NET |\n| | `TraktSharp` | https://github.com/wwarby/TraktSharp |\n| `C++` | `libtraqt` | https://github.com/RobertMe/libtraqt |\n| `Clojure` | `clj-trakt` | https://github.com/niamu/clj-trakt |\n| `Java` | `trakt-java` | https://github.com/UweTrottmann/trakt-java |\n| `Kotlin` | `trakt-api` | https://github.com/MoviebaseApp/trakt-api |\n| `Node.js` | `Trakt.tv` | https://github.com/vankasteelj/trakt.tv |\n| | `TraktApi2` | https://github.com/PatrickE94/traktapi2 |\n| `Python` | `trakt.py` | https://github.com/fuzeman/trakt.py |\n| | `pyTrakt` | https://github.com/moogar0880/PyTrakt |\n| `R` | `tRakt` | https://github.com/jemus42/tRakt |\n| `React Native` | `nodeless-trakt` | https://github.com/kdemoya/nodeless-trakt |\n| `Ruby` | `omniauth-trakt` | https://github.com/wafcio/omniauth-trakt |\n| | `omniauth-trakt` | https://github.com/alextakitani/omniauth-trakt |\n| `Swift` | `TraktKit` | https://github.com/MaxHasADHD/TraktKit |\n| | `AKTrakt` | https://github.com/arsonik/AKTrakt |\n\n# Terminology\n\nTrakt has a lot of features and here's a chart to help explain the differences between some of them.\n\n| Term | Description |\n|---|---|\n| `scrobble` | Automatic way to track what a user is watching in a media center. |\n| `checkin` | Manual action used by mobile apps allowing the user to indicate what they are watching right now. |\n| `history` | All watched items (scrobbles, checkins, watched) for a user. |\n| `collection` | Items a user has available to watch including Blu-Rays, DVDs, and digital downloads. |\n| `watchlist` | Items a user wants to watch in the future. Once watched, they are auto removed from this list. |\n| `list` | Personal list for any purpose. Items are not auto removed from any personal lists. |\n| `recommendations` | Movies and TV shows a user personally recommends to others. |","title":"Trakt API","version":"1.0.0","x-logo":{"url":"https://walter.trakt.tv/hotlink-ok/public/apple-touch-icon.png"},"x-origin":[{"format":"swagger","url":"https://trakt.docs.apiary.io/api-description-document","version":"2.0"}],"x-providerName":"trakt.tv"},"tags":[{"description":"The API uses OAuth2. If you know what's up with OAuth2, grab your library and starting rolling. If you have access to a web browser (mobile app, desktop app, website), use standard **OAuth**. If you don't have web browser access (media center plugins, smart watches, smart TVs, command line scripts, system services), use **Device** authentication.\n\nTo obtain a `client_id` and `client_secret`, create an application on the Trakt website. Here are some helpful links to get your started:\n\n- [Create a new API app](https://trakt.tv/oauth/applications/new)\n\n- [View your API apps](https://trakt.tv/oauth/applications)\n\n---\n\n#### Application Flow\n\n1. **Redirect to request Trakt access.** Using the [**/oauth/authorize**](/reference/authentication-oauth/authorize) method, construct then redirect to this URL. The Trakt website will request permissions for your app and the user will have the opportunity to sign up for a new Trakt account or sign in with their existing account.\n\n2. **Trakt redirects back to your site.** If the user accepts your request, Trakt redirects back to your site with a temporary code in a `code` GET parameter as well as the state (if provided) in the previous step in a `state` parameter. If the states don’t match, the request has been created by a third party and the process should be aborted.\n\n3. **Exchange the code for an access token.** If everything looks good in step 2, exchange the `code` for an access token using the [**/oauth/token**](reference/authentication-oauth/get-token/) method. Save the `access_token` so your app can authenticate the user by sending the `Authorization` header as indicated below or in any example code. 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.","name":"Authentication - OAuth"},{"description":"Device authentication is for apps and services with limited input or display capabilities. This include media center plugins, smart watches, smart TVs, command line scripts, and system services.\n\nYour app displays an alphanumeric code (typically 8 characters) to the user. They are then instructed to visit the verification URL on their computer or mobile device. After entering the code, the user will be prompted to grant permission for your app. After your app gets permissions, the device receives an `access_token` and works like standard OAuth from that point on. More details below.\n\n---\n\n#### Application Flow\n\n1. **Generate codes.** Your app calls [**/oauth/device/code**](/reference/authentication-devices/code) to generate new codes. Save this entire response for later use.\n\n2. **Display the code.** Display the `user_code` and instruct the user to visit the `verification_url` on their computer or mobile device.\n\n3. **Poll for authorization.** Poll the [**/oauth/device/token**](/reference/authentication-devices/token) method to see if the user successfully authorizes your app. Use the `device_code` and poll at the `interval` (in seconds) to check if the user has authorized your app. Check the docs below for the specific error codes you need to handle. 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.**\n\n4. **Successful authorization.** 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. It's normal OAuth from this point.\n\n---\n\n#### User Flow\n\n1. **Call to action.** Consider your user experience when asking a user to connect their Trakt account. For some devices this will be right away, and for others it might be later in the experience.\n\n2. **Display the code.** When a user clicks the call to action, your app calls [**/oauth/device/code**](/reference/authentication-devices/code) to generate new codes. In your UI, display the `user_code` and instruct the user to visit the `verification_url` on their computer or mobile device. The `user_code` is typically 8 characters, so make sure there is enough room to display the full code.\n\n3. **Authorizing your app.** When the user visits the `verification_url` it first checks to make sure they're signed in. If not signed in, they'll be able to or can sign up for a new account. After entering the code, the user will be prompted to grant permission for your app. Once approved, the user will see a success message indicating their device is connected.\n\n4. **Confirm successful authorization.** Your app will be polling to see if the user successfully authorizes your app. Once they have, refresh your UI to indicate a successful connection has been made.","name":"Authentication - Devices"},{"description":"By default, the calendar will return all shows or movies for the specified time period and can be global or user specific. The `start_date` defaults to today and `days` to 7. The maximum amount of `days` you can send is `33`. All dates (including the `start_date` and `first_aired`) are in UTC, so it's up to your app to handle any offsets based on the user's time zone.\n\nThe `my` calendar displays episodes for all shows that have been watched, collected, or watchlisted plus individual episodes on the watchlist. It will remove any shows that have been hidden from the calendar. The `all` calendar displays info for all shows airing during the specified period.","name":"Calendars"},{"description":"Checking in is a manual action used by mobile apps allowing the user to indicate what they are watching right now. While not as effortless as scrobbling, checkins help fill in the gaps. You might be watching live tv, at a friend's house, or watching a movie in theaters. You can simply checkin from your phone or tablet in those situations. The item will display as *watching* on the site, then automatically switch to *watched* status once the duration has elapsed.","name":"Checkin"},{"name":"Certifications"},{"description":"Comments are attached to any movie, show, season, episode, or list and can be a quick shout or a more detailed review. Each comment can have replies and can be liked. These likes are used to determine popular comments. Comments must follow these rules and your app should indicate these to the user. Failure to adhere to these rules could suspend the user's commenting abilities.\n\n- Comments must be at least 5 words.\n\n- Comments 200 words or longer will be automatically marked as a review.\n\n- Correctly indicate if the comment contains spoilers.\n\n- Only write comments in English - **This is important!**\n\n- **Do not include** app specific text like (via App Name) or #apphashtag. This clutters up the comments and failure to clean the comment text could get your app blacklisted from commenting.\n\n#### Possible Error Responses\n\n| Code | Description |\n|---|---|\n| `401` | Invalid user\n| `401` | User banned from commenting\n| `404` | Item not found or doesn't allow comments\n| `409` | Comment can't be deleted\n| `422` | Validation errors\n\n#### Validation Errors\n\nIf a comment doesn't pass validation, it returns a `422` HTTP error code and an array of validation errors in the response. The validation errors could include:\n\n| Error Message |\n|---|\n| `must be at least 5 words` |\n| `must be written in English` |\n\n#### Comment Formatting\n\nComments support [**markdown**](https://en.wikipedia.org/wiki/Markdown) formatting so you'll want to render this in your app so it matches what the website does. In addition, we support inline spoiler tags like `[spoiler]text[/spoiler]` which you should also handle independent of the top level `spoiler` attribute.","name":"Comments"},{"name":"Countries"},{"name":"Genres"},{"name":"Languages"},{"name":"Lists"},{"name":"Movies"},{"name":"Networks"},{"name":"People"},{"description":"Trakt social recommendations use all the `Recommendations` lists from the users you follow. The more users you follow with similar tastes, the better your recommendations will be. We also use other factors for the algorithm to further personalize what gets recommended.","name":"Recommendations"},{"description":"Scrobbling is an automatic way to track what a user is watching in a media center. The media center should send events that correspond to starting, pausing, and stopping (or finishing) watching a movie or episode.","name":"Scrobble"},{"description":"Searches can use queries or ID lookups. Queries will search text fields like the title and overview. ID lookups are helpful if you have an external ID and want to get the Trakt ID and info. These methods can search for movies, shows, episodes, people, and lists.","name":"Search"},{"name":"Shows"},{"name":"Seasons"},{"name":"Episodes"},{"description":"Syncing with trakt opens up quite a few cool features. Most importantly, trakt can serve as a cloud based backup for the data in your app. This is especially useful when rebuilding a media center or installing a mobile app on your new phone. It can also be nice to sync up multiple media centers with a central trakt account. If everything is in sync, your media can be managed from trakt and be reflected in your apps.\n\n### Media objects for syncing\n\nAs a baseline, all *add* and *remove* sync methods accept arrays of `movies`, `shows`, and `episodes`. Each of these top level array elements should themselves be an array of standard `movie`, `show`, or `episode` objects. Full examples are in the intro section called **Standard Media Objects**. Keep in mind that `episode` objects really only need the `ids` so it can find an exact match. This is useful for absolute ordered shows. Some methods also have optional metadata you can attach, so check the docs for each specific method.\n\nMedia objects will be matched by ID first, then fall back to title and year. IDs will be matched in this order `trakt`, `imdb`, `tmdb`, `tvdb`, and `slug`. If nothing is found, it will match on the `title` and `year`. If still nothing, it would use just the `title` (or `name` for people) and find the most current object that exists.\n\n### Watched History Sync\n\nThis is a 2 way sync that will get items from trakt to sync locally, plus find anything new and sync back to trakt. Perform this sync on startup or at set intervals (i.e. once every day) to keep everything in sync. *This will only send data to trakt and not remove it.*\n\n### Collection Sync\n\nIt's very handy to have a snapshot on trakt of everything you have available to watch locally. Syncing your local connection will do just that. *This will only send data to trakt and not remove it.*\n\n### Clean Collection\n\nCleaning a collection involves comparing the trakt collection to what exists locally. This will remove items from the trakt collection if they don't exist locally anymore. You should make this clear to the user that data might be removed from trakt.","name":"Sync"},{"description":"User's with public data will return info with all GET methods. Private user's (including yourself) require valid OAuth and a friend relationship to return data.\n\n### Username vs. Slug\n\nAll `users` methods should use the `slug` to identify the user. The `slug` is a URL safe and globally unique version of the `username`.\n\n### Special ID for the OAuth user\n\nIf you send valid OAuth, you can use `me` to identify the OAuth user instead of needing their actual slug. You can of course still use their actual slug, it's up to you.\n\n### Extra Headers\n\nIf valid OAuth is sent, additional headers will be sent to better determine it is a data permissions issue (they aren't friends) and not bad OAuth. For example, you might try and access a private user's list you aren't friends with. This will return a `401` HTTP status code and the additional headers. This means the OAuth is valid, but authorization ultimately failed because there is no friend relationship.\n\n| Header | Value |\n|---|---|\n| `X-Private-User` | `true` or `false` |\n\n### Creating New Users\n\nSince the API uses OAuth, users can create a new account during that flow if they need to. As far as your app is concerned, you'll still receive OAuth tokens no matter if they sign in with an existing account or create a new one.","name":"Users"}],"paths":{"/calendars/all/dvd/{start_date}/{days}":{"get":{"description":"#### &#10024; Extended Info &#127898; Filters\n\nReturns all movies with a DVD release date during the time period specified.","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.225Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"movie":{"ids":{"imdb":"tt2015381","slug":"guardians-of-the-galaxy-2014","tmdb":118340,"trakt":28},"title":"Guardians of the Galaxy","year":2014},"released":"2025-06-15T13:49:02.225Z"},{"movie":{"ids":{"imdb":"tt2473602","slug":"get-on-up-2014","tmdb":239566,"trakt":29},"title":"Get On Up","year":2014},"released":"2025-06-15T13:49:02.225Z"},{"movie":{"ids":{"imdb":"tt1291150","slug":"teenage-mutant-ninja-turtles-2014","tmdb":98566,"trakt":30},"title":"Teenage Mutant Ninja Turtles","year":2014},"released":"2025-06-15T13:49:02.225Z"}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"summary":"Get DVD releases","tags":["Calendars"]}},"/calendars/all/movies/{start_date}/{days}":{"get":{"description":"#### &#10024; Extended Info &#127898; Filters\n\nReturns all movies with a release date during the time period specified.","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.225Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"movie":{"ids":{"imdb":"tt2015381","slug":"guardians-of-the-galaxy-2014","tmdb":118340,"trakt":28},"title":"Guardians of the Galaxy","year":2014},"released":"2025-06-15T13:49:02.225Z"},{"movie":{"ids":{"imdb":"tt2473602","slug":"get-on-up-2014","tmdb":239566,"trakt":29},"title":"Get On Up","year":2014},"released":"2025-06-15T13:49:02.225Z"},{"movie":{"ids":{"imdb":"tt1291150","slug":"teenage-mutant-ninja-turtles-2014","tmdb":98566,"trakt":30},"title":"Teenage Mutant Ninja Turtles","year":2014},"released":"2025-06-15T13:49:02.225Z"}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"summary":"Get movies","tags":["Calendars"]}},"/calendars/all/shows/new/{start_date}/{days}":{"get":{"description":"#### &#10024; Extended Info &#127898; Filters\n\nReturns all new show premieres (season 1, episode 1) airing during the time period specified.","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.225Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3203968","tmdb":983732,"trakt":497,"tvdb":null},"number":1,"season":1,"title":"Pilot"},"first_aired":"2025-06-15T13:49:02.225Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"summary":"Get new shows","tags":["Calendars"]}},"/calendars/all/shows/premieres/{start_date}/{days}":{"get":{"description":"#### &#10024; Extended Info &#127898; Filters\n\nReturns all show premieres (any season, episode 1) airing during the time period specified.","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.225Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3203968","tmdb":983732,"trakt":497,"tvdb":null},"number":1,"season":1,"title":"Pilot"},"first_aired":"2025-06-15T13:49:02.225Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}},{"episode":{"ids":{"imdb":"","tmdb":975949,"trakt":163,"tvdb":null},"number":1,"season":5,"title":"5x1"},"first_aired":"2025-06-15T13:49:02.225Z","show":{"ids":{"imdb":"tt1520211","slug":"the-walking-dead","tmdb":1402,"trakt":2,"tvdb":153021},"title":"The Walking Dead","year":2010}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"summary":"Get season premieres","tags":["Calendars"]}},"/calendars/all/shows/{start_date}/{days}":{"get":{"description":"#### &#10024; Extended Info &#127898; Filters\n\nReturns all shows airing during the time period specified.","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3500614","tmdb":988123,"trakt":443,"tvdb":4851180},"number":4,"season":7,"title":"Death is Not the End"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt0844441","slug":"true-blood","tmdb":10545,"trakt":5,"tvdb":82283},"title":"True Blood","year":2008}},{"episode":{"ids":{"imdb":"tt3631218","tmdb":988346,"trakt":499,"tvdb":4854797},"number":3,"season":1,"title":"Two Boats and a Helicopter"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}},{"episode":{"ids":{"imdb":"tt3500616","tmdb":988124,"trakt":444,"tvdb":4851181},"number":5,"season":7,"title":"Return to Oz"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt0844441","slug":"true-blood","tmdb":10545,"trakt":5,"tvdb":82283},"title":"True Blood","year":2008}},{"episode":{"ids":{"imdb":"tt3594942","tmdb":988347,"trakt":500,"tvdb":4854798},"number":4,"season":1,"title":"B.J. and the A.C."},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"summary":"Get shows","tags":["Calendars"]}},"/calendars/my/dvd/{start_date}/{days}":{"get":{"description":"#### &#128274; OAuth Required &#10024; Extended Info &#127898; Filters\n\nReturns all movies with a DVD release date during the time period specified.","operationId":"Get DVD releases","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"movie":{"ids":{"imdb":"tt2015381","slug":"guardians-of-the-galaxy-2014","tmdb":118340,"trakt":28},"title":"Guardians of the Galaxy","year":2014},"released":"2025-06-15T13:49:02.226Z"},{"movie":{"ids":{"imdb":"tt2473602","slug":"get-on-up-2014","tmdb":239566,"trakt":29},"title":"Get On Up","year":2014},"released":"2025-06-15T13:49:02.226Z"},{"movie":{"ids":{"imdb":"tt1291150","slug":"teenage-mutant-ninja-turtles-2014","tmdb":98566,"trakt":30},"title":"Teenage Mutant Ninja Turtles","year":2014},"released":"2025-06-15T13:49:02.226Z"}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"security":[{"oauth2":[]}],"summary":"Get DVD releases","tags":["Calendars"]}},"/calendars/my/movies/{start_date}/{days}":{"get":{"description":"#### &#128274; OAuth Required &#10024; Extended Info &#127898; Filters\n\nReturns all movies with a release date during the time period specified.","operationId":"Get movies","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"movie":{"ids":{"imdb":"tt2015381","slug":"guardians-of-the-galaxy-2014","tmdb":118340,"trakt":28},"title":"Guardians of the Galaxy","year":2014},"released":"2025-06-15T13:49:02.226Z"},{"movie":{"ids":{"imdb":"tt2473602","slug":"get-on-up-2014","tmdb":239566,"trakt":29},"title":"Get On Up","year":2014},"released":"2025-06-15T13:49:02.226Z"},{"movie":{"ids":{"imdb":"tt1291150","slug":"teenage-mutant-ninja-turtles-2014","tmdb":98566,"trakt":30},"title":"Teenage Mutant Ninja Turtles","year":2014},"released":"2025-06-15T13:49:02.226Z"}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"security":[{"oauth2":[]}],"summary":"Get movies","tags":["Calendars"]}},"/calendars/my/shows/new/{start_date}/{days}":{"get":{"description":"#### &#128274; OAuth Required &#10024; Extended Info &#127898; Filters\n\nReturns all new show premieres (season 1, episode 1) airing during the time period specified.","operationId":"Get new shows","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3203968","tmdb":983732,"trakt":497,"tvdb":null},"number":1,"season":1,"title":"Pilot"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"security":[{"oauth2":[]}],"summary":"Get new shows","tags":["Calendars"]}},"/calendars/my/shows/premieres/{start_date}/{days}":{"get":{"description":"#### &#128274; OAuth Required &#10024; Extended Info &#127898; Filters\n\nReturns all show premieres (any season, episode 1) airing during the time period specified.","operationId":"Get season premieres","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3203968","tmdb":983732,"trakt":497,"tvdb":null},"number":1,"season":1,"title":"Pilot"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}},{"episode":{"ids":{"imdb":"","tmdb":975949,"trakt":163,"tvdb":null},"number":1,"season":5,"title":"5x1"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt1520211","slug":"the-walking-dead","tmdb":1402,"trakt":2,"tvdb":153021},"title":"The Walking Dead","year":2010}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"security":[{"oauth2":[]}],"summary":"Get season premieres","tags":["Calendars"]}},"/calendars/my/shows/{start_date}/{days}":{"get":{"description":"#### &#128274; OAuth Required &#10024; Extended Info &#127898; Filters\n\nReturns all shows airing during the time period specified.","operationId":"Get shows","parameters":[{"description":"Start the calendar on this date.","example":"2025-06-15T13:49:02.226Z","in":"path","name":"start_date","required":true,"schema":{"type":"string"}},{"description":"Number of days to display.","example":"7","in":"path","name":"days","required":true,"schema":{"type":"integer"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"episode":{"ids":{"imdb":"tt3500614","tmdb":988123,"trakt":443,"tvdb":4851180},"number":4,"season":7,"title":"Death is Not the End"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt0844441","slug":"true-blood","tmdb":10545,"trakt":5,"tvdb":82283},"title":"True Blood","year":2008}},{"episode":{"ids":{"imdb":"tt3631218","tmdb":988346,"trakt":499,"tvdb":4854797},"number":3,"season":1,"title":"Two Boats and a Helicopter"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}},{"episode":{"ids":{"imdb":"tt3500616","tmdb":988124,"trakt":444,"tvdb":4851181},"number":5,"season":7,"title":"Return to Oz"},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt0844441","slug":"true-blood","tmdb":10545,"trakt":5,"tvdb":82283},"title":"True Blood","year":2008}},{"episode":{"ids":{"imdb":"tt3594942","tmdb":988347,"trakt":500,"tvdb":4854798},"number":4,"season":1,"title":"B.J. and the A.C."},"first_aired":"2025-06-15T13:49:02.226Z","show":{"ids":{"imdb":"tt2699128","slug":"the-leftovers","tmdb":54344,"trakt":7,"tvdb":269689},"title":"The Leftovers","year":2014}}]}}}},"description":"OK","headers":{"X-End-Date":{"schema":{"type":"string"}},"X-Start-Date":{"schema":{"type":"string"}}}}},"security":[{"oauth2":[]}],"summary":"Get shows","tags":["Calendars"]}},"/certifications/{type}":{"get":{"description":"Get a list of all certifications, including names, slugs, and descriptions.","operationId":"Get certifications","parameters":[{"description":"","example":"movies","in":"path","name":"type","required":true,"schema":{"enum":["movies","shows"],"type":"string"}},{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"us":[{"description":"All Ages","name":"G","slug":"g"},{"description":"Parental Guidance Suggested","name":"PG","slug":"pg"},{"description":"Parents Strongly Cautioned - Ages 13+ Recommended","name":"PG-13","slug":"pg-13"},{"description":"Mature Audiences - Ages 17+ Recommended","name":"R","slug":"r"},{"description":"Not Rated","name":"Not Rated","slug":"nr"}]}}}}},"description":"OK","headers":{}}},"summary":"Get certifications","tags":["Certifications"]}},"/checkin":{"delete":{"description":"#### &#128274; OAuth Required\n\nRemoves any active checkins, no need to provide a specific item.","operationId":"Delete any active checkins","parameters":[{"description":"e.g. 2","example":"2","in":"header","name":"trakt-api-version","required":false,"schema":{"type":"string"}},{"description":"e.g. [client_id]","example":"[client_id]","in":"header","name":"trakt-api-key","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content","headers":{}}},"security":[{"oauth2":[]}],"summary":"Delete any active checkins","tags":["Checkin"]},"post":{"description":"#### &#128274; OAuth Required\n\nCheck 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 t