Your data .md
Playback progress
Manage resume points directly: read the active ones, write a single one, or delete one by id.
Reading resume points#
GET /v3/sync/playback returns the in-progress items the user hasn't finished or abandoned.
curl -H "Authorization: Bearer $TOKEN" \
"https://flicklist.tv/api/v3/sync/playback"const res = await fetch('https://flicklist.tv/api/v3/sync/playback', {
headers: { Authorization: `Bearer ${token}` }
});
const resumePoints = await res.json();import requests
r = requests.get(
"https://flicklist.tv/api/v3/sync/playback",
headers={"Authorization": f"Bearer {token}"},
)
resume_points = r.json()[
{
"media_type": "episode",
"title": "Breaking Bad",
"season_number": 1,
"episode_number": 1,
"episode_name": "Pilot",
"progress": 42.5,
"paused": false,
"updated_at": "2026-05-14T02:10:33.000Z",
"ids": { "fldb": "flt_9f2c8a1b", "slug": "breaking-bad", "tmdb": 1396, "imdb": "tt0903747", "tvdb": 81189, "anilist": null }
}
]
ids is null when a resume point has no resolved catalog match. Your own progress value is still meaningful without one.
Writing a resume point#
POST /v3/sync/playback upserts a single resume point, without the stale-sibling cleanup that POST /v3/scrobble/start performs. The resolved item needs a TMDB-linked catalog row, same as scrobbling. Build ids per The ids object.
{ "ids": { "tmdb": 1396 }, "media_type": "movie", "progress": 42.5 }
Add season and episode to target one episode of a show. paused defaults to false when omitted.
{ "id": 4471, "progress": 42.5, "paused": false }
A request that resolves to an item with no TMDB link, or an API key missing write, is a 400. An ids block that doesn't resolve to any catalog item at all is a 404.
Deleting a resume point#
DELETE /v3/sync/playback/{id} removes one resume point by its own row id, not by media identity. Use the id from GET /v3/sync/playback or from a prior write's response. Deleting another user's resume point id 404s, the same as a nonexistent one. A successful delete returns 204 with no body.