# 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/bg/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/bg/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/bg/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/bg/ratings/)                                    |
| `moods`       | Индикатори за настроение                                      | [Настроения](https://amodb.dev/bg/moods/)                                    |
| `soundtracks` | Песни, които звучат във филма                                 | [Саундтраци](https://amodb.dev/bg/soundtracks/)                              |
| `wikidata`    | Wikidata id, бюджет, приходи, награди, места на снимане       | [Търсене по външен идентификатор](https://amodb.dev/bg/find-by-external-id/) |
| `showtimes`   | Прожекции в кината, където са известни                        | [Прожекции](https://amodb.dev/bg/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/bg/credits/), [изображения](https://amodb.dev/bg/images-api/), [видеа и трейлъри](https://amodb.dev/bg/videos-trailers/), [преводи](https://amodb.dev/bg/translations/), [ключови думи](https://amodb.dev/bg/keywords/) и [търсене по външен идентификатор](https://amodb.dev/bg/find-by-external-id/). amodb не предлага пътищата `changes` на TMDB.

## Грешки

Грешките ползват тялото на 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/bg/errors/), а лимитите по планове са на страницата [лимити на заявките](https://amodb.dev/bg/rate-limits/).

## Практически бележки

- Пазете `id` и `imdb_id` заедно. Всяко от тях намира филма отново през [търсене по външен идентификатор](https://amodb.dev/bg/find-by-external-id/).
- Искайте езика, който показвате. Текстово поле може да е празно, когато на този език няма превод, затова проверявайте за празен низ и повторете заявката с `en-US`, ако ви трябва резервен език.
- Кеширайте детайлите при себе си за няколко часа. Кешът на сървъра вече ги държи 6 часа, така че по-кратък клиентски кеш не носи полза.
- За да изброите филми, вместо да четете един, вижте [търсене](https://amodb.dev/bg/search/), [откриване по филтри](https://amodb.dev/bg/discover/) и [тенденции и списъци](https://amodb.dev/bg/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/bg/tv-series/): API за сериали със същите пътища и JSON като TMDB v3. Сериал по id със сезони, мрежи и следващ епизод, плюс възрастови рейтинги и доставчици за гледане.
- [API за участниците](https://amodb.dev/bg/credits/): API за участници със същите пътища и JSON като TMDB v3. Актьори и екип за филми, сериали, сезони и епизоди, с полета order, department и job.
- [API за изображения и хост за изображения](https://amodb.dev/bg/images-api/): API за изображения на филми с пътища на TMDB v3: списъци с постери, фонови изображения, лога и кадри, после зареждане от img.amodb.dev в 10 размера без ключ.
- [Рейтинги на филми и сериали](https://amodb.dev/bg/ratings/): API за рейтинги на филми връща оценки от IMDb, Kinopoisk, Metacritic, Rotten Tomatoes и TMDB за заглавие с едно извикване, с null за неизвестен източник.
- [Ендпойнти за тенденции и списъци](https://amodb.dev/bg/trending-lists/): API за филми в тенденция с пътища на TMDB v3: класации за ден и седмица, списъци в кината, популярни, най-добри и предстоящи, кеш 30 минути.
- [Бърз старт](https://amodb.dev/bg/quickstart/): Първата ви заявка към amodb: вземете ключ, поискайте детайли за филм с curl, JavaScript, Python, PHP или Go и заредете постера от img.amodb.dev. До 2 минути.

Обновено: 2026-10-19. Source: https://amodb.dev/bg/movies/
