# API de détails de film

> Le point de terminaison de détails renvoie un film par id sur GET /3/movie/{movie_id}. Le JSON suit TMDB v3 : les clients existants n'ont besoin que d'une nouvelle URL de base. Ajoutez append_to_response pour récupérer crédits, vidéos, images et les extras amodb ratings, moods, soundtracks, wikidata et showtimes en une requête.

## Point de terminaison

`GET /3/movie/{movie_id}`

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

Réponse:

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

## Obtenir les détails d'un film

`GET /3/movie/{movie_id}` renvoie la fiche de base d'un film : titres, résumé, durée, genres, date de sortie, budget, recettes, sociétés de production et chemins d'images. L'identifiant est le même identifiant numérique que celui de TMDB : un film que vous stockez déjà sous `550` garde cet identifiant ici.

L'exemple ci-dessous demande le film en anglais et ajoute ses notes dans le même appel.

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

### Paramètres

| Paramètre            | Dans    | Requis        | Description                                                                                         |
| -------------------- | ------- | ------------- | --------------------------------------------------------------------------------------------------- |
| `movie_id`           | chemin  | oui           | Identifiant numérique du film, par exemple `550`.                                                   |
| `api_key`            | requête | l'un des deux | Votre clé. Utilisez-la ou l'en-tête `Authorization: Bearer`.                                        |
| `language`           | requête | non           | Balise TMDB comme `en-US`, `ru-RU` ou `pt-BR`. 14 langues de base sont servies. Par défaut `en-US`. |
| `append_to_response` | requête | non           | Liste séparée par des virgules d'au plus 20 sous-ressources à fusionner dans la réponse.            |

### Champs de la réponse

