API des crédits

Les points de terminaison de crédits renvoient la distribution et l'équipe d'un film sur GET /3/movie/{movie_id}/credits, et celles des séries, saisons et épisodes sous /3/tv. Le JSON suit TMDB v3, avec credit_id, order, department et job. Les crédits d'épisodes ajoutent un tableau guest_stars à côté de crew, et leur tableau cast est vide.

Mis à jour le Voir en Markdown

Obtenir les crédits d'un film

GET /3/movie/{movie_id}/credits renvoie deux tableaux pour un film : cast pour les personnes qui apparaissent à l'écran et crew pour celles qui ont travaillé derrière la caméra. Chaque entrée contient l'identifiant de la personne : vous pouvez donc ouvrir sa fiche complète sur la page personnes. Les mêmes données sont disponibles dans la réponse du film avec append_to_response=credits.

L'exemple lit Inception, affiche le réalisateur et liste les cinq premiers acteurs au générique.

bashjspyphpgo
curl -sSf "https://api.amodb.dev/3/movie/27205/credits?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
const url = 'https://api.amodb.dev/3/movie/27205/credits?language=en-US';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const credits = await res.json();
const director = credits.crew.find((c) => c.job === 'Director');
console.log('Director:', director?.name);
for (const c of [...credits.cast].sort((a, b) => a.order - b.order).slice(0, 5)) {
  console.log(c.order, c.name, 'as', c.character);
}
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/movie/27205/credits",
    params={"language": "en-US"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
credits = r.json()
director = next((c for c in credits["crew"] if c["job"] == "Director"), None)
print("Director:", director and director["name"])
for c in sorted(credits["cast"], key=lambda c: c["order"])[:5]:
    print(c["order"], c["name"], "as", c["character"])
<?php
$url = 'https://api.amodb.dev/3/movie/27205/credits?language=en-US';
$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");
}
$credits = json_decode($body, true);
usort($credits['cast'], fn ($a, $b) => $a['order'] <=> $b['order']);
foreach (array_slice($credits['cast'], 0, 5) as $c) {
    echo $c['order'], ' ', $c['name'], ' as ', $c['character'], PHP_EOL;
}
package main

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

type Credits struct {
	Cast []struct {
		Order     int    `json:"order"`
		Name      string `json:"name"`
		Character string `json:"character"`
	} `json:"cast"`
	Crew []struct {
		Name string `json:"name"`
		Job  string `json:"job"`
	} `json:"crew"`
}

func main() {
	req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/movie/27205/credits?language=en-US", nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	client := &http.Client{Timeout: 10 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		panic(res.Status)
	}
	var c Credits
	if err := json.NewDecoder(res.Body).Decode(&c); err != nil {
		panic(err)
	}
	for _, m := range c.Crew {
		if m.Job == "Director" {
			fmt.Println("Director:", m.Name)
		}
	}
	for i, a := range c.Cast {
		if i == 5 {
			break
		}
		fmt.Println(a.Order, a.Name, "as", a.Character)
	}
}

Paramètres

  • movie_idcheminobligatoire
    Identifiant numérique du film, par exemple 27205.
  • api_keyrequêtel'un des deux
    Votre clé. Utilisez-la ou l'en-tête Authorization: Bearer.
  • languagerequête
    Balise TMDB comme en-US ou fr-FR. Les balises hors des 14 langues de base se replient sur en.

Champs de la réponse

ChampS'applique àRemarques
idniveau supérieurIdentifiant du film, de la série, de la saison ou de l'épisode auquel appartiennent les crédits.
cast, crewniveau supérieurTableaux d'entrées. Les crédits d'épisode ajoutent guest_stars.
idchaque entréeIdentifiant de la personne. Ouvrez-la avec personnes.
name, original_namechaque entréeLe nom de la personne.
known_for_departmentchaque entréeLe métier principal de la personne en général, pas son métier sur ce titre.
gender, popularity, adultchaque entréeMême signification que sur la fiche de la personne.
profile_pathchaque entréeChemin d'image ou null. À ajouter à https://img.amodb.dev/t/p/{size}.
credit_idchaque entréeChaîne qui identifie ce crédit précis.
charactercast, vedettes invitéesNom du rôle, vide pour certaines entrées.
ordercast, vedettes invitéesPosition au générique, 0 est la première.
departmentcrewGroupe comme Directing, Writing, Production, Camera, Editing, Sound, Art, Visual Effects, Lighting, Costume & Make-Up ou Crew.
jobcrewMétier précis, par exemple Director, Screenplay ou Editor.

Exemple de réponse

GET /3/movie/27205/credits?language=en-US. La réponse compte aujourd'hui 52 entrées de distribution et 735 d'équipe, et les deux tableaux sont donc réduits à deux ici :

