Stateless Media Layer

Easy Ratings Database.Design-Grade Ratings,Without the State.

Generate expressive posters, backdrops, and logos for addons in real time. Pass parameters once and ship beautiful media metadata anywhere.

No accounts or tokens
Query-driven layouts
Proxy-ready for addons
Live OutputInstant
Render Mode
Stateless + CDN friendly
Provider Mix
TMDB / IMDb / MDBList + more
Addon Proxy
Auto-rewrite catalog + meta
Highlights
Config string ready for sharing.
Translation pipeline for meta content.
Works with posters, backdrops, logos.
Workspace

Configurator & Proxy

Tune layout, ratings, badges, and language, then export a shareable config or generate a proxy manifest.

PosterBackdropLogo

Configurator

Adjust parameters to generate the config string and update the live preview.

Config TransferDownload or upload the config file.
Access Keys
Media Target
Type
Media ID
Add TMDB key for lang
Poster Ratings Style
Poster Text
Layouts
Poster Layout
Quality Badges - Poster
Quality Badge Style
Side
Poster Providers

Preview Output

All ratings are normalized to a 0-10 scale.

No preview available.

ERDB Config String

Base64url string containing API keys and all settings. Base URL is detected automatically from the current domain.

Add TMDB key and MDBList key to generate the config string.

Add TMDB key and MDBList key to generate a valid config string.

Addon Proxy

Paste a Stremio addon manifest to generate a new manifest and choose which image types to replace.

ERDB parameters

Use the configurator above for keys, language, ratings, layout, badges, and text.

Enabled Types
Disabled types keep the original artwork.
Translate Meta
Uses selected language for titles, plots, and episodes.
Generated Manifest

Use this URL in Stremio. It ends with manifest.json and has no query params.

*****************************************************
Open

Add manifest URL and set TMDB/MDBList keys in the configurator to generate a valid link.

Replace enabled types
Proxy rewrites enabled `meta.poster`, `meta.background`, `meta.logo` for both `catalog` and `meta` responses.

Developers

Stateless rendering for any media ID.

Dynamic Rendering

No tokens needed. Pass parameters in the query string and let ERDB handle metadata and rendering.

Addon Friendly

Perfect for Stremio, Kodi or any media center addon. Use simple URL patterns for easy integration in your code.

API Reference

ParameterValuesDefault
type (path)poster, backdrop, logo-
id (path)IMDb, TMDB, Kitsu, etc.-
ratingstmdb, mdblist, imdb, tomatoes, letterboxd, metacritic, trakt, myanimelist, anilist, kitsu (global fallback)all
posterRatingstmdb, mdblist, imdb, tomatoes, letterboxd, metacritic, trakt, myanimelist, anilist, kitsu (poster only)all
backdropRatingstmdb, mdblist, imdb, tomatoes, letterboxd, metacritic, trakt, myanimelist, anilist, kitsu (backdrop only)all
logoRatingstmdb, mdblist, imdb, tomatoes, letterboxd, metacritic, trakt, myanimelist, anilist, kitsu (logo only)all
langen, it, es, fr, de, pt, ru, ja, zh, tren
streamBadgesauto, on, off (global fallback)auto
posterStreamBadgesauto, on, off (poster only)auto
backdropStreamBadgesauto, on, off (backdrop only)auto
qualityBadgesSideleft, right (poster top-bottom only)left
posterQualityBadgesPositionauto, left, right (poster top/bottom only)auto
qualityBadgesStyleglass, square, plain (global fallback)glass
posterQualityBadgesStyleglass, square, plain (poster only)glass
backdropQualityBadgesStyleglass, square, plain (backdrop only)glass
ratingStyleglass, square, plainglass (poster/backdrop), plain (logo)
imageTextoriginal, clean, alternativeoriginal (poster), clean (backdrop)
posterRatingsLayouttop, bottom, left, right, top-bottom, left-righttop-bottom
posterRatingsMaxPerSide1-20auto
backdropRatingsLayoutcenter, right, right-verticalcenter
tmdbKey (req)TMDB v3 API Key-
mdblistKey (req)MDBList.com API Key-

Type Configs

TypeConfigLayouts / Values
poster
imageText
posterRatingsLayout
posterRatingsMaxPerSide
original, clean, alternative
top, bottom, left, right, top-bottom, left-right
1-20 (auto if omitted)
backdrop
imageText
backdropRatingsLayout
original, clean, alternative
center, right, right-vertical
logonone (base params only)-
Base params for all types: ratings (global fallback), lang, ratingStyle, tmdbKey, mdblistKey. Use posterRatings/backdropRatings/logoRatings to override per type.

ID Formats

SourceFormatExample
IMDbtt + numberstt0133093
TMDBtmdb:id or tmdb:movie:id or tmdb:tv:idtmdb:movie:603, tmdb:tv:1399
Kitsukitsu:idkitsu:1
Animeprovider:idanilist:123, mal:456

Base Structure

http://localhost:3000/{type}/{id}.jpg?ratings={ratings}&lang={lang}&ratingStyle={style}&imageText={text}&posterRatingsLayout={layout}&posterRatingsMaxPerSide={max}&backdropRatingsLayout={bLayout}&tmdbKey={tmdbKey}&mdblistKey={mdbKey}
lang (optional):All TMDB ISO 639-1 codes are supported (en, it, fr, es, de, etc.). Default: en.
id (required):IMDb ID (tt...), TMDB ID (tmdb:...), or Kitsu ID (kitsu:...).
tmdbKey (required):Your TMDB v3 API Key.
mdblistKey (required):Your MDBList API Key.

AI Developer Prompt

Copy this prompt to help an AI agent implement this API in your addon.

