# API деталей фільму

> Ендпоінт деталей фільму повертає один фільм за id на GET /3/movie/{movie_id}. JSON збігається з TMDB v3, тож наявним клієнтам потрібен лише новий базовий URL. Додайте append_to_response, щоб одним запитом отримати акторський склад, відео, зображення та додаткові дані amodb: ratings, moods, soundtracks, wikidata і showtimes.

## Ендпоінт

`GET /3/movie/{movie_id}`

```bash
curl "https://api.amodb.dev/3/movie/550?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

Відповідь:

```json
{
  "adult": false,
  "backdrop_path": "/b9HyPoxwxjxkWEUL5ErZdhApQe2.jpg",
  "belongs_to_collection": null,
  "budget": 63000000,
  "genres": [
    {
      "id": 18,
      "name": "Drama"
    },
    {
      "id": 53,
      "name": "Thriller"
    }
  ],
  "homepage": "https://www.20thcenturystudios.com/movies/fight-club",
  "id": 550,
  "imdb_id": "tt0137523",
  "origin_country": [
    "US",
    "DE"
  ],
  "original_language": "en",
  "original_title": "Fight Club",
  "overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the wa...",
  "popularity": 39.0054,
  "poster_path": "/jSziioSwPVrOy9Yow3XhWIBDjq1.jpg",
  "production_companies": [
    {
      "id": 25,
      "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
      "name": "20th Century Fox",
      "origin_country": "US"
    },
    {
      "id": 508,
      "logo_path": "/4sGWXoboEkWPphI6es6rTmqkCBh.png",
      "name": "Regency Enterprises",
      "origin_country": "US"
    },
    {
      "id": 711,
      "logo_path": "/tEiIH5QesdheJmDAqQwvtN60727.png",
      "name": "Fox 2000 Pictures",
      "origin_country": "US"
    }
  ],
  "production_countries": [
    {
      "iso_3166_1": "US",
      "name": "United States of America"
    },
    {
      "iso_3166_1": "DE",
      "name": "Germany"
    }
  ],
  "release_date": "1999-10-15",
  "revenue": 101209702,
  "runtime": 139,
  "spoken_languages": [
    {
      "english_name": "English",
      "iso_639_1": "en",
      "name": "English"
    }
  ],
  "status": "Released",
  "tagline": "Mischief. Mayhem. Soap.",
  "title": "Fight Club",
  "video": false,
  "vote_average": 8.437,
  "vote_count": 33042
}
```

## Отримання деталей фільму

`GET /3/movie/{movie_id}` повертає основний запис одного фільму: назви, опис, тривалість, жанри, дату виходу, бюджет, збори, кінокомпанії та шляхи до зображень. Id є тим самим числовим id, що й у TMDB, тож фільм, який ви вже зберігаєте як `550`, зберігає цей id і тут.

Наведений нижче приклад запитує фільм англійською й у тому самому виклику додає його рейтинги.

```bash
curl -s "https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const movie = await res.json();
console.log(movie.title, movie.runtime, movie.ratings.imdb?.value);
```

```python
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/movie/550",
    params={"language": "en-US", "append_to_response": "ratings"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
movie = r.json()
imdb = movie["ratings"]["imdb"]
print(movie["title"], movie["runtime"], imdb and imdb["value"])
```

```php
<?php
$url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status !== 200) {
    throw new RuntimeException("amodb returned $status");
}
$movie = json_decode($body, true);
echo $movie['title'], ' ', $movie['runtime'], ' ', $movie['ratings']['imdb']['value'] ?? 'n/a', PHP_EOL;
```

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

type Movie struct {
	Title   string `json:"title"`
	Runtime int    `json:"runtime"`
}

func main() {
	url := "https://api.amodb.dev/3/movie/550?language=en-US"
	req, _ := http.NewRequest("GET", url, nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		panic(res.Status)
	}
	var m Movie
	json.NewDecoder(res.Body).Decode(&m)
	fmt.Println(m.Title, m.Runtime)
}
```

### Параметри

| Параметр             | Де           | Обов'язковий | Опис                                                                                                       |
| -------------------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------- |
| `movie_id`           | шлях         | так          | Числовий id фільму, наприклад `550`.                                                                       |
| `api_key`            | рядок запиту | один із двох | Ваш ключ. Використовуйте його або заголовок `Authorization: Bearer`.                                       |
| `language`           | рядок запиту | ні           | Тег TMDB, наприклад `en-US`, `ru-RU` або `pt-BR`. Обслуговується 14 базових мов. За замовчуванням `en-US`. |
| `append_to_response` | рядок запиту | ні           | Список до 20 підресурсів через кому, які додаються до відповіді.                                           |

