# Images

> Every image path in an amodb response loads from https://img.amodb.dev/t/p/{size}/{file}. Sizes match TMDB: w92, w154, w185, w300, w342, w500, w780, w1280, h632 and original. Images need no key and do not count toward your rate. The edge keeps them for 30 days, and /3/configuration returns the base URLs.

## URL pattern

```text
https://img.amodb.dev/t/p/{size}/{file}
```

`{file}` is the path from a response field such as `poster_path`, `backdrop_path`, `profile_path`, `still_path` or `logo_path`. It already starts with `/`.

```text
https://img.amodb.dev/t/p/w500/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg
```

## Sizes

| Size       | Width or height | Good for                                  |
| ---------- | --------------- | ----------------------------------------- |
| `w92`      | 92 px wide      | Search suggestions                        |
| `w154`     | 154 px wide     | Dense lists                               |
| `w185`     | 185 px wide     | Grids on desktop, profile photos          |
| `w300`     | 300 px wide     | Backdrop thumbnails, OMDb `Poster`        |
| `w342`     | 342 px wide     | Grids on phones with high density screens |
| `w500`     | 500 px wide     | Detail pages                              |
| `w780`     | 780 px wide     | Large posters, medium backdrops           |
| `w1280`    | 1280 px wide    | Full width backdrops                      |
| `h632`     | 632 px high     | Profile photos at full height             |
| `original` | Source size     | Downloads and print                       |

Posters are 2:3. Set `width` and `height` on the `<img>` so the page does not shift while it loads.

## Base URLs from the configuration endpoint

`GET /3/configuration` returns the same structure as TMDB. Clients that build image URLs from it work without changes.

```json
{
  "images": {
    "base_url": "http://img.amodb.dev/t/p/",
    "secure_base_url": "https://img.amodb.dev/t/p/",
    "poster_sizes": ["w92", "w154", "w185", "w342", "w500", "w780", "original"]
  }
}
```

The edge keeps `/3/configuration` for 24 hours, so reading it once per day is enough.

## Responsive images

```js
const base = "https://img.amodb.dev/t/p";
const srcset = ["w185", "w342", "w500"]
  .map((size) => `${base}/${size}${movie.poster_path} ${size.slice(1)}w`)
  .join(", ");

const html = `<img src="${base}/w342${movie.poster_path}" srcset="${srcset}"
  sizes="(min-width: 64rem) 185px, 33vw" width="342" height="513"
  alt="${movie.title} poster" loading="lazy">`;
```

## Caching

Images stay in the edge cache for 30 days. Store the file path with your record and build the URL when you render it, so you can switch sizes later without new API calls.

## Questions and answers

### Can I put image URLs straight into img tags?

Yes. Image URLs carry no key, so they are safe in public pages. Pick the smallest size that covers the displayed width times the device pixel ratio.

### Do image requests count toward my rate limit?

No. The image host does not read a key, so posters and backdrops never use your requests per minute.

## Related pages

- [Quickstart](https://amodb.dev/quickstart/): Make your first amodb call: get a key, request movie details in curl, JavaScript, Python, PHP or Go, then load the poster from img.amodb.dev. Under 2 minutes.
- [Languages](https://amodb.dev/languages/): amodb serves titles, overviews and names in 14 languages. Pass a TMDB style tag such as ru-RU or pt-BR in language; any other tag falls back to English.
- [Rate limits](https://amodb.dev/rate-limits/): amodb limits each key by requests per minute in a sliding 60 second window: 20, 40 or 120 by plan. Read the rate limit headers and handle 429 with Retry-After.

Updated: 2026-10-18. Source: https://amodb.dev/images/
