# API detalii film

> Endpoint-ul de detalii film întoarce un film după ID la GET /3/movie/{movie_id}. JSON-ul se potrivește cu TMDB v3, deci clienții existenți au nevoie doar de un URL de bază nou. Adaugă append_to_response ca să preiei credite, videoclipuri, imagini și extra amodb ratings, moods, soundtracks, wikidata și showtimes într-o singură cerere.

## Endpoint

`GET /3/movie/{movie_id}`

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

Răspuns:

```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
}
```

## Obține detaliile unui film

`GET /3/movie/{movie_id}` întoarce fișa de bază a unui film: titluri, descriere, durată, genuri, data lansării, buget, încasări, companii de producție și căi de imagini. ID-ul este același ID numeric pe care îl folosește TMDB, deci un film pe care îl stochezi deja ca `550` păstrează acel ID aici.

Exemplul de mai jos cere filmul în engleză și îi atașează evaluările în același apel.

```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)
}
```

### Parametri

| Parametru            | Loc        | Obligatoriu          | Descriere                                                                                           |
| -------------------- | ---------- | -------------------- | --------------------------------------------------------------------------------------------------- |
| `movie_id`           | cale       | da                   | ID numeric de film, de exemplu `550`.                                                               |
| `api_key`            | interogare | una dintre cele două | Cheia ta. Folosește-o pe aceasta sau antetul `Authorization: Bearer`.                               |
| `language`           | interogare | nu                   | Etichetă TMDB precum `en-US`, `ru-RU` sau `pt-BR`. Sunt servite 14 limbi de bază. Implicit `en-US`. |
| `append_to_response` | interogare | nu                   | Listă separată prin virgulă de până la 20 de sub-resurse de îmbinat în răspuns.                     |

### Câmpurile răspunsului

