Serials Progress
Endpoint
Section titled “Endpoint”GET /api/public/:username/serials/:tmdbIdReturns the watch progress, season-by-season interactions, custom reviews, ratings, and like counters for the specified TV series.
Path params
Section titled “Path params”| Param | Type | Required | Description |
|---|---|---|---|
username | string | yes | Interis username to resolve |
tmdbId | number | yes | TMDB ID of the TV series to fetch progress for |
Query params
Section titled “Query params”None.
Response
Section titled “Response”{ "series": { "id": 12, "tmdbId": 1396, "title": "Breaking Bad", "posterPath": "/gg40uwtwFcYRL5O4YKwtqqMK5AY.jpg", "numberOfSeasons": 5, "numberOfEpisodes": 62 }, "viewerTracking": { "watchedEpisodesCount": 14, "watchedEpisodes": [ { "seasonNumber": 1, "episodeNumber": 1 }, { "seasonNumber": 1, "episodeNumber": 2 }, { "seasonNumber": 1, "episodeNumber": 3 } ], "currentEpisode": { "seasonNumber": 1, "episodeNumber": 4, "name": "Episode 4" }, "ratingsCount": 4, "likesCount": 2, "reviewsCount": 1 }, "seasons": [ { "seasonNumber": 1, "name": "Season 1", "episodeCount": 7, "viewerInteraction": { "watched": false, "liked": true, "rating": 4.5, "hasReview": true } } ]}viewerTrackingisnullif the user has no progress recorded for this series.currentEpisodereturns the first unwatched episode in chronological order (Up Next). If all episodes are watched,currentEpisodereturnsnull.ratingsCount,likesCount, andreviewsCountaggregate interactions from both seasons and individual episodes.series.numberOfEpisodesexcludes season 0 (Specials) — only regular aired seasons count.watchedEpisodesCountis counted the same way, so the progress fraction is always consistent.
Empty state behavior
Section titled “Empty state behavior”If the resolved user has no tracking record for the specified serial, viewerTracking returns null.
Error behavior
Section titled “Error behavior”400when thetmdbIdpath parameter is not a valid number.404when the user does not exist or series cannot be found.429when the public rate limit is exceeded.500for unexpected server errors.
Examples
Section titled “Examples”const username = 'your_username';const tmdbId = 1396; // Breaking Badconst res = await fetch(`https://api.interis.gorkemkaryol.dev/api/public/${username}/serials/${tmdbId}`);
if (!res.ok) throw new Error(`Serials Progress request failed: ${res.status}`);
const progress = await res.json();if (progress.viewerTracking) { console.log(`Watched: ${progress.viewerTracking.watchedEpisodesCount} / ${progress.series.numberOfEpisodes}`);}curl "https://api.interis.gorkemkaryol.dev/api/public/your_username/serials/1396"