| Champ                          | Type           | Remarques                                                                                            |
| ------------------------------ | -------------- | ---------------------------------------------------------------------------------------------------- |
| `id`                           | entier         | Identifiant du film.                                                                                 |
| `imdb_id`                      | chaîne ou null | Identifiant IMDb comme `tt0137523`.                                                                  |
| `title`, `original_title`      | chaîne         | Titre localisé et titre original.                                                                    |
| `original_language`            | chaîne         | Code de langue comme `en`.                                                                           |
| `overview`, `tagline`          | chaîne         | Texte localisé, vide quand il n'existe pas de traduction.                                            |
| `homepage`                     | chaîne         | Site officiel, vide quand il est inconnu.                                                            |
| `release_date`                 | chaîne         | `YYYY-MM-DD`, vide quand elle est inconnue.                                                          |
| `status`                       | chaîne         | État de sortie, par exemple `Released` ou `In Production`.                                           |
| `runtime`                      | entier         | Minutes.                                                                                             |
| `budget`, `revenue`            | entier         | Dollars américains, `0` quand c'est inconnu.                                                         |
| `genres`                       | tableau        | Objets avec `id` et `name`.                                                                          |
| `belongs_to_collection`        | objet ou null  | `id`, `name`, `poster_path`, `backdrop_path`. Voir [collections](https://amodb.dev/fr/collections/). |
| `production_companies`         | tableau        | `id`, `logo_path`, `name`, `origin_country`.                                                         |
| `production_countries`         | tableau        | `iso_3166_1`, `name`.                                                                                |
| `spoken_languages`             | tableau        | `english_name`, `iso_639_1`, `name`.                                                                 |
| `origin_country`               | tableau        | Codes pays comme `US`.                                                                               |
| `poster_path`, `backdrop_path` | chaîne ou null | À ajouter à `https://img.amodb.dev/t/p/{size}`. Voir [images](https://amodb.dev/fr/images-api/).     |
| `popularity`                   | nombre         | Score relatif utilisé par la liste des populaires.                                                   |
| `vote_average`, `vote_count`   | nombre, entier | Note agrégée des utilisateurs.                                                                       |
| `adult`, `video`               | booléen        | Les deux valent `false`. Les titres pour adultes ne sont jamais servis.                              |

### Exemple de réponse

`GET /3/movie/550?language=en-US&append_to_response=ratings`, avec les longs tableaux et textes raccourcis :

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

Le bloc `ratings` vient de `append_to_response`. Chaque fournisseur est un objet `{value, votes}` ou `null`, comme décrit sur [notes](https://amodb.dev/fr/ratings/).

## Combiner des données avec append_to_response

Un appel peut en remplacer six. Listez les sous-ressources dont vous avez besoin et chacune arrive sous sa propre clé. Les valeurs TMDB standard fonctionnent : `credits`, `videos`, `images`, `keywords`, `translations`, `external_ids`, `release_dates`, `alternative_titles`, `recommendations`, `similar`, `reviews`, `lists` et `watch/providers`. amodb en ajoute cinq autres.

| Valeur        | Ajoute                                                                 | Détails                                                                        |
| ------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `ratings`     | Notes IMDb, Kinopoisk, Metacritic, Rotten Tomatoes et TMDB             | [Notes](https://amodb.dev/fr/ratings/)                                         |
| `moods`       | Jauges d'ambiance                                                      | [Ambiances](https://amodb.dev/fr/moods/)                                       |
| `soundtracks` | Morceaux entendus dans le film                                         | [Bandes originales](https://amodb.dev/fr/soundtracks/)                         |
| `wikidata`    | Identifiant Wikidata, budget, recettes, récompenses, lieux de tournage | [Recherche par identifiant externe](https://amodb.dev/fr/find-by-external-id/) |
| `showtimes`   | Séances de cinéma quand elles sont connues                             | [Séances](https://amodb.dev/fr/showtimes/)                                     |

Chaque bloc ajouté compte comme une partie d'une seule requête HTTP. Une requête avec dix valeurs ajoutées n'utilise toujours qu'une de vos 20, 40 ou 120 requêtes par minute. Les blocs `ratings`, `moods` et `soundtracks` ajoutés omettent la clé `id` que renvoient les chemins autonomes.

## Points de terminaison de films associés

Tous les chemins ci-dessous partagent la base `https://api.amodb.dev/3` et le paramètre `language`.

| Méthode et chemin                          | Renvoie                                          | Paramètres supplémentaires |
| ------------------------------------------ | ------------------------------------------------ | -------------------------- |
| `GET /movie/{movie_id}/alternative_titles` | `{id, titles}`, souvent un tableau vide          | aucun                      |
| `GET /movie/{movie_id}/release_dates`      | Dates de sortie et classifications par pays      | aucun                      |
| `GET /movie/{movie_id}/recommendations`    | Une liste de 20 films recommandés                | aucun                      |
| `GET /movie/{movie_id}/similar`            | Une liste de 20 films similaires                 | aucun                      |
| `GET /movie/{movie_id}/reviews`            | `results` est vide pour la plupart des titres    | aucun                      |
| `GET /movie/{movie_id}/lists`              | Listes publiques qui contiennent le film         | `page`                     |
| `GET /movie/{movie_id}/watch/providers`    | Plateformes de streaming et de location par pays | aucun                      |
| `GET /movie/latest`                        | La fiche de film la plus récente ajoutée         | aucun                      |

Les listes de recommandations et de films similaires renvoient toujours la page 1 avec 20 éléments. La réponse de `lists` est paginée avec `page`, 20 listes par page. Les listes paginées ailleurs dans l'API acceptent `page` de 1 à 500.

Les crédits, images, vidéos, traductions, mots-clés et identifiants externes ont leurs propres pages : [crédits](https://amodb.dev/fr/credits/), [images](https://amodb.dev/fr/images-api/), [vidéos et bandes-annonces](https://amodb.dev/fr/videos-trailers/), [traductions](https://amodb.dev/fr/translations/), [mots-clés](https://amodb.dev/fr/keywords/) et [recherche par identifiant externe](https://amodb.dev/fr/find-by-external-id/). amodb ne propose pas les chemins `changes` de TMDB.

## Erreurs

Les erreurs utilisent le corps TMDB, par exemple `{"success": false, "status_code": 34, "status_message": "The resource you requested could not be found."}`.

| HTTP | status_code | Quand                                                                              |
| ---- | ----------- | ---------------------------------------------------------------------------------- |
| 401  | 7           | La clé est absente ou fausse.                                                      |
| 402  | 36          | La période de l'offre est terminée.                                                |
| 404  | 34          | Aucun film avec cet identifiant, un chemin non proposé, ou un titre pour adultes.  |
| 405  | 37          | Vous avez appelé une méthode d'écriture comme noter un film.                       |
| 429  | 25          | Vous avez dépassé vos requêtes par minute. Attendez les secondes de `Retry-After`. |

La liste complète est sur la page [erreurs](https://amodb.dev/fr/errors/), et les limites par offre sont sur [limites de débit](https://amodb.dev/fr/rate-limits/).

## Remarques pratiques

- Stockez ensemble l'`id` et l'`imdb_id`. L'un ou l'autre retrouve le film via la [recherche par identifiant externe](https://amodb.dev/fr/find-by-external-id/).
- Demandez la langue que vous affichez. Un champ de texte peut être vide quand il n'existe pas de traduction dans cette langue : testez donc la chaîne vide et redemandez en `en-US` si vous avez besoin d'un repli.
- Mettez les détails en cache de votre côté pendant quelques heures. Le cache du serveur les garde déjà 6 heures, donc un cache client plus court n'apporte rien.
- Pour lister des films au lieu d'en lire un seul, voir [recherche](https://amodb.dev/fr/search/), [découverte](https://amodb.dev/fr/discover/) et [tendances et listes](https://amodb.dev/fr/trending-lists/).

## Questions et réponses

### Dois-je modifier le code de mon client TMDB ?

Non, pour les chemins qu'amodb sert. Chemins, paramètres de requête et champs JSON sont les mêmes que dans TMDB v3. Remplacez l'URL de base par https://api.amodb.dev/3 et utilisez votre clé amodb dans api_key ou dans un en-tête Bearer.

### Combien de sous-requêtes append_to_response peut-il combiner ?

Jusqu'à 20 valeurs dans une liste séparée par des virgules, comme dans TMDB. L'appel entier est une seule requête HTTP : il ne compte donc qu'une fois dans votre limite de requêtes par minute. Les noms inconnus sont ignorés sans erreur.

### Quelle langue est utilisée quand j'omets le paramètre language ?

L'anglais (en-US). Le paramètre language accepte les balises TMDB comme ru-RU ou pt-BR. Seules les 14 langues de base sont servies, et toute autre balise se replie sur l'anglais.

### Les méthodes d'écriture de TMDB, comme noter un film, sont-elles prises en charge ?

Non. Les méthodes d'écriture de compte, de session, de notation et de liste renvoient 405 avec status_code 37 dans le corps d'erreur TMDB. Les chemins de lecture des titres, des personnes, des listes et de la recherche sont servis. Quelques chemins TMDB comme changes ne sont pas proposés.

### Quelle est la fraîcheur des données ?

Les détails d'un film sont mis en cache 6 heures, et le point de terminaison du film le plus récent 10 minutes. Une modification d'une fiche peut mettre jusqu'à 6 heures à apparaître dans un appel de détails.

## Pages liées

- [API des séries TV](https://amodb.dev/fr/tv-series/): API de séries TV aux chemins et au JSON de TMDB v3 : une série par id avec saisons, chaînes et prochain épisode, plus classifications et plateformes.
- [API des crédits](https://amodb.dev/fr/credits/): API crédits aux chemins et au JSON de TMDB v3. Distribution et équipe des films, séries, saisons et épisodes, avec les champs order, department et job.
- [API d'images et hôte d'images](https://amodb.dev/fr/images-api/): API d'images de films aux chemins TMDB v3 : listez affiches, fonds, logos et images par titre, puis chargez-les depuis img.amodb.dev en 10 tailles sans clé.
- [Notes des films et séries](https://amodb.dev/fr/ratings/): API de notes de films : scores IMDb, Kinopoisk, Metacritic, Rotten Tomatoes et TMDB d'un titre en un appel, avec null pour toute source inconnue.
- [Tendances et points de terminaison de listes](https://amodb.dev/fr/trending-lists/): API de tendances aux chemins TMDB v3 : classements jour et semaine, plus films et séries à l'affiche, populaires, mieux notés et à venir, cache de 30 minutes.
- [Démarrage rapide](https://amodb.dev/fr/quickstart/): Faites votre premier appel amodb : obtenez une clé, demandez un film en curl, JavaScript, Python, PHP ou Go, puis chargez l'affiche. En moins de 2 minutes.

Mis à jour: 2026-10-19. Source: https://amodb.dev/fr/movies/
