Skip to main content
GET
/
sync
/
all-items
/
{type}
/
{status}
curl 'https://api.simkl.com/sync/all-items?client_id=YOUR_CLIENT_ID&app-name=my-app-name&app-version=1.0' \ -H 'User-Agent: my-app-name/1.0' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{ "shows": [ { "added_to_watchlist_at": "2018-02-24T23:55:13Z", "last_watched_at": null, "user_rated_at": null, "user_rating": null, "status": "plantowatch", "last_watched": null, "next_to_watch": "S01E01", "watched_episodes_count": 0, "total_episodes_count": 178, "not_aired_episodes_count": 0, "show": { "title": "Charmed", "poster": "24/24273cee77f9d9f", "year": 1998, "ids": { "simkl": 297, "slug": "charmed", "imdb": "tt0158552", "tvdb": "70626", "tmdb": "1981" } } } ], "anime": [ { "added_to_watchlist_at": "2026-05-15T00:13:09Z", "last_watched_at": "2026-05-15T00:13:09Z", "user_rated_at": null, "user_rating": null, "status": "completed", "last_watched": null, "next_to_watch": null, "watched_episodes_count": 26, "total_episodes_count": 26, "not_aired_episodes_count": 0, "show": { "title": "Cowboy Bebop", "poster": "36/36842f1bceb6b39", "year": 1998, "ids": { "simkl": 37089, "slug": "cowboy-bebop", "mal": "1", "anidb": "23", "anilist": "1" } }, "anime_type": "tv" } ] }

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.

Authorizations

client_id
string
query
default:YOUR_CLIENT_ID
required

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.

Authorization
string
header
default:YOUR_ACCESS_TOKEN
required

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.

Headers

User-Agent
string
required

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).

Path Parameters

type
enum<string>
required

One of shows, movies, anime, or all. Pass all to skip filtering on type even when the runtime accepts the segment-less form, so for spec strictness this is true. To call without it in practice, just drop the segment from the URL.

Available options:
movies,
shows,
anime,
all
Example:

"all"

status
enum<string>
required

One of watching, plantowatch, hold, completed, dropped, or all. Movies accept only plantowatch, completed, dropped, and all; TV and anime accept all six. Pass all to skip filtering on status — /sync/all-items/{type}/all returns every status for that type. User watchlist status. Movies skip watching and hold — see /conventions/list-statuses.

Available options:
watching,
plantowatch,
hold,
completed,
dropped,
all
Example:

"all"

Query Parameters

allow_rewatch
enum<string>
default:no

Opt into rewatch tracking. When yes, POST /sync/history records an additional rewatch session instead of being a no-op for already-watched items, and GET /sync/all-items returns one extra entry per saved rewatch session alongside the item's normal entry. Available to Simkl Pro and VIP users — non-Pro callers see no effect even with the flag set.

⚠️ Do not enable this flag until you've read the Rewatches guide end-to-end and implemented the precautions. Used carelessly (on retries, on every scrobble event, on importer re-runs, without pinning rewatch_id after the first write), it will pollute the user's history stats and rewatches panel with phantom sessions. The flag should be gated behind explicit user intent — a dedicated "Rewatch" button — never on background or automated flows. Also expose a per-user Track rewatches toggle in your app's settings (default off) — not every user wants the rewatch-session complexity.

Limits: up to 50 rewatches per item (movie, show, or anime), and any two watch events on the same item (movie or episode) must be at least 2 days apart — a new rewatch within 48 hours of the previous watch of that same item collapses into the same session (it's a rewatch, not a rewind 😄). Full walkthrough — session lifecycle (active / completed / closed with bidirectional transitions), episode-level tracking, reading sessions back from GET /sync/all-items, and ready-made code for simkl.com-style UI patterns — in the Rewatches guide.

Available options:
yes,
no
date_from
string<date-time>

ISO-8601 timestamp. Returns only items updated since this time. Use the value saved from /sync/activities.

extended
enum<string>

full returns more info including a list of watched episodes

Available options:
full,
full_anime_seasons,
simkl_ids_only,
ids_only
next_watch_info
enum<string>

When yes, attaches a next_to_watch_info object to each watched item, indicating the next episode to watch.

Available options:
yes
episode_tvdb_id
enum<string>

When yes, includes TVDB IDs on each episode in episode-bearing responses.

Available options:
yes
language
string

Force English titles. Defaults to the user's profile language.

anime_type
enum<string>

When movies, restricts the anime results to anime-movie subtype only.

Available options:
movies
episode_watched_at
string

yes adds per-episode watched_at timestamps to every episode in the response. Modifier only — episodes must already be loaded by extended=full / extended=full_anime_seasons (or by include_all_episodes=yes for completed/dropped statuses). Pair with date_from — significantly larger response.

Allowed value: "yes"
include_all_episodes
enum<string>
default:no

Three-value flag that controls per-episode loading on canonical entries.

  • no (default) — Episode lists are loaded only for items in watching, plantowatch, and hold statuses. Items in completed and dropped skip episode loading entirely.
  • yes — Load episode lists for every status. Synthesizes virtual episode rows for completed entries that don't have per-episode data recorded (virtual rows fall back to the show's air-date timestamps).
  • original — Load episode lists for every status, but skip virtual-episode synthesis. Completed entries get only their real per-episode rows.

Independent of allow_rewatch=yes — combine the two when you need both canonical episode lists AND rewatch session episode lists in one response. Pair with date_from since the response can be much larger when episodes load for completed-bucket items.

Available options:
yes,
original,
no
memos
string

yes returns memos in addition all other data

Allowed value: "yes"
client_id
string
required

Your client_id from your Simkl developer settings. Required on every request.

app-name
string
required

Short, lowercase identifier for your app (e.g. plex-scrobbler, kodi-bridge). Helps Simkl identify which apps are using the API.

app-version
string
required

Your app's current version (e.g. 1.0, 2.4.1). Helps Simkl debug issues you report.

Response

Top-level dict keyed by shows, movies, and anime. Keys are present only when there's at least one item in that bucket — filtered calls (/movies/completed) return just that key; an empty library returns {}.

The per-item shape is AllItemsEntry — its fields are gated on the query parameters (extended, memos, next_watch_info, episode_watched_at, episode_tvdb_id, allow_rewatch, etc.). See the schema and the examples below for what each modifier adds.

Top-level dict keyed by shows, movies, and anime. Each key is an array of AllItemsEntry objects. Keys are present only when there's at least one item in that bucket — an empty library returns {}; a library with only movies returns { movies: [...] } with no shows or anime keys.

shows
object[]
movies
object[]
anime
object[]