JSON
{
  "id": 27205,
  "cast": [
    {
      "adult": false,
      "gender": 2,
      "id": 6193,
      "known_for_department": "Acting",
      "name": "Leonardo DiCaprio",
      "original_name": "Leonardo DiCaprio",
      "popularity": 9.3213,
      "profile_path": "/wo2hJpn04vbtmh0B9utCFdsQhxM.jpg",
      "character": "Dom Cobb",
      "credit_id": "52fe4534c3a368484e04de03",
      "order": 0
    },
    {
      "adult": false,
      "gender": 2,
      "id": 24045,
      "known_for_department": "Acting",
      "name": "Joseph Gordon-Levitt",
      "original_name": "Joseph Gordon-Levitt",
      "popularity": 5.6202,
      "profile_path": "/z2FA8js799xqtfiFjBTicFYdfk.jpg",
      "character": "Arthur",
      "credit_id": "52fe4534c3a368484e04de0b",
      "order": 1
    }
  ],
  "crew": [
    {
      "adult": false,
      "gender": 2,
      "id": 1025090,
      "known_for_department": "Crew",
      "name": "Jim Wilkey",
      "original_name": "Jim Wilkey",
      "popularity": 0.9114,
      "profile_path": "/peEdS7ZYHwEeMJAwInJj732AeYs.jpg",
      "credit_id": "6634553bad59b501286dab5f",
      "department": "Crew",
      "job": "Stunt Driver"
    },
    {
      "adult": false,
      "gender": 2,
      "id": 1741194,
      "known_for_department": "Sound",
      "name": "James Thatcher",
      "original_name": "James Thatcher",
      "popularity": 0.6215,
      "profile_path": null,
      "credit_id": "5bcdece8925141613e0216d3",
      "department": "Sound",
      "job": "Musician"
    }
  ]
}

Crédits des séries, des saisons et des épisodes

Tous les chemins ci-dessous partagent la base https://api.amodb.dev/3 et acceptent language.

Méthode et cheminRenvoie
GET /tv/{series_id}/creditsDistribution et équipe de la série, une entrée par personne et par rôle.
GET /tv/{series_id}/season/{season_number}/creditsDistribution et équipe d'une saison.
GET /tv/{series_id}/season/{season_number}/episode/{episode_number}/creditscrew et guest_stars d'un épisode. cast est un tableau vide.

Les mêmes données sont disponibles avec append_to_response=credits sur les chemins de série, de saison et d'épisode. La forme des entrées correspond aux crédits de film ci-dessus. Les vedettes invitées d'un épisode portent character et order, et les entrées d'équipe portent department et job.

GET /3/tv/1399/season/1/episode/1/credits?language=en-US, avec les tableaux réduits à deux entrées :

JSON
{
  "id": 63056,
  "cast": [],
  "crew": [
    {
      "department": "Writing",
      "job": "Writer",
      "credit_id": "5256c8a019c2956ff6046e2b",
      "adult": false,
      "gender": 2,
      "id": 9813,
      "known_for_department": "Writing",
      "name": "David Benioff",
      "original_name": "David Benioff",
      "popularity": 2.0354,
      "profile_path": "/xvNN5huL0X8yJ7h3IZfGG4O2zBD.jpg"
    },
    {
      "department": "Editing",
      "job": "Editor",
      "credit_id": "54eef2ab925141795f005d4f",
      "adult": false,
      "gender": 2,
      "id": 18077,
      "known_for_department": "Editing",
      "name": "Oral Norrie Ottey",
      "original_name": "Oral Norrie Ottey",
      "popularity": 0,
      "profile_path": null
    }
  ],
  "guest_stars": [
    {
      "character": "Benjen Stark",
      "credit_id": "5256c8b919c2956ff604836a",
      "order": 61,
      "adult": false,
      "gender": 2,
      "id": 119783,
      "known_for_department": "Acting",
      "name": "Joseph Mawle",
      "original_name": "Joseph Mawle",
      "popularity": 1.4645,
      "profile_path": "/1Ocb9v3h54beGVoJMm4w50UQhLf.jpg"
    },
    {
      "character": "Rickon Stark",
      "credit_id": "566a83bcc3a3683f56003604",
      "order": 80,
      "adult": false,
      "gender": 2,
      "id": 1050248,
      "known_for_department": "Acting",
      "name": "Art Parkinson",
      "original_name": "Art Parkinson",
      "popularity": 1.2594,
      "profile_path": "/ejAKOJME1DsvHECLWdQ7dEtXyyc.jpg"
    }
  ]
}

amodb ne propose ni crédits agrégés pour les séries ni recherche par credit_id. Pour la distribution d'une série, lisez /tv/{series_id}/credits et triez cast par order.

Lire la distribution et l'équipe dans une application

TâcheComment
Afficher le réalisateurChoisir les entrées de crew dont job vaut Director. Un film peut en avoir plusieurs.
Afficher les rôles principauxTrier cast par order et prendre les 10 premiers.
Regrouper l'équipeRegrouper par department. Une personne avec deux métiers apparaît deux fois : fusionnez donc sur l'id de la personne.
Afficher la distribution d'une sérieLire les crédits de la série et trier cast par order.
Lister tous les services et métiersLire la liste de référence décrite sur genres et listes de référence.

Erreurs

HTTPstatus_codeQuand
4017La clé est absente ou fausse.
40236La période de l'offre est terminée.
40434Le film, la série, la saison ou l'épisode n'existe pas, ou le chemin n'est pas proposé.
40537Vous avez appelé une méthode d'écriture.
42925Au-dessus de vos requêtes par minute. Attendez les secondes de Retry-After.

Les détails sont sur erreurs et limites de débit.

Remarques pratiques

  • Les crédits sont mis en cache 6 heures, comme les détails. Un nouveau membre de la distribution peut mettre ce temps à apparaître.
  • Une grosse production peut lister des centaines d'entrées d'équipe. Découpez les tableaux avant de les afficher.
  • profile_path est null pour les personnes sans photo. Utilisez w185 pour les lignes de liste et h632 pour les vues de détails.
  • Les fiches de films et de séries sont sur films et séries TV. Les fiches de saisons et d'épisodes sont sur saisons et épisodes.