curl --request GET \
--url https://api.simkl.com/tv/{id} \
--header 'User-Agent: <user-agent>' \
--header 'simkl-api-key: <api-key>'Full detail record for one TV show — title, overview, year, runtime, country, certification, network, genres, status, first/last-aired dates, total episodes, airs schedule, ratings, posters, fanart, external IDs, trailers, user recommendations. The default response is already complete; no flags needed.
Responses are Cloudflare-cached by Simkl ID, so repeat lookups of popular titles are near-free. Parallel requests against this endpoint are explicitly allowed (see Rate limits → Parallel requests).
Cache invalidation is automatic. When Simkl updates the underlying record (admin edits, automated metadata refresh, image swap, related-titles change, etc.), the corresponding Cloudflare cache entry is purged server-side. The next call to this endpoint returns the fresh data — there’s no TTL to wait out and no client-side cache-busting needed. Your own app-level cache, if any, still has to be invalidated by your client.
Use a Simkl ID for the lookup. If you only have an external ID, resolve it via GET /redirect first.
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/tv/{id} \
--header 'User-Agent: <user-agent>' \
--header 'simkl-api-key: <api-key>'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.
Optional alias for the client_id query parameter. Simkl accepts your client_id either as the simkl-api-key request header or as the ?client_id=… query parameter — pick one. The query-parameter form is preferred because it makes the request fully self-describing in URL form.
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).
Simkl ID for the item. Simkl IDs are stable, unambiguous, and the response is Cloudflare-cached by Simkl ID, so repeat lookups are very fast.
If you only have an external ID (IMDb, TMDB, TVDB, MAL, AniDB, etc.), resolve it to a Simkl ID first via GET /redirect — it returns the Simkl ID in the Location header without a JSON payload, and the follow-up detail call is Cloudflare-cached.
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
Full TV show record returned by GET /tv/{id}. Cloudflare-cached by Simkl ID. The extended query param is a legacy no-op here.
First-aired year.
Always show on this endpoint. (The canonical media type for TV records is show — tv is reserved for the URL/route segment.) Live-verified 2026-05-14.
show 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
}
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Episode runtime in minutes (most common length). Type 4 null when unknown.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values. ISO 3166-1 alpha-2 country of origin.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Originating network or streamer (e.g. HBO, Netflix). Type 4 null when unknown.
Type 4 null — data not on file in that field's slot. See Null and missing values. Production lifecycle bucket. Closed set of three values; the value is computed from the catalog's Status column plus the next-release timestamp at request time:
tba — air date is in the future (next-release timestamp > now)ended — catalog status is Endedairing — everything else (currently releasing, ongoing, hiatus)Note this is the detail-endpoint status. Listing endpoints (/anime/airing, /anime/best, etc.) use a wider enum from :: (returning series, ongoing, released, canceled, planned, in production, post production, rumored, upcoming) — different shape, document separately.
tba, ended, airing, null Type 4 null — data not on file in that field's slot. See Null and missing values. Series premiere date.
Type 4 null — data not on file in that field's slot. See Null and missing values. Date of the most recently aired episode.
Type 4 null — data not on file in that field's slot. See Null and missing values. Recurring airing schedule (day-of-week, time, timezone). Fields vary; expect at least the broadcasting day for ongoing shows.
Type 4 null — data not on file in that field's slot. See Null and missing values. Total episode count across all aired and announced seasons.
Type 4 null — data not on file in that field's slot. See Null and missing values. Display-friendly range like 2008-2013, or 2011- for ongoing.
Ratings keyed by source. TV shows always carry simkl and imdb.
Hide child attributes
Type 4 null — data not on file in that field's slot. See Null and missing values.
Hide child attributes
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Hide child attributes
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Was this page helpful?