GetEpisodeProgress
GetEpisodeProgress retrieves saved playback progress for one episode.
/api.v1.watch.WatchService/GetEpisodeProgress Bearer requiredRequest
GetEpisodeProgressRequest
GetEpisodeProgressRequestapi.v1.watch.GetEpisodeProgressRequest4 fields
GetEpisodeProgressRequest identifies one episode progress record.
slugstringURL-friendly identifier for the anime.
seasonstringSeason identifier.
episodestringEpisode identifier.
animeGroupIdoptionaluint32Optional anime group context.
{
"slug": "frieren",
"season": "1",
"episode": "1",
"animeGroupId": 1
}Response
GetEpisodeProgressResponse
GetEpisodeProgressResponseapi.v1.watch.GetEpisodeProgressResponse3 fields
GetEpisodeProgressResponse contains saved progress and the next target.
hasProgressboolIf true, progress exists for the requested episode.
{
"hasProgress": true,
"progress": {
"id": 1,
"createdAt": "2026-08-19T20:15:00Z",
"updatedAt": "1",
"slug": "frieren",
"season": "1",
"episode": "1",
"positionPercent": 1.5,
"positionSeconds": 1
},
"nextEpisode": {
"slug": "frieren",
"season": "1",
"episode": "1",
"animeGroupId": 1,
"groupTitle": "Frieren: Beyond Journey’s End"
}
}Referenced models
2 nested message types
LastSeenEpisodeapi.v1.watch.LastSeenEpisode15 fields
LastSeenEpisode represents a record of user playback progress.
iduint32Unique database identifier for the record.
createdAtstringTimestamp when the record was first created (RFC3339 format).
updatedAtint64Unix timestamp (milliseconds) of the last update.
slugstringURL-friendly identifier for the anime.
seasonstringSeason identifier (e.g., "1").
episodestringEpisode identifier (e.g., "12").
positionPercentfloatCompletion percentage of the episode (0.0 to 1.0).
positionSecondsint32Current playback position in seconds.
positionMaxint32Total duration of the episode in seconds.
userIduint32The ID of the user who owns this record.
animeIduint32The ID of the anime associated with this record.
animeGroupIdoptionaluint32Optional anime group context used when the user watched through a group route.
groupTitlestringHuman-readable anime group title for display.
isCompletedboolIf true, the episode is treated as watched/completed.
completedAtint64Unix timestamp (seconds) when the episode was completed.
EpisodeTargetapi.v1.watch.EpisodeTarget5 fields
EpisodeTarget identifies an episode route that can be opened by clients.
slugstringURL-friendly identifier for the anime.
seasonstringSeason identifier.
episodestringEpisode identifier.
animeGroupIdoptionaluint32Optional anime group context for group watch routes.
groupTitlestringHuman-readable anime group title for display.
Error handling
Common failure codes
unauthenticatedThe Bearer token is missing or invalid.
invalid_argumentThe request payload failed validation.
internalThe service could not complete the operation.