FIREANIME API
Browse API97 operations
POST

GetEpisodeProgress

GetEpisodeProgress retrieves saved playback progress for one episode.

/api.v1.watch.WatchService/GetEpisodeProgress Bearer required
01

Request

GetEpisodeProgressRequest

GetEpisodeProgressRequestapi.v1.watch.GetEpisodeProgressRequest4 fields

GetEpisodeProgressRequest identifies one episode progress record.

slug
string

URL-friendly identifier for the anime.

season
string

Season identifier.

episode
string

Episode identifier.

animeGroupIdoptional
uint32

Optional anime group context.

Request JSON
{
  "slug": "frieren",
  "season": "1",
  "episode": "1",
  "animeGroupId": 1
}
02

Response

GetEpisodeProgressResponse

GetEpisodeProgressResponseapi.v1.watch.GetEpisodeProgressResponse3 fields

GetEpisodeProgressResponse contains saved progress and the next target.

hasProgress
bool

If true, progress exists for the requested episode.

progress

Saved progress for the requested episode.

nextEpisode

Next episode target when known.

Example response
{
  "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"
  }
}
03

Referenced models

2 nested message types

LastSeenEpisodeapi.v1.watch.LastSeenEpisode15 fields

LastSeenEpisode represents a record of user playback progress.

id
uint32

Unique database identifier for the record.

createdAt
string

Timestamp when the record was first created (RFC3339 format).

updatedAt
int64

Unix timestamp (milliseconds) of the last update.

slug
string

URL-friendly identifier for the anime.

season
string

Season identifier (e.g., "1").

episode
string

Episode identifier (e.g., "12").

positionPercent
float

Completion percentage of the episode (0.0 to 1.0).

positionSeconds
int32

Current playback position in seconds.

positionMax
int32

Total duration of the episode in seconds.

userId
uint32

The ID of the user who owns this record.

animeId
uint32

The ID of the anime associated with this record.

animeGroupIdoptional
uint32

Optional anime group context used when the user watched through a group route.

groupTitle
string

Human-readable anime group title for display.

isCompleted
bool

If true, the episode is treated as watched/completed.

completedAt
int64

Unix timestamp (seconds) when the episode was completed.

EpisodeTargetapi.v1.watch.EpisodeTarget5 fields

EpisodeTarget identifies an episode route that can be opened by clients.

slug
string

URL-friendly identifier for the anime.

season
string

Season identifier.

episode
string

Episode identifier.

animeGroupIdoptional
uint32

Optional anime group context for group watch routes.

groupTitle
string

Human-readable anime group title for display.

04

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.