Act as an expert addon developer. I want to implement the ERDB Stateless API into my media center addon. --- CONFIG INPUT --- Add a single text field called "erdbConfig" (base64url). The user will paste it from the ERDB site after configuring there. Do NOT hardcode API keys or base URL. Always use cfg.baseUrl from erdbConfig. --- DECODE --- Node/JS: const cfg = JSON.parse(Buffer.from(erdbConfig, 'base64url').toString('utf8')); --- FULL API REFERENCE --- Endpoint: GET /{type}/{id}.jpg?...queryParams Parameter | Values | Default type (path) | poster, backdrop, logo | - id (path) | IMDb (tt...), TMDB (tmdb:id / tmdb:movie:id / tmdb:tv:id), Kitsu (kitsu:id), AniList, MAL | - ratings | tmdb, mdblist, imdb, tomatoes, tomatoesaudience, letterboxd, | all | metacritic, metacriticuser, trakt, rogerebert, myanimelist, | | anilist, kitsu (global fallback) | posterRatings | tmdb, mdblist, imdb, tomatoes, tomatoesaudience, letterboxd, | all | metacritic, metacriticuser, trakt, rogerebert, myanimelist, | | anilist, kitsu (poster only) | backdropRatings | tmdb, mdblist, imdb, tomatoes, tomatoesaudience, letterboxd, | all | metacritic, metacriticuser, trakt, rogerebert, myanimelist, | | anilist, kitsu (backdrop only) | logoRatings | tmdb, mdblist, imdb, tomatoes, tomatoesaudience, letterboxd, | all | metacritic, metacriticuser, trakt, rogerebert, myanimelist, | | anilist, kitsu (logo only) | lang | Any TMDB ISO 639-1 code (en, it, fr, es, de, ja, ko, etc.) | en streamBadges | auto, on, off (global fallback) | auto posterStreamBadges | auto, on, off (poster only) | auto backdropStreamBadges | auto, on, off (backdrop only) | auto qualityBadgesSide | left, right (poster top-bottom only) | left posterQualityBadgesPosition | auto, left, right (poster top/bottom only) | auto qualityBadgesStyle | glass, square, plain (global fallback) | glass posterQualityBadgesStyle| glass, square, plain (poster only) | glass backdropQualityBadgesStyle| glass, square, plain (backdrop only) | glass ratingStyle | glass, square, plain | glass imageText | original, clean, alternative | original posterRatingsLayout | top, bottom, left, right, top-bottom, left-right | top-bottom posterRatingsMaxPerSide | Number (1-20) | auto backdropRatingsLayout | center, right, right-vertical | center tmdbKey (REQUIRED) | Your TMDB v3 API Key | - mdblistKey (REQUIRED) | Your MDBList.com API Key | - TMDB NOTE: Always prefer tmdb:movie:id or tmdb:tv:id. Using bare tmdb:id can collide between movie and tv. --- INTEGRATION REQUIREMENTS --- 1. Use ONLY the "erdbConfig" field (no modal and no extra settings panels). 2. Add toggles to enable/disable: poster, backdrop, logo. 3. If a type is disabled, keep the original artwork (do not call ERDB for that type). 4. Build ERDB URLs using the decoded config and inject them into both catalog and meta responses. --- PER-TYPE SETTINGS --- poster -> ratingStyle = cfg.posterRatingStyle, imageText = cfg.posterImageText backdrop -> ratingStyle = cfg.backdropRatingStyle, imageText = cfg.backdropImageText logo -> ratingStyle = cfg.logoRatingStyle (omit imageText) Ratings providers can be set per-type via cfg.posterRatings / cfg.backdropRatings / cfg.logoRatings (fallback to cfg.ratings). Quality badges style can be set per-type via cfg.posterQualityBadgesStyle / cfg.backdropQualityBadgesStyle (fallback to cfg.qualityBadgesStyle). --- URL BUILD --- const typeRatingStyle = type === 'poster' ? cfg.posterRatingStyle : type === 'backdrop' ? cfg.backdropRatingStyle : cfg.logoRatingStyle; const typeImageText = type === 'backdrop' ? cfg.backdropImageText : cfg.posterImageText; ${cfg.baseUrl}/${type}/${id}.jpg?tmdbKey=${cfg.tmdbKey}&mdblistKey=${cfg.mdblistKey}&ratings=${cfg.ratings}&posterRatings=${cfg.posterRatings}&backdropRatings=${cfg.backdropRatings}&logoRatings=${cfg.logoRatings}&lang=${cfg.lang}&streamBadges=${cfg.streamBadges}&posterStreamBadges=${cfg.posterStreamBadges}&backdropStreamBadges=${cfg.backdropStreamBadges}&qualityBadgesSide=${cfg.qualityBadgesSide}&posterQualityBadgesPosition=${cfg.posterQualityBadgesPosition}&qualityBadgesStyle=${cfg.qualityBadgesStyle}&posterQualityBadgesStyle=${cfg.posterQualityBadgesStyle}&backdropQualityBadgesStyle=${cfg.backdropQualityBadgesStyle}&ratingStyle=${typeRatingStyle}&imageText=${typeImageText}&posterRatingsLayout=${cfg.posterRatingsLayout}&posterRatingsMaxPerSide=${cfg.posterRatingsMaxPerSide}&backdropRatingsLayout=${cfg.backdropRatingsLayout} Omit imageText when type=logo. Skip any params that are undefined. Keep empty ratings/posterRatings/backdropRatings/logoRatings to disable providers.

Live Examples

// Movie Poster (IMDb)
http://localhost:3000/poster/tt0133093.jpg?ratings=imdb,tmdb&ratingStyle=plain
// Backdrop (TMDB)
http://localhost:3000/backdrop/tmdb:603.jpg?ratings=mdblist&backdropRatingsLayout=right-vertical