| Câmp                           | Tip                 | Observații                                                                                         |
| ------------------------------ | ------------------- | -------------------------------------------------------------------------------------------------- |
| `id`                           | număr întreg        | ID-ul filmului.                                                                                    |
| `imdb_id`                      | șir sau null        | ID IMDb precum `tt0137523`.                                                                        |
| `title`, `original_title`      | șir                 | Titlul localizat și cel original.                                                                  |
| `original_language`            | șir                 | Cod de limbă precum `en`.                                                                          |
| `overview`, `tagline`          | șir                 | Text localizat, gol când nu există traducere.                                                      |
| `homepage`                     | șir                 | Site oficial, gol când nu se cunoaște.                                                             |
| `release_date`                 | șir                 | `YYYY-MM-DD`, gol când nu se cunoaște.                                                             |
| `status`                       | șir                 | Starea lansării, de exemplu `Released` sau `In Production`.                                        |
| `runtime`                      | număr întreg        | Minute.                                                                                            |
| `budget`, `revenue`            | număr întreg        | Dolari SUA, `0` când nu se cunoaște.                                                               |
| `genres`                       | array               | Obiecte cu `id` și `name`.                                                                         |
| `belongs_to_collection`        | obiect sau null     | `id`, `name`, `poster_path`, `backdrop_path`. Vezi [colecții](https://amodb.dev/ro/collections/).  |
| `production_companies`         | array               | `id`, `logo_path`, `name`, `origin_country`.                                                       |
| `production_countries`         | array               | `iso_3166_1`, `name`.                                                                              |
| `spoken_languages`             | array               | `english_name`, `iso_639_1`, `name`.                                                               |
| `origin_country`               | array               | Coduri de țară precum `US`.                                                                        |
| `poster_path`, `backdrop_path` | șir sau null        | Se adaugă la `https://img.amodb.dev/t/p/{size}`. Vezi [imagini](https://amodb.dev/ro/images-api/). |
| `popularity`                   | număr               | Scor relativ folosit de lista populară.                                                            |
| `vote_average`, `vote_count`   | număr, număr întreg | Scor agregat al utilizatorilor.                                                                    |
| `adult`, `video`               | boolean             | Ambele sunt `false`. Titlurile pentru adulți nu sunt servite niciodată.                            |

### Exemplu de răspuns

`GET /3/movie/550?language=en-US&append_to_response=ratings`, cu array-urile lungi și textul scurtate:

```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
    }
  }
}
```

Blocul `ratings` vine din `append_to_response`. Fiecare furnizor este un obiect `{value, votes}` sau `null`, după cum este descris la [evaluări](https://amodb.dev/ro/ratings/).

## Combină datele cu append_to_response

Un singur apel poate înlocui șase. Listează sub-resursele de care ai nevoie și fiecare sosește sub propria cheie. Valorile TMDB standard funcționează: `credits`, `videos`, `images`, `keywords`, `translations`, `external_ids`, `release_dates`, `alternative_titles`, `recommendations`, `similar`, `reviews`, `lists` și `watch/providers`. amodb adaugă încă cinci.

| Valoare       | Adaugă                                                         | Detalii                                                             |
| ------------- | -------------------------------------------------------------- | ------------------------------------------------------------------- |
| `ratings`     | Scorurile IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDB | [Evaluări](https://amodb.dev/ro/ratings/)                           |
| `moods`       | Indicatori de atmosferă                                        | [Atmosfere](https://amodb.dev/ro/moods/)                            |
| `soundtracks` | Piesele auzite în film                                         | [Coloane sonore](https://amodb.dev/ro/soundtracks/)                 |
| `wikidata`    | ID Wikidata, buget, încasări, premii, locuri de filmare        | [Căutare după ID extern](https://amodb.dev/ro/find-by-external-id/) |
| `showtimes`   | Program de proiecții în cinema, unde se știe                   | [Program de proiecții](https://amodb.dev/ro/showtimes/)             |

Fiecare bloc atașat se numără ca parte dintr-o singură cerere HTTP. O cerere cu zece valori atașate folosește tot una dintre cele 20, 40 sau 120 de cereri pe minut. Blocurile atașate `ratings`, `moods` și `soundtracks` omit cheia `id` pe care o întorc căile independente.

## Endpoint-uri înrudite pentru filme

Toate căile de mai jos au baza `https://api.amodb.dev/3` și parametrul `language`.

| Metodă și cale                             | Întoarce                                         | Parametri suplimentari |
| ------------------------------------------ | ------------------------------------------------ | ---------------------- |
| `GET /movie/{movie_id}/alternative_titles` | `{id, titles}`, adesea un array gol              | niciunul               |
| `GET /movie/{movie_id}/release_dates`      | Date de lansare și clasificări pe țară           | niciunul               |
| `GET /movie/{movie_id}/recommendations`    | O listă de 20 de filme recomandate               | niciunul               |
| `GET /movie/{movie_id}/similar`            | O listă de 20 de filme similare                  | niciunul               |
| `GET /movie/{movie_id}/reviews`            | `results` este gol pentru majoritatea titlurilor | niciunul               |
| `GET /movie/{movie_id}/lists`              | Liste publice care conțin filmul                 | `page`                 |
| `GET /movie/{movie_id}/watch/providers`    | Furnizori de streaming și închiriere pe țară     | niciunul               |
| `GET /movie/latest`                        | Cea mai nouă înregistrare de film adăugată       | niciunul               |

Listele de recomandări și de filme similare întorc mereu pagina 1 cu 20 de elemente. Răspunsul `lists` este paginat cu `page`, câte 20 de liste pe pagină. Listele paginate din alte părți ale API-ului primesc `page` de la 1 la 500.

Creditele, imaginile, videoclipurile, traducerile, cuvintele-cheie și ID-urile externe au propriile pagini: [credite](https://amodb.dev/ro/credits/), [imagini](https://amodb.dev/ro/images-api/), [videoclipuri și trailere](https://amodb.dev/ro/videos-trailers/), [traduceri](https://amodb.dev/ro/translations/), [cuvinte-cheie](https://amodb.dev/ro/keywords/) și [căutare după ID extern](https://amodb.dev/ro/find-by-external-id/). amodb nu oferă căile TMDB `changes`.

## Erori

Erorile folosesc corpul TMDB, de exemplu `{"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}`.

| HTTP | status_code | Când                                                                            |
| ---- | ----------- | ------------------------------------------------------------------------------- |
| 401  | 7           | Cheia lipsește sau este greșită.                                                |
| 402  | 36          | Perioada planului s-a încheiat.                                                 |
| 404  | 34          | Niciun film cu acel ID, o cale care nu este oferită sau un titlu pentru adulți. |
| 405  | 37          | Ai apelat o metodă de scriere, precum evaluarea unui film.                      |
| 429  | 25          | Ai depășit cererile pe minut. Așteaptă numărul de secunde din `Retry-After`.    |

Lista completă este pe pagina [erori](https://amodb.dev/ro/errors/), iar limitele pe plan sunt la [limite de cereri](https://amodb.dev/ro/rate-limits/).

## Note practice

- Stochează `id` și `imdb_id` împreună. Oricare regăsește filmul prin [căutare după ID extern](https://amodb.dev/ro/find-by-external-id/).
- Cere limba pe care o afișezi. Un câmp de text poate fi gol când nu există traducere în acea limbă, deci verifică dacă este un șir gol și cere din nou în `en-US` dacă ai nevoie de o variantă de rezervă.
- Pune detaliile în cache și la tine pentru câteva ore. Cache-ul serverului le ține deja 6 ore, deci un cache de client mai scurt nu aduce nimic.
- Ca să listezi filme în loc să citești unul, vezi [căutare](https://amodb.dev/ro/search/), [descoperire](https://amodb.dev/ro/discover/) și [tendințe și liste](https://amodb.dev/ro/trending-lists/).

## Întrebări și răspunsuri

### Trebuie să-mi schimb codul clientului TMDB?

Nu, pentru căile pe care le servește amodb. Căile, parametrii de interogare și câmpurile JSON sunt aceleași ca la TMDB v3. Schimbă URL-ul de bază în https://api.amodb.dev/3 și folosește cheia ta amodb în api_key sau într-un antet Bearer.

### Câte sub-cereri poate combina append_to_response?

Până la 20 de valori într-o listă separată prin virgulă, ca la TMDB. Tot apelul este o singură cerere HTTP, deci se numără o dată în limita cererilor pe minut. Numele necunoscute sunt ignorate fără eroare.

### Ce limbă se folosește când omit parametrul language?

Engleza (en-US). Parametrul language acceptă etichete TMDB precum ru-RU sau pt-BR. Sunt servite doar cele 14 limbi de bază, iar orice altă etichetă revine la engleză.

### Sunt acceptate metodele de scriere TMDB, precum evaluarea unui film?

Nu. Metodele de scriere pentru cont, sesiune, evaluări și liste întorc 405 cu status_code 37 în corpul de eroare TMDB. Căile de citire pentru titluri, persoane, liste și căutare sunt servite. Câteva căi TMDB, precum changes, nu sunt oferite.

### Cât de proaspete sunt datele?

Detaliile filmelor sunt ținute în cache 6 ore, iar endpoint-ul pentru cel mai nou film 10 minute. O modificare a unei înregistrări poate dura până la 6 ore să apară într-un apel de detalii.

## Pagini conexe

- [API seriale TV](https://amodb.dev/ro/tv-series/): API seriale TV cu căile și JSON-ul TMDB v3. Preia un serial după ID cu sezoane, rețele și următorul episod, plus clasificări de conținut și furnizori.
- [API credite](https://amodb.dev/ro/credits/): API credite cu aceleași căi și același JSON ca TMDB v3. Distribuția și echipa pentru filme, seriale, sezoane și episoade, cu order, department și job.
- [API imagini și gazdă de imagini](https://amodb.dev/ro/images-api/): API imagini filme cu căi TMDB v3: listează postere, imagini de fundal, logouri și cadre, apoi încarcă-le de la img.amodb.dev în 10 dimensiuni, fără cheie.
- [Evaluări pentru filme și TV](https://amodb.dev/ro/ratings/): API evaluări filme ce întoarce scorurile IMDb, Kinopoisk, Metacritic, Rotten Tomatoes și TMDB pentru un titlu într-un apel, cu null pentru sursele necunoscute.
- [Endpoint-uri pentru tendințe și liste](https://amodb.dev/ro/trending-lists/): API filme în tendințe cu căi TMDB v3: topuri pe zi și săptămână, plus now playing, populare, bine cotate și viitoare pentru filme și TV, în cache 30 de minute.
- [Ghid rapid](https://amodb.dev/ro/quickstart/): Fă primul apel amodb: ia o cheie, cere detaliile unui film în curl, JavaScript, Python, PHP sau Go, apoi încarcă posterul de pe img.amodb.dev. Sub 2 minute.

Actualizat: 2026-10-19. Source: https://amodb.dev/ro/movies/
