Skip to main content
POST
/
profile
/
scrobble
/
{mediaId}
Record or update scrobble progress
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({progress: 15.5, tv: {season: 1, episode: 2}})
};

fetch('https://api.discovr.media/profile/scrobble/{mediaId}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "status": "ok",
  "progress": 15.5,
  "completed": false
}

Documentation Index

Fetch the complete documentation index at: https://docs.discovr.media/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer token authentication.

  • Identity-tier endpoints (/profiles, /auth/session-token, /auth/session) accept a long-lived refresh token (rt_<hex>).
  • Session-tier endpoints (/pages/*, /profile/*) accept a short-lived session JWT.

SDK clients use two typed API accessors (identityApi() with the refresh token vs sessionApi() with the session JWT) — see the SDK DiscovrAuth helper.

Format: Authorization: Bearer {token}

Path Parameters

mediaId
string
required

The media ID with prefix (MV_TMDBID for movies, TV_TMDBID for TV shows)

Pattern: ^(MV|TV)_\d+$

Body

application/json
progress
number
required

Playback progress percentage

Required range: 0 <= x <= 100
Example:

42.5

tv
object

Response

Scrobble progress recorded

status
string
required

Status of the scrobble request

Example:

"ok"

progress
number
required

Final progress recorded

Required range: 0 <= x <= 100
Example:

85

completed
boolean
required

Whether the item was marked as completed/watched

Example:

true