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.
Obtener los créditos de una película
GET / 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_.
El ejemplo lee Inception, imprime al director y lista a los cinco primeros actores de los créditos.
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_idrutaobligatorioId numérico de la película, por ejemplo27205.api_keyconsultauno de los dosTu clave. Usa esta o el encabezadoAuthorization: Bearer.languageconsultaEtiqueta de TMDB comoen-USofr-FR. Las etiquetas fuera de los 14 idiomas base recurren aen.
Campos de la respuesta
| Campo | Se aplica a | Notas |
|---|---|---|
id | nivel superior | Id de la película, serie, temporada o episodio al que pertenecen los créditos. |
cast, crew | nivel superior | Arrays de entradas. Los créditos de episodio añaden guest_stars. |
id | cada entrada | Id de la persona. Ábrelo con personas. |
name, original_name | cada entrada | El nombre de la persona. |
known_for_department | cada entrada | El trabajo principal de la persona en general, no su trabajo en este título. |
gender, popularity, adult | cada entrada | Mismo significado que en el registro de la persona. |
profile_path | cada entrada | Ruta de imagen o null. Añádela a https:/. |
credit_id | cada entrada | Cadena que identifica este crédito concreto. |
character | reparto, actores invitados | Nombre del papel, vacío en algunas entradas. |
order | reparto, actores invitados | Posición en los créditos, 0 es la primera. |
department | equipo técnico | Grupo como Directing, Writing, Production, Camera, Editing, Sound, Art, Visual Effects, Lighting, Costume & Make-Up o Crew. |
job | equipo técnico | Trabajo concreto, por ejemplo Director, Screenplay o Editor. |
Ejemplo de respuesta
GET /. La respuesta tiene hoy 52 entradas de reparto y 735 de equipo técnico, así que ambos arrays se cortan a dos aquí:
{
"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:/ y aceptan language.
| Método y ruta | Devuelve |
|---|---|
GET / | Reparto y equipo técnico de la serie, una entrada por persona y papel. |
GET / | Reparto y equipo técnico de una temporada. |
GET / | crew y guest_stars de un episodio. cast es un array vacío. |
Los mismos datos están disponibles con append_ 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 /, con los arrays cortados a dos entradas:
{
"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 / y ordena cast por order.
Leer el reparto y el equipo técnico en una aplicación
| Tarea | Cómo |
|---|---|
| Mostrar al director | Elige las entradas de crew con job igual a Director. Una película puede tener varios. |
| Mostrar el reparto principal | Ordena cast por order y toma los primeros 10. |
| Agrupar el equipo técnico | Agrupa por department. Una persona con dos trabajos aparece dos veces, así que une por el id de la persona. |
| Mostrar el reparto de una serie | Lee los créditos de la serie y ordena cast por order. |
| Listar todos los departamentos y trabajos | Lee la lista de consulta descrita en géneros y listas de consulta. |
Errores
| HTTP | status_code | Cuándo |
|---|---|---|
| 401 | 7 | La clave falta o es incorrecta. |
| 402 | 36 | El periodo del plan ha terminado. |
| 404 | 34 | La película, serie, temporada o episodio no existe, o la ruta no se ofrece. |
| 405 | 37 | Llamaste a un método de escritura. |
| 429 | 25 | Superaste 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_pathes null para las personas sin foto. Usaw185para las filas de lista yh632para 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.