API de créditos

Los endpoints de créditos devuelven el reparto y el equipo técnico de una película en GET /3/movie/{movie_id}/credits, y de series, temporadas y episodios bajo /3/tv. El JSON coincide con TMDB v3, incluidos credit_id, order, department y job. Los créditos de episodio añaden un array guest_stars junto a crew, y su array cast está vacío.

Actualizado el Ver en Markdown

Obtener los créditos de una película

GET /3/movie/{movie_id}/credits devuelve dos arrays para una película: cast para las personas que aparecen en pantalla y crew para quienes trabajaron detrás de la cámara. Cada entrada incluye el id de la persona, así que puedes abrir su registro completo en la página de personas. Los mismos datos están disponibles dentro de la respuesta de la película con append_to_response=credits.

El ejemplo lee Inception, imprime al director y lista a los cinco primeros actores de los créditos.

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

Parámetros

  • movie_idrutaobligatorio
    Id numérico de la película, por ejemplo 27205.
  • api_keyconsultauno de los dos
    Tu clave. Usa esta o el encabezado Authorization: Bearer.
  • languageconsulta
    Etiqueta de TMDB como en-US o fr-FR. Las etiquetas fuera de los 14 idiomas base recurren a en.

Campos de la respuesta

CampoSe aplica aNotas
idnivel superiorId de la película, serie, temporada o episodio al que pertenecen los créditos.
cast, crewnivel superiorArrays de entradas. Los créditos de episodio añaden guest_stars.
idcada entradaId de la persona. Ábrelo con personas.
name, original_namecada entradaEl nombre de la persona.
known_for_departmentcada entradaEl trabajo principal de la persona en general, no su trabajo en este título.
gender, popularity, adultcada entradaMismo significado que en el registro de la persona.
profile_pathcada entradaRuta de imagen o null. Añádela a https://img.amodb.dev/t/p/{size}.
credit_idcada entradaCadena que identifica este crédito concreto.
characterreparto, actores invitadosNombre del papel, vacío en algunas entradas.
orderreparto, actores invitadosPosición en los créditos, 0 es la primera.
departmentequipo técnicoGrupo como Directing, Writing, Production, Camera, Editing, Sound, Art, Visual Effects, Lighting, Costume & Make-Up o Crew.
jobequipo técnicoTrabajo concreto, por ejemplo Director, Screenplay o Editor.

Ejemplo de respuesta

GET /3/movie/27205/credits?language=en-US. La respuesta tiene hoy 52 entradas de reparto y 735 de equipo técnico, así que ambos arrays se cortan a dos aquí:

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éditos de TV, de temporada y de episodio

Todas las rutas de abajo comparten la base https://api.amodb.dev/3 y aceptan language.

Método y rutaDevuelve
GET /tv/{series_id}/creditsReparto y equipo técnico de la serie, una entrada por persona y papel.
GET /tv/{series_id}/season/{season_number}/creditsReparto y equipo técnico de una temporada.
GET /tv/{series_id}/season/{season_number}/episode/{episode_number}/creditscrew y guest_stars de un episodio. cast es un array vacío.

Los mismos datos están disponibles con append_to_response=credits en las rutas de serie, temporada y episodio. La forma de las entradas coincide con los créditos de película de arriba. Los actores invitados de un episodio traen character y order, y las entradas del equipo técnico traen department y job.

GET /3/tv/1399/season/1/episode/1/credits?language=en-US, con los arrays cortados a dos entradas:

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 no ofrece créditos agregados de TV ni una búsqueda por credit_id. Para el reparto de una serie, lee /tv/{series_id}/credits y ordena cast por order.

Leer el reparto y el equipo técnico en una aplicación

TareaCómo
Mostrar al directorElige las entradas de crew con job igual a Director. Una película puede tener varios.
Mostrar el reparto principalOrdena cast por order y toma los primeros 10.
Agrupar el equipo técnicoAgrupa por department. Una persona con dos trabajos aparece dos veces, así que une por el id de la persona.
Mostrar el reparto de una serieLee los créditos de la serie y ordena cast por order.
Listar todos los departamentos y trabajosLee la lista de consulta descrita en géneros y listas de consulta.

Errores

HTTPstatus_codeCuándo
4017La clave falta o es incorrecta.
40236El periodo del plan ha terminado.
40434La película, serie, temporada o episodio no existe, o la ruta no se ofrece.
40537Llamaste a un método de escritura.
42925Superaste tus solicitudes por minuto. Espera los segundos de Retry-After.

Los detalles están en errores y límites de solicitudes.

Notas prácticas

  • Los créditos se guardan en caché 6 horas, como los detalles. Un nuevo miembro del reparto puede tardar ese tiempo en aparecer.
  • Una producción grande puede listar cientos de entradas de equipo técnico. Recorta los arrays antes de mostrarlos.
  • profile_path es null para las personas sin foto. Usa w185 para las filas de lista y h632 para las vistas de detalle.
  • Los registros de películas y de TV están en películas y series de TV. Los registros de temporadas y episodios están en temporadas y episodios.