curl --request GET \
--url 'https://api.simkl.com/sync/playback/{type}?client_id=' \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'[
{
"id": 123,
"progress": 45.5,
"paused_at": "2024-01-15T10:30:00.000Z",
"type": "episode",
"episode": {
"season": 1,
"episode": 5,
"title": "Episode 5",
"tvdb_season": 1,
"tvdb_number": 5
},
"show": {
"title": "Breaking Bad",
"year": 2008,
"ids": {
"simkl": 12345,
"slug": "breaking-bad",
"tmdb": 1429,
"imdb": "tt0903747"
}
}
},
{
"id": 124,
"progress": 75,
"paused_at": "2024-01-15T11:15:00.000Z",
"type": "movie",
"movie": {
"title": "Inception",
"year": 2010,
"ids": {
"simkl": 67890,
"slug": "inception",
"tmdb": 27205,
"imdb": "tt1375666"
}
}
}
]Returns the user’s saved paused playbacks — created by /scrobble/pause or /scrobble/stop with progress < 80%. The {type} segment is optional:
| Path | Returns |
|---|---|
GET /sync/playback | All paused playbacks (episodes + movies). |
GET /sync/playback/episodes | TV/anime episode playbacks only. |
GET /sync/playback/movies | Movie playbacks only. |
The response shape is identical across the three forms; only the included items differ. Resume a session by calling /scrobble/start with the same item.
| Param | Effect | Default |
|---|---|---|
date_from | Only sessions with paused_at >= date_from. | — |
date_to | Only sessions with paused_at < date_to. | — |
hide_watched | Exclude items already watched after the pause was created. | true |
limit | Max items returned (1–10000). | 10000 |
{
"id": 12345,
"progress": 42.2,
"paused_at": "2024-04-30T22:13:00Z",
"type": "episode",
"episode": {
"season": 1,
"number": 3,
"title": "Chapter Three: Holly Jolly",
"tvdb_season": 1,
"tvdb_number": 3
},
"show": {
"title": "Stranger Things",
"year": 2016,
"ids": {
"simkl": 39687,
"imdb": "tt4574334",
"tvdb": 305288
}
}
}
Note:
progressis a percentage (0-100) — same scale as the scrobble endpoints. The example values shown above (75,45.5,42.2) are real outputs from the API.
Members can browse and clean these up at simkl.com/my/history/playback-progress-manager.
Sessions persist until they’re manually removed via DELETE /sync/playback/{id}, replaced by the next scrobble update on the same title, or aged out per the plan retention window above. They are not auto-deleted on paused_at expiry — you’ll see the same session in the response indefinitely until one of those three things happens.
Real-time playback tracking — /start, /pause, /stop lifecycle, paused-playback resumption across devices, when scrobble auto-completes, and the difference between /scrobble/checkin (fire-and-forget) and /scrobble/start (active tracking).
Which IDs can I send/expect? All accepted input identifiers and the keys you’ll see echoed back in responses are listed at Standard media objects → Supported ID keys. Send every ID you have on writes — Simkl picks the first that resolves and ignores the rest. Reminder: slug is response-only (never send it on a request).
curl --request GET \
--url 'https://api.simkl.com/sync/playback/{type}?client_id=' \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'[
{
"id": 123,
"progress": 45.5,
"paused_at": "2024-01-15T10:30:00.000Z",
"type": "episode",
"episode": {
"season": 1,
"episode": 5,
"title": "Episode 5",
"tvdb_season": 1,
"tvdb_number": 5
},
"show": {
"title": "Breaking Bad",
"year": 2008,
"ids": {
"simkl": 12345,
"slug": "breaking-bad",
"tmdb": 1429,
"imdb": "tt0903747"
}
}
},
{
"id": 124,
"progress": 75,
"paused_at": "2024-01-15T11:15:00.000Z",
"type": "movie",
"movie": {
"title": "Inception",
"year": 2010,
"ids": {
"simkl": 67890,
"slug": "inception",
"tmdb": 27205,
"imdb": "tt1375666"
}
}
}
]Documentation Index
Fetch the complete documentation index at: https://api.simkl.org/llms.txt
Use this file to discover all available pages before exploring further.
Preferred form: your client_id as a URL query parameter on every request. Self-describing in logs and curl commands. See Headers and required parameters.
OAuth 2.0 or PIN-flow access_token. Required for endpoints that read or modify the user's library, scrobble session, ratings, settings, or playbacks. See Authentication.
Descriptive identifier for your app, ideally name/version. Examples: PlexMediaServer/1.43.1.10540, kodi-simkl/0.9.2, MyApp/2.4.1 (https://myapp.com).
episodes or movies to filter by item type. To get all paused playbacks of both kinds, call GET /sync/playback. Strictness; drop the segment from the URL to call without it.
movies, episodes Slice your result to the first N items. Default: 10000
When true, hides items already watched after the pause was created.
true, false Filter sessions from this date
Filter sessions until this date
Your client_id from your Simkl developer settings. Required on every request.
Short, lowercase identifier for your app (e.g. plex-scrobbler, kodi-bridge). Helps Simkl identify which apps are using the API.
Your app's current version (e.g. 1.0, 2.4.1). Helps Simkl debug issues you report.
OK
Internal playback session ID. Use to delete via DELETE /sync/playback/{id}.
Saved progress percentage 0–100.
Standard movie object. See the Standard Media Objects guide.
Hide child attributes
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
"Terminator 3: Rise of the Machines"
2003
Standard show object. May include nested seasons/episodes for partial sync.
Hide child attributes
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
"The Walking Dead"
2010
Hide child attributes
Hide child attributes
x >= 01
x >= 12
ISO-8601 GMT timestamp.
"2014-09-01T09:10:11Z"
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
Standard anime object. Like Show, but may include anime_type. Episode numbering follows AniDB.
Hide child attributes
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
"Attack on Titan"
2013
Anime production format. tv is the common case; movies, OVAs, ONAs, and music videos all surface through the /anime/* endpoints with the same response shape.
tv, movie, special, ova, ona, music video Hide child attributes
x >= 01
x >= 12
ISO-8601 GMT timestamp.
"2014-09-01T09:10:11Z"
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
Episode reference. Use season + number, or ids.
Hide child attributes
x >= 01
x >= 12
ISO-8601 GMT timestamp.
"2014-09-01T09:10:11Z"
External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
Was this page helpful?