If your app already has external IDs (IMDb, TMDB, TVDB, AniDB, …) — typical for watchlist importers, media-server plugins (Plex / Jellyfin / Kodi), browser extensions, and any app that maintains its own catalog of titles — you don’t need to call the Simkl JSON API just to send a user to the matching Simkl page. TheDocumentation Index
Fetch the complete documentation index at: https://api.simkl.org/llms.txt
Use this file to discover all available pages before exploring further.
GET /redirect endpoint takes any identifier you have and 301-redirects to the right URL on simkl.com.
No Authorization token required. No JSON parsing. The browser (or any HTTP client) follows the redirect automatically.
Redirect & deep-linking — full API reference
Two use cases (linking + ID resolution), every accepted parameter, all action modes (
to=simkl/trailer/twitter/watched), curl/JS/Python recipes for resolving an external ID into a Simkl ID for follow-up API calls.The simplest case — just use the URL as a hyperlink
In a newsletter, a browser-extension menu, a “View on Simkl” button, or any other surface where you want a clickable link, the/redirect URL is the href. The browser hits it, gets a 301, follows it to simkl.com. No JS, no fetch, no parsing.
Recipes by what you have
Action modes — what should clicking the link do?
Theto= parameter controls what the redirect lands on. Default is simkl (the item’s detail page).
to= value | Where the user lands |
|---|---|
simkl (default) | The Simkl page for the item (or season / episode if you also passed season/episode). |
trailer | The trailer URL (typically YouTube). Great for “Watch trailer” buttons. |
twitter | A pre-filled tweet (twitter.com/intent/tweet?...) with the title and a Simkl link. Use for “Share on Twitter” / “Share on X” buttons. |
watched | Marks the item as watched on the user’s account, then lands them on the page. If the user isn’t signed in, Simkl first redirects through /oauth/authorize, completes the action, then lands them on the page. |
When you already have a Simkl ID
If you’ve already called/movies/:id, /tv/:id, /anime/:id, or any sync endpoint, the response includes ids.simkl_id (or ids.simkl) and ids.slug on every item. Build the URL yourself — it’s faster than another /redirect round-trip:
| Resource | URL pattern |
|---|---|
| Movie | https://simkl.com/movies/{simkl_id}/{slug} |
| TV show | https://simkl.com/tv/{simkl_id}/{slug} |
| Anime | https://simkl.com/anime/{simkl_id}/{slug} |
| TV season | https://simkl.com/tv/{simkl_id}/{slug}/season-{N} |
| TV episode | https://simkl.com/tv/{simkl_id}/{slug}/season-{N}/episode-{M} |
| Anime episode | https://simkl.com/anime/{simkl_id}/{slug}/episode-{M} |
| User profile | https://simkl.com/{username} |
| User stats | https://simkl.com/{username}/stats/ |
| User library | https://simkl.com/{username}/{tv|movies|anime}/ |
Need the Simkl ID for an API call?
/redirect is also the cheapest way to resolve an external ID into a Simkl ID — much lighter than GET /search/id. Issue a HEAD request, parse the Location header for the numeric ID, then call /movies/{id} / /tv/{id} / /anime/{id} to get the full record. The follow-up call is Cloudflare-cached by Simkl ID, so repeat lookups of the same title cost almost nothing.
External ID → Simkl ID — full reference
Step-by-step recipes in bash, JS, and Python for resolving an external ID into a Simkl ID via
/redirect’s Location header, then fetching the full record from the cached detail endpoint. Includes the regex for extracting the ID and a caching recommendation.Caching links
The/redirect response always returns Cache-Control: no-store, so don’t try to HTTP-cache the redirect itself. But the resolved URL (everything after the 301) doesn’t change unless a Simkl admin re-slugs the title — extremely rare. If your app does the resolution once and renders many links to the same item, cache the result locally and skip the redirect for the next render.
Required parameters
Like every Simkl endpoint, requests to/redirect must include client_id, app-name, app-version as URL parameters and a User-Agent header. See Headers and required parameters for the full convention.
/redirect does not require an Authorization token — except for to=watched, which signs the user in if they aren’t already.
Reference
Redirect & deep-linking
The full API reference — every accepted parameter, all action modes, and recipes for the advanced “external ID → Simkl ID → detail-endpoint call” workflow.
GET /redirect
Endpoint reference with the parameter schema and interactive playground.
Standard media objects
Where the
ids.simkl_id and ids.slug fields come from. You’ll see them on every API response.Supported ID keys
The complete list of external catalog identifiers and slugs you can pass to
/redirect, with format examples for each.