### Поля відповіді

| Поле                           | Тип               | Примітки                                                                                               |
| ------------------------------ | ----------------- | ------------------------------------------------------------------------------------------------------ |
| `id`                           | ціле число        | Id фільму.                                                                                             |
| `imdb_id`                      | рядок або null    | IMDb id, наприклад `tt0137523`.                                                                        |
| `title`, `original_title`      | рядок             | Локалізована й оригінальна назва.                                                                      |
| `original_language`            | рядок             | Код мови, наприклад `en`.                                                                              |
| `overview`, `tagline`          | рядок             | Локалізований текст, порожній, якщо перекладу немає.                                                   |
| `homepage`                     | рядок             | Офіційний сайт, порожній, якщо невідомий.                                                              |
| `release_date`                 | рядок             | `YYYY-MM-DD`, порожній, якщо невідома.                                                                 |
| `status`                       | рядок             | Стан випуску, наприклад `Released` або `In Production`.                                                |
| `runtime`                      | ціле число        | Хвилини.                                                                                               |
| `budget`, `revenue`            | ціле число        | Долари США, `0`, якщо невідомо.                                                                        |
| `genres`                       | масив             | Об'єкти з `id` і `name`.                                                                               |
| `belongs_to_collection`        | об'єкт або null   | `id`, `name`, `poster_path`, `backdrop_path`. Див. [колекції](https://amodb.dev/uk/collections/).      |
| `production_companies`         | масив             | `id`, `logo_path`, `name`, `origin_country`.                                                           |
| `production_countries`         | масив             | `iso_3166_1`, `name`.                                                                                  |
| `spoken_languages`             | масив             | `english_name`, `iso_639_1`, `name`.                                                                   |
| `origin_country`               | масив             | Коди країн, наприклад `US`.                                                                            |
| `poster_path`, `backdrop_path` | рядок або null    | Додайте до `https://img.amodb.dev/t/p/{size}`. Див. [API зображень](https://amodb.dev/uk/images-api/). |
| `popularity`                   | число             | Відносна оцінка, яку використовує список популярних.                                                   |
| `vote_average`, `vote_count`   | число, ціле число | Сукупна оцінка користувачів.                                                                           |
| `adult`, `video`               | булеве значення   | Обидва дорівнюють `false`. Фільми для дорослих ніколи не віддаються.                                   |

### Приклад відповіді

`GET /3/movie/550?language=en-US&append_to_response=ratings`, зі скороченими довгими масивами й текстом:

```json
{
  "adult": false,
  "backdrop_path": "/b9HyPoxwxjxkWEUL5ErZdhApQe2.jpg",
  "belongs_to_collection": null,
  "budget": 63000000,
  "genres": [
    {
      "id": 18,
      "name": "Drama"
    },
    {
      "id": 53,
      "name": "Thriller"
    }
  ],
  "homepage": "https://www.20thcenturystudios.com/movies/fight-club",
  "id": 550,
  "imdb_id": "tt0137523",
  "origin_country": [
    "US",
    "DE"
  ],
  "original_language": "en",
  "original_title": "Fight Club",
  "overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking n...",
  "popularity": 39.0054,
  "poster_path": "/jSziioSwPVrOy9Yow3XhWIBDjq1.jpg",
  "production_companies": [
    {
      "id": 25,
      "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
      "name": "20th Century Fox",
      "origin_country": "US"
    },
    {
      "id": 508,
      "logo_path": "/4sGWXoboEkWPphI6es6rTmqkCBh.png",
      "name": "Regency Enterprises",
      "origin_country": "US"
    }
  ],
  "production_countries": [
    {
      "iso_3166_1": "US",
      "name": "United States of America"
    },
    {
      "iso_3166_1": "DE",
      "name": "Germany"
    }
  ],
  "release_date": "1999-10-15",
  "revenue": 101209702,
  "runtime": 139,
  "spoken_languages": [
    {
      "english_name": "English",
      "iso_639_1": "en",
      "name": "English"
    }
  ],
  "status": "Released",
  "tagline": "Mischief. Mayhem. Soap.",
  "title": "Fight Club",
  "video": false,
  "vote_average": 8.437,
  "vote_count": 33039,
  "ratings": {
    "imdb": {
      "value": 8.8,
      "votes": 2669989
    },
    "kinopoisk": {
      "value": 8.7,
      "votes": null
    },
    "metacritic": {
      "value": 67,
      "votes": null
    },
    "rotten_tomatoes": {
      "value": 81,
      "votes": null
    },
    "tmdb": {
      "value": 8.437,
      "votes": 33039
    }
  }
}
```

Блок `ratings` походить від `append_to_response`. Кожен постачальник є об'єктом `{value, votes}` або `null`, як описано на сторінці [рейтинги](https://amodb.dev/uk/ratings/).

## Поєднання даних через append_to_response

Один виклик може замінити шість. Перелічіть підресурси, які потрібні, і кожен прийде під власним ключем. Працюють стандартні значення TMDB: `credits`, `videos`, `images`, `keywords`, `translations`, `external_ids`, `release_dates`, `alternative_titles`, `recommendations`, `similar`, `reviews`, `lists` і `watch/providers`. amodb додає ще п'ять.

| Значення      | Додає                                                      | Докладніше                                                         |
| ------------- | ---------------------------------------------------------- | ------------------------------------------------------------------ |
| `ratings`     | Оцінки IMDb, Kinopoisk, Metacritic, Rotten Tomatoes і TMDB | [Рейтинги](https://amodb.dev/uk/ratings/)                          |
| `moods`       | Індикатори настрою                                         | [Настрої](https://amodb.dev/uk/moods/)                             |
| `soundtracks` | Треки, що звучать у фільмі                                 | [Саундтреки](https://amodb.dev/uk/soundtracks/)                    |
| `wikidata`    | Wikidata id, бюджет, касові збори, нагороди, місця зйомок  | [Пошук за зовнішнім ID](https://amodb.dev/uk/find-by-external-id/) |
| `showtimes`   | Сеанси в кінотеатрах, де вони відомі                       | [Сеанси](https://amodb.dev/uk/showtimes/)                          |

Кожен доданий блок враховується як частина одного HTTP-запиту. Запит із десятьма доданими значеннями все одно використовує один із ваших 20, 40 чи 120 запитів на хвилину. Додані блоки `ratings`, `moods` і `soundtracks` не містять ключа `id`, який повертають окремі шляхи.

## Пов'язані ендпоінти фільмів

Усі шляхи нижче мають спільну базу `https://api.amodb.dev/3` і параметр `language`.

| Метод і шлях                               | Повертає                                      | Додаткові параметри |
| ------------------------------------------ | --------------------------------------------- | ------------------- |
| `GET /movie/{movie_id}/alternative_titles` | `{id, titles}`, часто порожній масив          | немає               |
| `GET /movie/{movie_id}/release_dates`      | Дати виходу й вікові сертифікації за країнами | немає               |
| `GET /movie/{movie_id}/recommendations`    | Список із 20 рекомендованих фільмів           | немає               |
| `GET /movie/{movie_id}/similar`            | Список із 20 схожих фільмів                   | немає               |
| `GET /movie/{movie_id}/reviews`            | `results` порожній для більшості фільмів      | немає               |
| `GET /movie/{movie_id}/lists`              | Публічні списки, що містять фільм             | `page`              |
| `GET /movie/{movie_id}/watch/providers`    | Провайдери стримінгу й оренди за країнами     | немає               |
| `GET /movie/latest`                        | Найновіший доданий запис фільму               | немає               |

Списки recommendations і similar завжди повертають сторінку 1 із 20 елементами. Відповідь `lists` розбито на сторінки параметром `page`, по 20 списків на сторінку. Посторінкові списки в інших місцях API приймають `page` від 1 до 500.

Акторський склад, зображення, відео, переклади, ключові слова та зовнішні id мають власні сторінки: [акторський склад і знімальна група](https://amodb.dev/uk/credits/), [API зображень](https://amodb.dev/uk/images-api/), [відео та трейлери](https://amodb.dev/uk/videos-trailers/), [переклади](https://amodb.dev/uk/translations/), [ключові слова](https://amodb.dev/uk/keywords/) і [пошук за зовнішнім ID](https://amodb.dev/uk/find-by-external-id/). amodb не пропонує шляхів TMDB `changes`.

## Помилки

Помилки мають тіло TMDB, наприклад `{"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}`.

| HTTP | status_code | Коли                                                                                 |
| ---- | ----------- | ------------------------------------------------------------------------------------ |
| 401  | 7           | Ключ відсутній або хибний.                                                           |
| 402  | 36          | Період дії тарифу закінчився.                                                        |
| 404  | 34          | Немає фільму з таким id, шлях не пропонується або це фільм для дорослих.             |
| 405  | 37          | Ви викликали метод запису, наприклад оцінювання фільму.                              |
| 429  | 25          | Ви перевищили ліміт запитів на хвилину. Зачекайте кількість секунд із `Retry-After`. |

Повний список на сторінці [помилки](https://amodb.dev/uk/errors/), а ліміти за тарифами на сторінці [ліміти запитів](https://amodb.dev/uk/rate-limits/).

## Практичні поради

- Зберігайте `id` та `imdb_id` разом. Будь-який із них знову знаходить фільм через [пошук за зовнішнім ID](https://amodb.dev/uk/find-by-external-id/).
- Запитуйте мову, яку показуєте. Текстове поле може бути порожнім, якщо перекладу цією мовою немає, тому перевіряйте порожній рядок і повторюйте запит із `en-US`, якщо потрібен запасний варіант.
- Кешуйте деталі на своєму боці на кілька годин. Серверний кеш уже тримає їх 6 годин, тому коротший клієнтський кеш нічого не дає.
- Щоб отримати список фільмів, а не прочитати один, дивіться [пошук](https://amodb.dev/uk/search/), [discover](https://amodb.dev/uk/discover/) і [тренди та списки](https://amodb.dev/uk/trending-lists/).

## Запитання й відповіді

### Чи потрібно змінювати код мого клієнта TMDB?

Ні, для шляхів, які обслуговує amodb. Шляхи, параметри запиту та поля JSON такі самі, як у TMDB v3. Змініть базовий URL на https://api.amodb.dev/3 і використовуйте ключ amodb у api_key або в заголовку Bearer.

### Скільки підзапитів може об'єднати append_to_response?

До 20 значень в одному списку через кому, як у TMDB. Увесь виклик є одним HTTP-запитом, тому враховується в ліміті запитів на хвилину один раз. Невідомі назви ігноруються без помилки.

### Яка мова використовується, якщо пропустити параметр language?

Англійська (en-US). Параметр language приймає теги TMDB, наприклад ru-RU або pt-BR. Обслуговуються лише 14 базових мов, а будь-який інший тег переходить на англійську.

### Чи підтримуються методи запису TMDB, наприклад оцінювання фільму?

Ні. Методи запису для облікового запису, сесії, оцінок і списків повертають 405 зі status_code 37 у тілі помилки TMDB. Шляхи читання для фільмів, персон, списків і пошуку обслуговуються. Деякі шляхи TMDB, як-от changes, не пропонуються.

### Наскільки свіжі дані?

Деталі фільму кешуються на 6 годин, а ендпоінт найновішого фільму на 10 хвилин. Зміна запису може з'явитися у виклику деталей із затримкою до 6 годин.

## Пов'язані сторінки

- [API серіалів](https://amodb.dev/uk/tv-series/): API серіалів з тими самими шляхами та JSON, що в TMDB v3. Отримайте серіал за id із сезонами, телемережами й наступною серією, плюс вікові рейтинги.
- [API акторського складу та знімальної групи](https://amodb.dev/uk/credits/): API credits зі шляхами та JSON, як у TMDB v3. Отримайте акторський склад і знімальну групу фільмів, серіалів, сезонів і серій з полями order, department і job.
- [API зображень і хост зображень](https://amodb.dev/uk/images-api/): API зображень фільмів зі шляхами TMDB v3: списки постерів, фонів, логотипів і кадрів проєкту, а потім завантаження з img.amodb.dev у 10 розмірах без ключа.
- [Рейтинги фільмів і серіалів](https://amodb.dev/uk/ratings/): API рейтингів фільмів повертає оцінки IMDb, Kinopoisk, Metacritic, Rotten Tomatoes і TMDB для фільму чи серіалу одним викликом, з null для невідомих джерел.
- [Ендпоінти трендів і списків](https://amodb.dev/uk/trending-lists/): API трендів фільмів зі шляхами TMDB v3: чарти за день і тиждень, а також списки в прокаті, популярних, найкращих і майбутніх фільмів та серіалів, кеш 30 хвилин.
- [Швидкий старт](https://amodb.dev/uk/quickstart/): Перший виклик amodb: отримайте ключ, запросіть деталі фільму в curl, JavaScript, Python, PHP чи Go і завантажте постер з img.amodb.dev. Менш ніж за 2 хвилини.

Оновлено: 2026-10-18. Source: https://amodb.dev/uk/movies/
