Skip to main content
POST
/
sync
/
watched
curl --request POST \ --url 'https://api.simkl.com/sync/watched?client_id=' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'User-Agent: <user-agent>' \ --data ' [ { "ids": { "simkl": 53536 } } ] '
[ { "ids": { "simkl": 53536 }, "result": false, "simkl": 53536, "list": null, "last_watched_at": null } ]

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

Query Parameters

extended
string

Comma-separated combination of counters, episodes, specials. Order does not matter; empty or unknown values are ignored. Examples: counters, episodes,specials, counters,episodes,specials.

Pattern: ^(counters|episodes|specials)(,(counters|episodes|specials))*$
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.

Body

application/json
simkl
integer

Simkl internal ID. Most reliable.

Example:

53536

slug
string

URL-safe slug returned in responses.

Example:

"attack-on-titan"

imdb
string

IMDb ID.

Example:

"tt0181852"

tmdb
string

TMDb ID.

Example:

"296"

tvdb

TVDB ID or slug.

Example:

153021

mal
string

MyAnimeList ID.

Example:

"4246"

anidb
string

AniDB ID. Specifying just this is enough for anime lookups.

Example:

"10846"

anilist
string

AniList ID.

Example:

"21"

kitsu
string

Kitsu ID.

Example:

"12"

anisearch
string

aniSearch ID.

Example:

"2227"

animeplanet
string

Anime-Planet slug.

Example:

"one-piece"

livechart
string

LiveChart ID.

Example:

"321"

letterboxd
string

Letterboxd slug.

Example:

"the-truman-show"

netflix
string

Netflix movie ID.

Example:

"70210890"

hulu
string

Hulu episode ID.

crunchyroll
string

Crunchyroll episode ID.

traktslug
string

Trakt slug.

Example:

"john-wick-chapter-4-2023"

type
enum<string>

Item type. Helps the lookup find the right title when the same external ID could match multiple types. Optional but recommended.

Available options:
show,
movie,
anime
Example:

"show"

season
integer

For episode-level lookup: which season. Pair with episode. Per-episode results are returned alongside the title-level result field.

Required range: x >= 0
Example:

1

episode
integer

For episode-level lookup: which episode within the season. Pair with season. Result reflects whether the user has watched that specific episode.

Required range: x >= 1
Example:

3

Response

Array of per-item watch results in input order.

result

true if the user has watched (or is watching) the item, false if Simkl matched the IDs but the item isn't in the user's library, or the literal string "not_found" if Simkl couldn't resolve the IDs to any catalog entry.

Example:

true

simkl
integer

Canonical Simkl ID. Omitted when result: "not_found".

Example:

2090

list
enum<string> | null

Current watchlist status. Type 4 nullnull when the item resolved to a Simkl record but isn't in any of the user's lists. See Null and missing values.

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

"completed"

last_watched_at
string<date-time> | null

ISO-8601 timestamp of the most recent watch event for this item. Type 4 nullnull if the item has never been watched. See Null and missing values.

Example:

"2026-05-15T00:35:15Z"

episodes_total
integer

Present only with extended=episodes or extended=counters (shows/anime).

Example:

177

episodes_aired
integer

Present only with extended=episodes or extended=counters.

Example:

177

episodes_to_be_aired
integer

Present only with extended=episodes or extended=counters.

Example:

0

episodes_watched
integer

Present only with extended=episodes or extended=counters.

Example:

177

seasons
object[]

Per-season breakdown. Present only with extended=episodes or extended=counters (shows/anime). With extended=counters alone, the inner episodes[] array is omitted.