# API дэталяў фільма

> Эндпоінт дэталяў фільма вяртае адзін фільм па id па адрасе GET /3/movie/{movie_id}. JSON адпавядае TMDB v3, таму існуючым кліентам трэба толькі новы базавы URL. Дадайце append_to_response, каб атрымаць credits, videos, images і дадаткі 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/be/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}`. Гл. [выявы](https://amodb.dev/be/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/be/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/be/ratings/)                                     |
| `moods`       | Індыкатары настрою                                         | [Настрой](https://amodb.dev/be/moods/)                                        |
| `soundtracks` | Трэкі, што гучаць у фільме                                 | [Саўндтрэкі](https://amodb.dev/be/soundtracks/)                               |
| `wikidata`    | Id Wikidata, бюджэт, зборы, узнагароды, лакацыі здымак     | [Пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/find-by-external-id/) |
| `showtimes`   | Сеансы ў кінатэатрах, дзе вядомыя                          | [Сеансы](https://amodb.dev/be/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/be/credits/), [выявы](https://amodb.dev/be/images-api/), [відэа і трэйлеры](https://amodb.dev/be/videos-trailers/), [пераклады](https://amodb.dev/be/translations/), [ключавыя словы](https://amodb.dev/be/keywords/) і [пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/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/be/errors/), а ліміты па планах на старонцы [ліміты запытаў](https://amodb.dev/be/rate-limits/).

## Практычныя заўвагі

- Захоўвайце `id` і `imdb_id` разам. Любы з іх зноў знаходзіць фільм праз [пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/find-by-external-id/).
- Запытвайце тую мову, якую паказваеце. Тэкставае поле можа быць пустым, калі ў гэтай мове няма перакладу, таму правярайце пусты радок і паўтарайце запыт з `en-US`, калі патрэбна запасная мова.
- Кэшуйце дэталі на сваім баку на некалькі гадзін. Кэш на серверы ўжо трымае іх 6 гадзін, таму карацейшы кліенцкі кэш нічога не дае.
- Каб атрымаць спіс фільмаў, а не адзін, глядзіце [пошук](https://amodb.dev/be/search/), [пошук па фільтрах](https://amodb.dev/be/discover/) і [трэнды і спісы](https://amodb.dev/be/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, напрыклад ацэнка фільма?

Не. Метады запісу для account, session, rating і list вяртаюць 405 са status_code 37 у целе памылкі TMDB. Шляхі чытання для назваў, персон, спісаў і пошуку працуюць. Некаторыя шляхі TMDB, напрыклад changes, не прапануюцца.

### Наколькі свежыя даныя?

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

## Звязаныя старонкі

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

Абноўлена: 2026-10-19. Source: https://amodb.dev/be/movies/
