Data Shapes
This page summarizes common structures so endpoint pages can stay focused.
Profile object
Section titled “Profile object”Returned by /profile.
Key fields:
username,displayUsername,nameimage,avatarUrl,bio,locationfavoriteGenres[],themeId,createdAtstatswithentryCount,reviewCount,filmCount,listCount,followerCount,followingCount
Top 4 payload
Section titled “Top 4 payload”Returned by /top4.
categoriesarray with category objects (id,key,supported,items)- Category keys are currently
cinemaandserial - Each item has
slot,mediaType,mediaSource,mediaSourceId,entityId,tmdbId,title,posterPath,releaseYear
Feed item (recent, activity)
Section titled “Feed item (recent, activity)”Both endpoints return FeedItem[].
{ "id": "activity-id", "type": "review", "kind": "review", "createdAt": "2026-01-10T12:00:00.000Z", "actor": { "id": "user-id", "username": "your_username", "displayUsername": null, "image": null, "avatarUrl": null }, "movie": null, "post": null, "review": null, "metadata": { "action": null, "excerpt": null, "targetUsername": null, "rating": null, "rewatch": null, "hasReview": null, "mediaType": null, "containsSpoilers": null, "reviewId": null, "commentId": null, "movieId": null, "postId": null, "postMediaId": null, "postMediaType": null }, "engagement": { "likeCount": 0, "commentCount": 0, "viewerHasLiked": null }}Feed item notes
Section titled “Feed item notes”viewerHasLikedis currentlynullin public feed responses (no viewer context is passed).- Depending on activity type,
movie,post, orreviewcan benull. kindmay be a derived value (for exampleliked_comment,liked_post,commented_post).
Review row (/reviews)
Section titled “Review row (/reviews)”Key fields:
id,content,containsSpoilers,createdAt,updatedAt- media fields:
tmdbId,title,posterPath,releaseYear,mediaType - score field:
ratingOutOfFive
Interaction rows (/likes, /watchlist)
Section titled “Interaction rows (/likes, /watchlist)”Key fields:
tmdbId,title,posterPath,releaseYearruntime,genres,mediaTypelastInteractionAt
List row (/lists)
Section titled “List row (/lists)”Key fields:
- list fields:
id,title,description,isRanked,createdAt,updatedAt,itemCount items[]entries:position,note,tmdbId,title,posterPath,releaseYear
Diary row (/diary)
Section titled “Diary row (/diary)”Key fields:
- diary fields:
id,mediaType,watchedDate,rewatch,createdAt,updatedAt - ratings:
ratingOutOfTen,ratingOutOfFive mediaobject (tmdbId,title,posterPath,releaseYear)- optional
reviewobject (id,content,containsSpoilers,createdAt) ornull