### Example where Query Parameter
Source: https://api-docs.letterboxd.com/index
Provides an example of the 'where' query parameter, which accepts an array of FilmWhereClause values to filter films based on specific criteria like 'Watched' or 'Released'.
```http
GET /films?where=Watched&where=Released
```
--------------------------------
### Decade Filtering Example (Query Parameter)
Source: https://api-docs.letterboxd.com/index
Shows an example of filtering films by a specific decade. The 'decade' parameter accepts the starting year of the decade (which must end in '0').
```text
1990
```
--------------------------------
### Decade Query Example
Source: https://api-docs.letterboxd.com/index
Shows how to filter films by specifying the starting year of a decade. The year must end in '0'.
```url
decade=1990
```
--------------------------------
### Year Query Example
Source: https://api-docs.letterboxd.com/index
Illustrates how to filter films by a specific release year.
```url
year=1994
```
--------------------------------
### GET /films/film-services
Source: https://api-docs.letterboxd.com/index
Retrieves a list of services supported by the /films endpoint.
```APIDOC
## GET /films/film-services
### Description
Get a list of services supported by the /films endpoint. Services are returned in logical order. Some services (including ‘My Services’ options) are only available to paying members, so results will vary based on the authenticated member’s status.
### Method
GET
### Endpoint
/films/film-services
### Response
#### Success Response (200)
- **FilmServicesResponse** - An object containing a list of supported film services.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### GET /member/{id}/activity
Source: https://api-docs.letterboxd.com/index
Fetches a paginated list of activities for a given member.
```APIDOC
## GET /member/{id}/activity
### Description
A cursored window over the activity for a member. Use the `next` cursor to move through the list.
### Method
GET
### Endpoint
/member/{id}/activity
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the member.
#### Query Parameters
- **cursor** (string) - Optional - The cursor for the next page of results.
### Response
#### Success Response (200)
- Returns a list of activities and a `next` cursor for pagination.
#### Response Example (200)
```json
{
"items": [
{
"type": "like",
"timestamp": "2023-10-27T10:00:00Z"
},
{
"type": "review",
"timestamp": "2023-10-26T15:30:00Z"
}
],
"next": "cursor_string_for_next_page"
}
```
```
--------------------------------
### GET /me
Source: https://api-docs.letterboxd.com/index
Retrieves details about the currently authenticated member.
```APIDOC
## GET /me
### Description
Get details about the authenticated member.
### Method
GET
### Endpoint
`/me`
### Response
#### Success Response (200)
- **MemberAccount** (object) - Success.
```
--------------------------------
### Example year Query Parameter
Source: https://api-docs.letterboxd.com/index
Shows how to use the 'year' query parameter to filter films released in a particular year.
```http
GET /films?year=1994
```
--------------------------------
### Year Filtering Example (Query Parameter)
Source: https://api-docs.letterboxd.com/index
Illustrates how to filter films released in a particular year using the 'year' query parameter.
```text
1994
```
--------------------------------
### GET /lists
Source: https://api-docs.letterboxd.com/index
Retrieves a paginated window of lists, allowing traversal through the available lists using cursors.
```APIDOC
## GET /lists
### Description
A cursored window over a list of lists. Use the `next` cursor to move through the list.
### Method
GET
### Endpoint
/lists
### Parameters
#### Path Parameters
N/A
#### Query Parameters
- **includeTags** (string[]) - Optional - Specify a list of tag codes to limit the returned films to those with all the specified tags.
- **excludeTags** (string[]) - Optional - Specify a list of tag codes to limit the returned films to those with none of the specified tags.
- **sort** (enum) - Optional - The order in which the entries should be returned. Defaults to `ListRanking`.
- **excludeMemberFilmRelationships** (boolean) - Optional - Set to `true` to exclude detailed member/film relationship information from the response.
#### Request Body
N/A
### Request Example
N/A
### Response
#### Success Response (200)
- **ListEntriesResponse** (object) - Success response object.
#### Error Response (400)
- **ErrorResponse** (object) - Bad request.
#### Error Response (403)
- **ErrorResponse** (object) - The authenticated member is not authorized to view this list.
#### Error Response (404)
- **ErrorResponse** (object) - No list matches the specified ID.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### GET /films/availability-types
Source: https://api-docs.letterboxd.com/index
Retrieves a list of availability types supported by the /films endpoint.
```APIDOC
## GET /films/availability-types
### Description
Get a list of availability types supported by the /films endpoint. Availability types are returned in alphabetical order.
### Method
GET
### Endpoint
/films/availability-types
### Response
#### Success Response (200)
- **AvailabilityTypesResponse** - An object containing a list of supported availability types.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### GET /lists
Source: https://api-docs.letterboxd.com/index
Retrieves lists based on various query parameters, supporting filtering, sorting, and pagination.
```APIDOC
## GET /lists
### Description
Retrieves lists based on various query parameters, supporting filtering, sorting, and pagination.
### Method
GET
### Endpoint
/lists
### Parameters
#### Query Parameters
- **cursor** (string) - Optional - The pagination cursor.
- **perPage** (int32) - Optional - The number of items to include per page (default is `20`, maximum is `100`).
- **sort** (enum) - Optional - Defaults to `Date`. Possible values: `Date`, `WhenLiked`, `WhenPublishedLatestFirst`, `WhenPublishedEarliestFirst`, `WhenCreatedLatestFirst`, `WhenCreatedEarliestFirst`, `WhenAccessedLatestFirst`, `WhenAccessedEarliestFirst`, `ListName`, `ListPopularity`, `ListPopularityThisWeek`, `ListPopularityThisMonth`, `ListPopularityThisYear`, `ListPopularityWithFriends`, `ListPopularityWithFriendsThisWeek`, `ListPopularityWithFriendsThisMonth`, `ListPopularityWithFriendsThisYear`.
- **film** (string) - Optional - Specify the LID of a film to return lists that include the film.
- **clonedFrom** (string) - Optional - Specify the LID of a list to return lists that were cloned from the list.
- **tag** (string) - DEPRECATED - Use `tagCode` instead.
- **tagCode** (string) - Optional - Specify a tag code to limit the returned lists to those tagged accordingly.
- **tagger** (string) - Optional - Must be used with `tagCode` or `includeTags`. Specify the LID of a member to focus the tag filter on the member.
- **includeTaggerFriends** (IncludeFriends) - Optional - Must be used in conjunction with `tagger`. Defaults to `None`. Use `Only` to filter tags set by the member’s friends, and `All` to filter tags set by both the member and their friends.
- **includeTags** (string[]) - Optional - Specify a list of tag codes to limit the returned lists to those with all the specified tags.
- **excludeTags** (string[]) - Optional - Specify a list of tag codes to limit the returned lists to those with none of the specified tags.
- **member** (string) - Optional - Specify the LID of a member to return lists that are owned or liked by the member.
- **memberRelationship** (ListMemberRelationship) - Optional - Must be used in conjunction with `member`. Defaults to `Owner`. Use `Liked` or `Accessed`.
- **includeFriends** (IncludeFriends) - Optional - Must be used in conjunction with `member`. Defaults to `None`. Use `Only` or `All`.
- **where** (ListWhereClause[]) - Optional - Specify `Clean`, `Published`, or `NotPublished`.
- **filter** (array of enum) - Optional - Specify `NoDuplicateMembers`.
- **filmsOfNote** (string[]) - Optional - Specify the LIDs of any film(s) to see the status for in respect of the returned list(s).
- **excludeMemberFilmRelationships** (boolean) - Optional - Set to `true` to exclude detailed member/film relationship information from the response.
### Request Example
```
?cursor=abc&perPage=50&sort=ListPopularity&film=tt0111161
```
### Response
#### Success Response (200)
- **ListsResponse** (object) - Contains a list of lists matching the query parameters.
#### Response Example
{
"example": "ListsResponse"
}
#### Error Responses
- **400** - Bad request
- **403** - The authenticated member does not own the resource (when requesting `where=NotPublished`).
- **404** - No film, member, tag or list matches the specified ID.
```
--------------------------------
### Get List Entries
Source: https://api-docs.letterboxd.com/index
Retrieve entries associated with a specific list.
```APIDOC
## GET /list/{id}/entries
### Description
Get entries for a list by ID.
### Method
GET
### Endpoint
/list/{id}/entries
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the list.
### Response
#### Success Response
- **(Response details not provided in input)**
#### Error Response
- **(Error details not provided in input)**
#### Response Example
```json
{
"example": "(Response example not provided in input)"
}
```
```
--------------------------------
### GET /films/languages
Source: https://api-docs.letterboxd.com/index
Retrieves a list of languages supported by the /films endpoint.
```APIDOC
## GET /films/languages
### Description
Get a list of languages supported by the /films endpoint. Languages are returned in alphabetical order.
### Method
GET
### Endpoint
/films/languages
### Response
#### Success Response (200)
- **LanguagesResponse** - An object containing a list of supported languages.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### GET /films/genres
Source: https://api-docs.letterboxd.com/index
Retrieves a list of genres supported by the /films endpoint.
```APIDOC
## GET /films/genres
### Description
Get a list of genres supported by the /films endpoint. Genres are returned in alphabetical order.
### Method
GET
### Endpoint
/films/genres
### Response
#### Success Response (200)
- **GenresResponse** - An object containing a list of supported genres.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### GET /lists/topics
Source: https://api-docs.letterboxd.com/index
Retrieves a list of featured topics and lists, suitable for display in the Browse tab of Letterboxd applications.
```APIDOC
## GET /lists/topics
### Description
Get a list of featured topics/lists (e.g. for display in the Browse tab of our apps).
### Method
GET
### Endpoint
/lists/topics
### Parameters
None
### Request Example
None
### Response
#### Success Response (200)
- **TopicsResponse** (object) - The response will contain a list of topics.
#### Response Example
{
"example": "TopicsResponse"
}
```
--------------------------------
### GET /films
Source: https://api-docs.letterboxd.com/index
Retrieves a paginated list of films. Supports fetching relationship data for the signed-in member and an optional specified member.
```APIDOC
## GET /films
### Description
A cursored window over the list of films. Use the `next` cursor to move through the list. The response will include the film relationships for the signed-in member and the member indicated by the `member` LID if specified.
### Method
GET
### Endpoint
/films
### Parameters
#### Query Parameters
- **member** (string) - Optional - The LID of the member whose film relationships should be included.
- **next** (string) - Optional - The cursor for the next page of results.
### Request Example
```json
{
"example": ""
}
```
### Response
#### Success Response (200)
- **films** (array) - A list of film objects.
- **next** (string) - The cursor for the next page of results.
#### Response Example
```json
{
"example": "{\n \"films\": [\n {\n \"id\": \"tt0111161\",\n \"name\": \"The Shawshank Redemption\",\n \"year\": 1994,\n \"url\": \"/film/the-shawshank-redemption/\",\n \"posterLarge\": \"https://images.letterboxd.com/api/0/films/1130/poster.jpg\",\n \"posterThumb\": \"https://images.letterboxd.com/api/0/films/1130/poster.jpg\",\n \"myRating\": 5,\n \"myReviewCount\": 1,\n \"myDateRanked\": \"2023-01-15T10:00:00Z\"\n }\n ],\n \"next\": \"some_cursor_string\"\n}"
}
```
```
--------------------------------
### GET /search
Source: https://api-docs.letterboxd.com/index
Performs a search across various Letterboxd content based on the provided query. Supports different search methods and filtering options.
```APIDOC
## GET /search
### Description
Search across Letterboxd content.
### Method
GET
### Endpoint
/search
### Parameters
#### Query Parameters
- **cursor** (string) - Optional - The pagination cursor.
- **perPage** (int32) - Optional - The number of items to include per page (default is `20`, maximum is `100`).
- **input** (string) - Required - The word, partial word or phrase to search for.
- **searchMethod** (enum ∈ { FullText, Autocomplete, NamesAndKeywords }) - Optional - The type of search to perform. Defaults to `FullText`.
- **include** (SearchResultType[]) - Optional - The types of results to search for. Default to all SearchResultTypes.
- **contributionType** (ContributionType) - Optional - The type of contributor to search for.
- **adult** (boolean) - Optional - Whether to include adult content in search results. Default to `false`.
- **excludeMemberFilmRelationships** (boolean) - Optional - Set to `true` to exclude detailed member/film relationship information.
### Response
#### Success Response (200)
- **SearchResponse** (object) - The search results.
#### Error Response (400)
- **ErrorResponse** (object) - Search failed.
```
--------------------------------
### GET /member/{id}/list-tags-2
Source: https://api-docs.letterboxd.com/index
Retrieves the list of a member's tags or those matching an optional search prefix. Tags are ordered by relevance.
```APIDOC
## GET /member/{id}/list-tags-2
### Description
Get the list of a member’s tags, or those that match an optional search prefix. The tags will be returned in order of relevance. All tags previously used by the member will be returned if no search prefix is specified.
### Method
GET
### Endpoint
/member/{id}/list-tags-2
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the member.
#### Query Parameters
- **input** (string) - Optional - A case-insensitive prefix match. E.g. “pro” will match “pro”, “project” and “Professional”. An empty `input` will match all tags.
### Response
#### Success Response (200)
- **MemberTagsResponse** (object) - Contains the member's tag information.
#### Error Response (404)
- **ErrorResponse** (object) - No member matches the specified ID, or the member has opted out of appearing in the API.
### Response Example
```json
{
"example": "MemberTagsResponse JSON"
}
```
```
--------------------------------
### List Creation API
Source: https://api-docs.letterboxd.com/index
Handles the creation of new lists, allowing users to specify properties like name, description, privacy, and sharing policies.
```APIDOC
## POST /lists
### Description
Creates a new list for the authenticated user. You can specify various properties such as the list's name, description, whether it's published, ranked, and its sharing and comment policies.
### Method
POST
### Endpoint
/lists
### Parameters
#### Request Body
- **published** (boolean) - Required - Set to `true` if the owner has elected to publish the list for other members to see.
- **name** (string) - Required - The name of the list.
- **commentPolicy** (CommentPolicy) - Optional - The policy determining who can post comments to the list.
- **sharePolicy** (SharePolicy) - Optional - The policy determining who has access to the list.
- **ranked** (boolean) - Required - Set to `true` if the owner has elected to make this a ranked list.
- **description** (string) - Optional - The list description in LBML. May contain HTML tags like `
`, ``, ``, ``, ``, ``, ``. Max size is 100,000 characters.
- **clonedFrom** (string) - Deprecated. Use `clonedList` instead. Only supported for paying members.
- **clonedList** (string) - Optional - The LID of a list to clone entries from. Only supported for paying members.
- **share** (SharingServiceForLists[]) - Deprecated. No longer supported by Facebook.
- **tags** (string[]) - Optional - The tags for the list.
- **entries** (ListUpdateEntryForm[]) - Optional - The update actions used to build the list. If `clonedList` is set, entries from that list are added first, then these updates are applied.
### Request Example
```json
{
"published": true,
"name": "My Favorite Sci-Fi Films",
"ranked": true,
"description": "A curated list of the best sci-fi movies.",
"tags": ["sci-fi", "movies"]
}
```
### Response
#### Success Response (200)
- **data** (List) - The response object containing the created list details.
- **messages** (ListCreateMessage[]) - A list of messages the API client should show to the user.
#### Response Example
```json
{
"data": {
"lid": "l123456789",
"name": "My Favorite Sci-Fi Films",
"published": true,
"ranked": true,
"description": "A curated list of the best sci-fi movies.",
"tags": ["sci-fi", "movies"]
},
"messages": [
{
"type": "Success",
"code": "ListCreated",
"title": "List created successfully."
}
]
}
```
```
--------------------------------
### Get Film Details - GET /film/{id}
Source: https://api-docs.letterboxd.com/index
Fetches detailed information about a specific film using its LID or TMDB ID. An optional member ID can be provided to apply custom poster settings associated with that member's profile. This endpoint is secured with OAuth2.
```HTTP
GET /film/tmdb:11?member=MEMBER_LID
```
--------------------------------
### Register Member API
Source: https://api-docs.letterboxd.com/index
Create a new member account with the Letterboxd network.
```APIDOC
## POST /members/register
### Description
Create a new account. Use this endpoint to register a new member account with the Letterboxd network. Usernames must be between 2 and 15 characters long and may only contain upper or lowercase letters, numbers or the underscore (`_`) character.
### Method
POST
### Endpoint
/members/register
### Parameters
None directly in the endpoint path or query string. Request body will contain user details.
### Request Body
- **RegisterRequest** (object) - Required - The request body containing user registration details.
- **username** (string) - Required - Username for the new account. Must be 2-15 characters long, alphanumeric or underscore.
- **email** (string) - Required - Email address for the new account.
- **password** (string) - Required - Password for the new account.
### Request Example
```json
{
"username": "new_user_123",
"email": "newuser@example.com",
"password": "SecurePassword123!"
}
```
### Response
#### Success Response (201)
- **Member** (object) - Details of the newly created member.
#### Response Example
```json
{
"id": "member_lid_12345",
"username": "new_user_123",
"email": "newuser@example.com"
}
```
#### Error Response (400, 409)
- **ErrorResponse** (object) - Error details, e.g., if username or email is already taken.
```
--------------------------------
### Get Member Statistics
Source: https://api-docs.letterboxd.com/index
Retrieve detailed statistics for a specific member.
```APIDOC
## GET /members/{member_id}/statistics
### Description
Retrieves statistics for a given member, including counts of likes, watches, ratings, and more.
### Method
GET
### Endpoint
/members/{member_id}/statistics
### Parameters
#### Path Parameters
- **member_id** (string) - Required - The unique identifier of the member.
### Response
#### Success Response (200)
- **member** (MemberIdentifier) - The member for which statistics were requested.
- **counts** (MemberStatisticsCounts) - The number of watches, ratings, likes, etc. for the member.
- **ratingsHistogram** (RatingsHistogramBar[]) - A summary of the number of ratings the member has made for each increment between `0.5` and `5.0`.
- **yearsInReview** (int32[]) - A list of years the member has year-in-review pages for. Only supported for paying members.
#### Response Example
```json
{
"member": {
"id": "user123",
"username": "john_doe"
},
"counts": {
"filmLikes": 150,
"listLikes": 30,
"reviewLikes": 75,
"storyLikes": 10,
"watches": 500,
"ratings": 450,
"reviews": 100,
"diaryEntries": 200,
"diaryEntriesThisYear": 50,
"filmsInDiaryThisYear": 40,
"filmsInDiaryLastYear": 35,
"watchlist": 120,
"lists": 25,
"unpublishedLists": 5,
"accessedSharedLists": 15,
"followers": 300,
"following": 200,
"listTags": 10,
"filmTags": 50
},
"ratingsHistogram": [
{"increment": 1.0, "count": 10},
{"increment": 1.5, "count": 5},
{"increment": 2.0, "count": 20},
{"increment": 2.5, "count": 15},
{"increment": 3.0, "count": 50},
{"increment": 3.5, "count": 40},
{"increment": 4.0, "count": 60},
{"increment": 4.5, "count": 25},
{"increment": 5.0, "count": 75}
],
"yearsInReview": [2020, 2021, 2022, 2023]
}
```
```
--------------------------------
### POST /lists
Source: https://api-docs.letterboxd.com/index
Create a new list. This endpoint enables users to create their own lists to organize films.
```APIDOC
## POST /lists
### Description
Create a list.
### Method
POST
### Endpoint
`/lists`
### Request Body
* **ListCreationRequest** (object) - Required - The request body for creating a list.
### Response
#### Success Response (200)
- **ListCreateResponse** (object) - The response object for list creation.
```
--------------------------------
### RegisterRequest Object
Source: https://api-docs.letterboxd.com/index
Request object for registering a new user account.
```APIDOC
## RegisterRequest Object
### Description
This object is used to provide the necessary information for creating a new Letterboxd user account.
### Properties
- **username** (string) - Optional - The desired username for the new account. Use the `/auth/username-check` endpoint to verify availability.
- **password** (string) - Optional - The password for the new account.
- **emailAddress** (string) - Optional - The email address for the new account.
- **captchaResponse** (string) - Optional - The response value from a CAPTCHA challenge.
- **acceptTermsOfUse** (boolean) - Optional - Must be set to `true` to confirm the user is at least 16 years old and agrees to Letterboxd's Terms of Use.
```
--------------------------------
### API Request Structure
Source: https://api-docs.letterboxd.com/index
Details on how to structure requests to the Letterboxd API, including base URL, HTTP methods, and parameter handling.
```APIDOC
## General API Usage
### Base URL
All API endpoints are accessed via `https://api.letterboxd.com/api/v0/`.
### HTTP Methods
Endpoints should be called using the specified HTTP method: GET, POST, PATCH, or DELETE.
### Parameters
- **GET Requests**: Path parameters are part of the URL. Other parameters should be included as query parameters.
- **POST, PATCH, DELETE Requests**: Required parameters should be sent in the JSON request body.
- **PATCH Requests**: Only include parameters that need to be changed. You can simulate PATCH with `X-HTTP-Method-Override: PATCH` header if your client does not support it.
### Authentication
Requests requiring OAuth2 security must include an `Authorization: Bearer [TOKEN]` header.
### Data Format
All responses are in JSON format. HTTP status codes indicate success or failure.
```
--------------------------------
### GET /films/countries
Source: https://api-docs.letterboxd.com/index
Retrieves a list of countries supported by the /films endpoint.
```APIDOC
## GET /films/countries
### Description
Get a list of countries supported by the /films endpoint. Countries are returned in alphabetical order.
### Method
GET
### Endpoint
/films/countries
### Response
#### Success Response (200)
- **CountriesResponse** - An object containing a list of supported countries.
#### Response Example
```json
{
"example": "response body"
}
```
```
--------------------------------
### Activity Response
Source: https://api-docs.letterboxd.com/index
Response object for activity feeds, including pagination and a list of items.
```APIDOC
## ActivityResponse
### Description
Contains a list of activities and a cursor for pagination.
### Method
N/A (Data Model)
### Endpoint
N/A (Data Model)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
- **next** (string) - The cursor to the next page of results.
- **items** (AbstractActivity[]) - Required - The list of activity items.
- **itemCount** (int32 number) - The total number of items.
### Request Example
```json
{
"next": "cursor_abc123",
"items": [
{ "type": "ReviewActivity", "reviewId": "rev_xyz789" },
{ "type": "FollowActivity", "followedUsername": "another_user" }
],
"itemCount": 2
}
```
### Response
#### Success Response (200)
- **next** (string) - The cursor to the next page of results.
- **items** (AbstractActivity[]) - The list of activity items.
- **itemCount** (int32 number) - The total number of items.
#### Response Example
```json
{
"next": "cursor_abc123",
"items": [
{ "type": "ReviewActivity", "reviewId": "rev_xyz789" },
{ "type": "FollowActivity", "followedUsername": "another_user" }
],
"itemCount": 2
}
```
```
--------------------------------
### GET /me/check-tag
Source: https://api-docs.letterboxd.com/index
Checks if a tag is currently being merged, which is relevant before performing updates.
```APIDOC
## GET /me/check-tag
### Description
Check whether a tag is being merged before update.
### Method
GET
### Endpoint
`/me/check-tag`
### Parameters
#### Request Body
- **TagCheckRequest** (object) - Required - The request body for checking a tag.
### Response
#### Success Response (200)
- **TagCheckResponse** (object) - Success
#### Error Response (400)
- **ErrorResponse** (object) - Bad request
#### Error Response (403)
- **ErrorResponse** (object) - The signed-in user does not have permission to mass-edit tags.
```
--------------------------------
### Combined Incoming Activity
Source: https://api-docs.letterboxd.com/index
Represents activities that are incoming to the user, inheriting from AbstractActivity.
```APIDOC
## CombinedIncomingActivity
### Description
Aggregates various incoming activities for a user.
### Method
N/A (Data Model)
### Endpoint
N/A (Data Model)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
(Inherits properties from AbstractActivity)
### Request Example
```json
{
"type": "CombinedIncomingActivity",
"timestamp": "2023-10-27T11:00:00Z"
}
```
### Response
#### Success Response (200)
(Inherits properties from AbstractActivity)
#### Response Example
```json
{
"type": "CombinedIncomingActivity",
"timestamp": "2023-10-27T11:00:00Z"
}
```
```
--------------------------------
### Get List Comments
Source: https://api-docs.letterboxd.com/index
Retrieve comments for a list, with support for pagination and sorting.
```APIDOC
## GET /list/{id}/comments
### Description
A cursored window over the comments for a list. Use the `next` cursor to move through the comments.
### Method
GET
### Endpoint
/list/{id}/comments
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the list.
#### Query Parameters
- **cursor** (string) - Optional - The pagination cursor.
- **perPage** (int32) - Optional - The number of items to include per page (default is `20`, maximum is `100`).
- **sort** (enum) - Optional - Defaults to `Date`. Possible values: `Date`, `DateLatestFirst`, `Updates`. The `Updates` sort order returns newest content first. Use this to get the most recently posted or edited comments, and pass `includeDeletions=true` to remain consistent in the case where a comment has been deleted.
- **includeDeletions** (boolean) - Optional - Use this to discover any comments that were deleted.
### Response
#### Success Response (200)
- **ListCommentsResponse** - The comments for the list.
#### Error Response (404)
- **No list matches the specified ID** - Indicates no list was found with the given ID.
#### Response Example
```json
{
"example": "ListCommentsResponse"
}
```
```
--------------------------------
### ListEntrySummary Model
Source: https://api-docs.letterboxd.com/index
Provides a summary of a list entry, including its rank and the associated film.
```APIDOC
## ListEntrySummary Model
### Description
This model offers a summarized view of a list entry, containing its rank and film details.
### Method
N/A (Data Model)
### Endpoint
N/A (Data Model)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
None
### Response
#### Success Response (200)
- **rank** (int32) - If the list is ranked, this is the entry’s rank in the list, numbered from 1.
- **film** (FilmSummary) - The film for this entry.
#### Response Example
```json
{
"rank": 2,
"film": { ... }
}
```
```
--------------------------------
### Get List Details
Source: https://api-docs.letterboxd.com/index
Retrieve details for a specific list using its ID.
```APIDOC
## GET /list/{id}
### Description
Get details of a list by ID.
### Method
GET
### Endpoint
/list/{id}
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the list.
### Response
#### Success Response (200)
- **List** - The details of the requested list.
#### Error Response (404)
- **No list matches the specified ID** - Indicates no list was found with the given ID.
#### Response Example
```json
{
"example": "List"
}
```
```
--------------------------------
### GET /websites/api-docs_letterboxd
Source: https://api-docs.letterboxd.com/index
Retrieve a list of films based on various filtering criteria.
```APIDOC
## GET /websites/api-docs_letterboxd
### Description
Retrieves a list of films, allowing for extensive filtering based on a wide range of criteria including genres, countries, release dates, service availability, user ratings, and tags.
### Method
GET
### Endpoint
/websites/api-docs_letterboxd
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the film collection.
#### Query Parameters
- **filmId** (string[]) - Query - Specify up to 100 Letterboxd IDs or TMDB IDs prefixed with `tmdb:`, or IMDB IDs prefixed with `imdb:`.
- **genre** (string) - Query - Specify the LID of a genre to limit films to those within the specified genre.
- **similarTo** (string) - Query - Specify the LID of a film to limit films to those similar to the specified film.
- **theme** (string) - Query - Specify the code of a theme to limit films to those within the specified theme.
- **minigenre** (string) - Query - Specify the code of a minigenre to limit films to those within the specified minigenre.
- **nanogenre** (string) - Query - Specify the code of a nanogenre to limit films to those within the specified nanogenre.
- **includeGenre** (string[]) - Query - Specify the LID of up to 100 genres to limit films to those within all of the specified genres.
- **excludeGenre** (string[]) - Query - Specify the LID of up to 100 genres to limit films to those within none of the specified genres.
- **country** (string) - Query - Specify the ISO 3166-1 defined code of the country to limit films to those produced by the specified country.
- **language** (string) - Query - Specify the ISO 639-1 defined code of the language to limit films to those using the specified spoken language.
- **decade** (int32) - Query - Specify the starting year of a decade (must end in `0`) to limit films to those released during the decade.
- **year** (int32) - Query - Specify a year to limit films to those released during that year.
- **service** (string) - Query - Specify the ID of a supported service to limit films to those available from that service.
- **availabilityType** (string[]) - Query - Specify the availability types to limit films to those with those availability types.
- **exclusive** (boolean) - Query - Set to `true` to limit films to those available on only one service.
- **unavailable** (boolean) - Query - Set to `true` to limit films to those not available on any services.
- **includeOwned** (boolean) - Query - Set to `true` to include films that the user owns.
- **negate** (boolean) - Query - Set to `true` to invert the current service filtering options.
- **where** (FilmWhereClause[]) - Query - Specify one or more values to limit the list of films accordingly.
- **memberMinRating** (number) - Query - Allowable values are between `0.5` and `5.0`, with increments of `0.5`. Limits returned films for the member to those with a rating equal to or higher than the specified rating.
- **memberMaxRating** (number) - Query - Allowable values are between `0.5` and `5.0`, with increments of `0.5`. Limits returned films for the member to those with a rating equal to or lower than the specified rating.
- **member** (string) - Query - Specify the LID of a member to limit the returned films according to the value set in `memberRelationship` or to access the `MemberRating*` sort options.
- **memberRelationship** (FilmMemberRelationship) - Query - Must be used in conjunction with `member`. Defaults to `Watched`. Specify the type of relationship to limit the returned films accordingly.
- **includeFriends** (IncludeFriends) - Query - Must be used in conjunction with `member`. Defaults to `None`. Specify whether to include films from the member’s friends.
- **tag** (string) - Query - DEPRECATED. Use `tagCode` instead.
- **tagCode** (string) - Query - Specify a tag code to limit the returned films to those tagged accordingly.
- **tagger** (string) - Query - Must be used with `tagCode` or `includeTags`. Specify the LID of a member to focus the tag filter on the member.
- **includeTaggerFriends** (IncludeFriends) - Query - Must be used in conjunction with `tagger`. Defaults to `None`. Specify whether to include tags set by the member’s friends.
- **includeTags** (string[]) - Query - Specify a list of tag codes to limit the returned films to those with all the specified tags.
- **excludeTags** (string[]) - Query - Specify a list of tag codes to limit the returned films to those with none of the specified tags.
### Request Example
```json
{
"example": "GET /websites/api-docs_letterboxd?filmId=b8wK&filmId=imdb:tt1396484&genre=comedy&decade=1990&year=1994&country=US&language=en&service=netflix&availabilityType=streaming&exclusive=false&unavailable=false&includeOwned=true&negate=false&where=Watched&memberMinRating=3.5&memberMaxRating=4.5&member=memberLID&memberRelationship=Watched&includeFriends=All&tagCode=comedy_tag&tagger=taggerLID&includeTaggerFriends=Only&includeTags=tag1&excludeTags=tag2"
}
```
### Response
#### Success Response (200)
- **films** (array) - A list of film objects matching the criteria.
#### Response Example
```json
{
"films": [
{
"title": "Example Film",
"year": 1992,
"rating": 4.0
}
]
}
```
```
--------------------------------
### Follow Activity API
Source: https://api-docs.letterboxd.com/index
Retrieves a user's follow activity.
```APIDOC
## GET /members/{memberId}/followed
### Description
Retrieves a user's follow activity.
### Method
GET
### Endpoint
/members/{memberId}/followed
### Parameters
#### Path Parameters
- **memberId** (string) - Required - The identifier of the member.
#### Query Parameters
None
#### Request Body
None
### Request Example
None
### Response
#### Success Response (200)
- **followed** (MemberSummary) - A summary of the member that was followed.
#### Response Example
```json
[
{
"followed": {
"id": "member-id-456",
"username": "another_user"
}
}
]
```
```
--------------------------------
### Example filmId Query Parameter
Source: https://api-docs.letterboxd.com/index
Demonstrates how to specify multiple film IDs using the 'filmId' query parameter. This parameter accepts Letterboxd IDs, TMDB IDs (prefixed with 'tmdb:'), or IMDB IDs (prefixed with 'imdb:'). Up to 100 IDs can be provided.
```http
GET /films?filmId=b8wK&filmId=imdb:tt1396484
```
--------------------------------
### GET /member/{id}
Source: https://api-docs.letterboxd.com/index
Retrieves details about a specific member using their unique ID.
```APIDOC
## GET /member/{id}
### Description
Get details about a member by ID.
### Method
GET
### Endpoint
/member/{id}
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the member.
### Response
#### Success Response (200)
- **Member** (object) - Success response containing member details.
#### Error Response (404)
- No member matches the specified ID, or the member has opted out of appearing in the API.
#### Response Example (200)
```json
{
"id": "member123",
"username": "johndoe",
"displayName": "John Doe"
}
```
#### Response Example (404)
```json
{
"error": "Member not found"
}
```
```
--------------------------------
### GET /film/{id}/statistics
Source: https://api-docs.letterboxd.com/index
Fetches statistical data related to a specific film.
```APIDOC
## GET /film/{id}/statistics
### Description
Get statistical data about a film by ID.
### Method
GET
### Endpoint
/film/{id}/statistics
### Parameters
#### Path Parameters
- **id** (string) - Required - The LID of the film.
#### Query Parameters
- **member** (string) - Optional - Specify the LID of a member to return statistics for members followed by that member.
#### Request Body
None
### Request Example
None
### Response
#### Success Response (200)
- **FilmStatistics** (object) - Statistical data for the film.
#### Error Response (404)
- **ErrorResponse** (object) - Returned when no film matches the specified ID.
#### Response Example
```json
{
"example": "FilmStatistics"
}
```
```
--------------------------------
### Create Log Entry
Source: https://api-docs.letterboxd.com/index
This endpoint allows users to create a new log entry. It requires details about the film, and optionally allows for diary information, review text, tags, rating, like status, comment policy, and privacy policy.
```APIDOC
## POST /websites/api-docs_letterboxd/logEntries
### Description
Creates a new log entry for a film.
### Method
POST
### Endpoint
`/websites/api-docs_letterboxd/logEntries`
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
- **filmId** (string) - Required - The film being logged.
- **diaryDetails** (LogEntryCreationRequestDiaryDetails) - Information about this log entry if adding to the member’s diary.
- **review** (LogEntryCreationRequestReview) - Information about the review if adding a review.
- **tags** (string[]) - The tags for the log entry.
- **rating** (number) - Allowable values are between `0.5` and `5.0`, with increments of `0.5`.
- **like** (boolean) - Set to `true` if the member likes the review (via the ‘heart’ icon). A member may not like their own review.
- **commentPolicy** (CommentPolicy) - The policy determining who can post comments to the log entry. `You` in this context refers to the content owner. Use the `commentThreadState` property of the `ListRelationship` to determine the signed-in member’s ability to comment (or not).
- **privacyPolicy** (PrivacyPolicy) - The policy determining who has access to the log entry.
### Request Example
```json
{
"filmId": "film456",
"diaryDetails": {
"diaryDate": "2023-10-27",
"rewatch": false
},
"review": {
"text": "A fantastic film!",
"containsSpoilers": false
},
"tags": ["sci-fi", "action"],
"rating": 5.0,
"like": true,
"privacyPolicy": "public"
}
```
### Response
#### Success Response (201)
- **logEntry** (LogEntry) - The newly created log entry.
#### Response Example
```json
{
"logEntry": {
"id": "logentry789",
"name": "Watched Blade Runner 2049",
"owner": { ... },
"film": { ... },
"diaryDetails": {
"diaryDate": "2023-10-27",
"rewatch": false
},
"review": {
"text": "A fantastic film!",
"containsSpoilers": false
},
"tags2": [ ... ],
"whenCreated": "2023-10-27T12:00:00Z",
"whenUpdated": "2023-10-27T12:00:00Z",
"rating": 5.0,
"like": true,
"commentable": true,
"commentPolicy": { ... },
"links": [ ... ],
"privacyPolicy": { ... }
}
}
```
```
--------------------------------
### Scopes and Permissions
Source: https://api-docs.letterboxd.com/index
Information about API scopes, which are security requirements for accessing endpoints, and how they are managed.
```APIDOC
## Scopes
### Purpose
Scopes are security requirements that must be met to use specific API endpoints. They are tied to an access token.
### Granting Scopes
- **Default Scopes**: Some scopes are automatically granted based on the OAuth2 flow used.
- **Additional Scopes**: For scopes beyond the defaults, they will be presented to the user during the authorization process. Permission is granted if the user agrees.
### Requesting Multiple Scopes
When requesting multiple scopes, provide them as a space- or plus-delimited string (e.g., `profile:modify content:modify` or `profile:modify+content:modify`).
```
--------------------------------
### List Film Collections - GET /film-collections
Source: https://api-docs.letterboxd.com/index
Retrieves a paginated list of film collections. Supports filtering by genre, decade, year, upcoming status, minimum film count, and sorting options. It also allows for including genre information and controlling the number of preview entries per collection. The `countItems` parameter can be used to get the total count of matching collections.
```HTTP
GET /film-collections?genre=LID_OF_GENRE&decade=1990&year=1994&upcoming=true&minFilmCount=50&previewHowMany=5&countItems=true&sort=FilmCollectionName
```