Skip to main content

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.

Simkl returns image paths (not full URLs) inside poster, fanart, episode, and avatar fields. You build the final URL by combining the simkl.in domain, a category prefix, the image path, a size suffix, and a file extension.

Anatomy of a URL

Image URL anatomy: category, image path, size, extension
PartExampleNotes
Domainhttps://simkl.inAlways start with this.
Category/posters/One of /posters/, /fanart/, /episodes/, /avatars/.
Image path74/74415673dcdc9cddThe value from the API field (poster, fanart, etc.).
Size suffix_wDetermines pixel size — see each section below.
Extension.webpAlways .webp for posters, episodes, and every fanart size except _d. Two exceptions: fanart _d is .jpg only (details), avatars are .jpg only (details).
Use .webp for posters, episodes, and fanart.Two .jpg exceptions:
  • Fanart _d — original-resolution, darker tone, smaller filesize than _medium.webp. JPG only.
  • Avatars — small enough that the format doesn’t matter; served as JPG.

Code samples

Each tab covers a different real-world scenario. All samples handle missing/null paths by falling back to the placeholders documented in Fallback when images are missing.
Single helper covering all four kinds, with null-safe fallback for posters.
const SIMKL_IMG_BASE = 'https://simkl.in';

function imageUrl(path, kind = 'posters', size = '_w', ext = '.webp') {
  if (!path) {
    if (kind !== 'posters') return null; // hide fanart/episode/avatar — no placeholder
    const ph = size === '_s' ? '_s' : '_c';
    return `${SIMKL_IMG_BASE}/poster_no_pic${ph}.png`;
  }
  return `${SIMKL_IMG_BASE}/${kind}/${path}${size}${ext}`;
}

imageUrl('74/74415673dcdc9cdd', 'posters', '_w');
// → https://simkl.in/posters/74/74415673dcdc9cdd_w.webp

imageUrl(null, 'posters', '_c');
// → https://simkl.in/poster_no_pic_c.png

Posters

Six sizes, ranging from cinematic landscape (_w) down to a 40-pixel sliver (_s).
_w_w — 600 × 338, landscape, cropped
_m_m — 340 × *, medium portrait
_ca_ca — 190 × 279 (or 285), card aspect
_c_c — 170 × 250 (or 256), compact card
_cm_cm — 84 × 124, card mini
_s_s — 40 × 57, smallest thumbnail

Fanart

Wide background art — the cinematic still you typically use behind the title on a detail screen.
_medium
_mobile
_w
_d
_s48

Episodes

_w
_c
_m

Avatars

_24_24 — 24 × 24
_100_100 — 100 × 100
default(none) — 200 × 200
_256_256 — 256 × 256
_512_512 — 512 × 512
Avatars are JPG-only.

Fallback when images are missing

When a poster, fanart, or episode field is null (or the path is empty), use these built-in placeholders. They live at the root of simkl.in:
default placeholder
_c placeholder
_c grey placeholder
_s placeholder
URLUse forFile sizeExample
https://simkl.in/poster_no_pic.pngDefault — full-size missing-poster~25 KBView
https://simkl.in/poster_no_pic_c.pngMatch _c posters (170 × 250)~9 KBView
https://simkl.in/poster_no_pic_c_grey.pngMatch _c with a softer grey tone~24 KBView
https://simkl.in/poster_no_pic_s.pngMatch _s posters (40 × 57)~1.7 KBView
Fanart has no dedicated placeholder. When fanart is null, hide the fanart element rather than showing a broken/empty image — most apps render a solid color or use the poster’s blurred-up _s48 thumbnail behind a tint instead.

Caching

Cache images by URL forever. The image at a given URL never changes — once you’ve downloaded it, don’t fetch it again. Re-downloading wastes your users’ bandwidth and ours.