Skip to content

Recent

GET /api/public/:username/recent?limit=10

Returns the same feed item shape as /activity, but intended for smaller widgets.

ParamTypeRequiredDescription
usernamestringyesInteris username to resolve
ParamTypeDefaultMaxDescription
limitnumber1020Number of items to return

limit values are normalized (invalid/empty values fall back to default).

Returns FeedItem[].

[
{
"id": "activity-id",
"type": "review",
"kind": "review",
"createdAt": "2026-01-10T12:00:00.000Z",
"actor": {
"id": "user-id",
"username": "your_username",
"displayUsername": "Your Username",
"image": null,
"avatarUrl": null
},
"movie": {
"tmdbId": 550,
"title": "Fight Club",
"posterPath": "/a.jpg",
"releaseYear": 1999,
"mediaType": "movie"
},
"post": null,
"review": {
"id": "review-id",
"content": "Great rewatch.",
"containsSpoilers": false,
"rating": 8
},
"metadata": {
"action": null,
"excerpt": null,
"targetUsername": null,
"rating": 8,
"rewatch": false,
"hasReview": true,
"mediaType": "movie",
"containsSpoilers": false,
"reviewId": "review-id",
"commentId": null,
"movieId": 550,
"postId": null,
"postMediaId": null,
"postMediaType": null
},
"engagement": {
"likeCount": 3,
"commentCount": 1,
"viewerHasLiked": null
}
}
]

For full field guidance, see Data Shapes.

Returns [] when the user has no feed items.

  • 404 when username does not exist.
  • 429 when the public rate limit is exceeded.
  • 500 for unexpected server errors.
const limit = 5;
const res = await fetch(`https://api.interis.gorkemkaryol.dev/api/public/your_username/recent?limit=${limit}`);
if (!res.ok) throw new Error(`Recent failed: ${res.status}`);
const items = await res.json();
console.log(items.length);
Terminal window
curl "https://api.interis.gorkemkaryol.dev/api/public/your_username/recent?limit=5"

Practical: render latest review-like events

Section titled “Practical: render latest review-like events”
const reviewish = items.filter((item) =>
['review', 'liked_review'].includes(item.kind)
);

Next: Reviews endpoint