API de detalles de persona

El endpoint de persona devuelve un actor, director o miembro del equipo técnico por id en GET /3/person/{person_id}. El JSON coincide con TMDB v3: biografía, fecha de nacimiento, lugar de nacimiento, imagen de perfil y departamento. Los endpoints complementarios devuelven créditos de películas, de TV y combinados, ids externos, imágenes de perfil y la lista de populares.

Actualizado el Ver en Markdown

Obtener los detalles de una persona

GET /3/person/{person_id} devuelve el registro principal de una persona: nombre, biografía, fecha de nacimiento, lugar de nacimiento, departamento, imagen de perfil e id de IMDb. El id es el id numérico de persona de TMDB, así que Tom Hanks sigue siendo 31 y Leonardo DiCaprio sigue siendo 6193. Las personas que trabajan delante y detrás de la cámara comparten un mismo espacio de ids.

El ejemplo lee a Tom Hanks y añade sus créditos combinados, y luego imprime el nombre, la fecha de nacimiento, el departamento principal y cuántos créditos de actuación tiene.

bashjspyphpgo
curl -sSf "https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits" \
  -H "Authorization: Bearer $AMODB_KEY"
const url = 'https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const person = await res.json();
console.log(person.name, person.birthday, person.known_for_department, person.combined_credits.cast.length);
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/person/31",
    params={"language": "en-US", "append_to_response": "combined_credits"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
person = r.json()
print(person["name"], person["birthday"], person["known_for_department"], len(person["combined_credits"]["cast"]))
<?php
$url = 'https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits';
$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");
}
$person = json_decode($body, true);
echo $person['name'], ' ', $person['birthday'], ' ', count($person['combined_credits']['cast']), PHP_EOL;
package main

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

type Person struct {
	Name         string `json:"name"`
	Birthday     string `json:"birthday"`
	Department   string `json:"known_for_department"`
	PlaceOfBirth string `json:"place_of_birth"`
}

func main() {
	req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/person/31?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 p Person
	if err := json.NewDecoder(res.Body).Decode(&p); err != nil {
		panic(err)
	}
	fmt.Println(p.Name, p.Birthday, p.Department, p.PlaceOfBirth)
}

Parámetros

  • person_idrutaobligatorio
    Id numérico de la persona, por ejemplo 31.
  • api_keyconsultauno de los dos
    Tu clave. Usa esta o el encabezado Authorization: Bearer.
  • languageconsulta
    Etiqueta de TMDB como en-US o ru-RU. La biografía se devuelve en ese idioma cuando existe una traducción.
  • append_to_responseconsulta
    Lista separada por comas: movie_credits, tv_credits, combined_credits, external_ids, images. Los nombres desconocidos se ignoran.

Campos de la respuesta

CampoTipoNotas
identeroId de la persona.
nametextoNombre para mostrar, en el language pedido cuando existe una traducción.
also_known_asarrayNombres y grafías alternativos.
biographytextoTexto localizado, vacío cuando no existe traducción.
birthday, deathdaytexto o nullYYYY-MM-DD. deathday es null para personas vivas.
place_of_birthtexto o nullTexto libre.
genderentero0 sin especificar, 1 mujer, 2 hombre, 3 no binario.
known_for_departmenttextoTrabajo principal, por ejemplo Acting o Directing.
imdb_idtexto o nullId de persona de IMDb como nm0000158.
homepagetexto o nullSitio oficial.
profile_pathtexto o nullAñádelo a https://img.amodb.dev/t/p/{size}. Consulta imágenes.
popularitynúmeroPuntuación relativa que usa la lista de populares.
adultbooleanoSiempre false. Nunca se sirven personas marcadas como adultas.

Ejemplo de respuesta

GET /3/person/31?language=en-US, con la biografía acortada:

JSON
{
  "adult": false,
  "also_known_as": [
    "Thomas Jeffrey Hanks"
  ],
  "biography": "Thomas Jeffrey Hanks (born July 9, 1956) is an American actor and filmmaker. Known for both his comedic and dramatic roles, Hanks is one of the most popular...",
  "birthday": "1956-07-09",
  "deathday": null,
  "gender": 2,
  "homepage": null,
  "id": 31,
  "imdb_id": "nm0000158",
  "known_for_department": "Acting",
  "name": "Tom Hanks",
  "place_of_birth": "Concord, California, USA",
  "popularity": 12.98,
  "profile_path": "/oFvZoKI6lvU03n4YoNGAll9rkas.jpg"
}

Endpoints de filmografía

Tres endpoints listan en qué trabajó una persona. Todos aceptan language y devuelven las claves id, cast y crew. Cuando los añades con append_to_response, la clave id se omite.

Método y rutaDevuelveParámetros adicionales
GET /person/{person_id}/movie_creditsPelículas, con character y order en cast, y department y job en crewninguno
GET /person/{person_id}/tv_creditsSeries, con character en cast y department y job en crewninguno
GET /person/{person_id}/combined_creditsPelículas y series juntas, cada una con media_type en movie o tvninguno

Las entradas de películas llevan title y release_date. Las entradas de TV llevan name y first_air_date, y las entradas de reparto de TV también contienen una clave episode_count que vale 0 en los datos actuales. Las entradas también llevan credit_id, genre_ids, poster_path, vote_average y los demás campos de lista. El fragmento de abajo ordena los créditos combinados por fecha e imprime los cinco más recientes.

JavaScript
const credits = person.combined_credits;
const date = (c) => c.release_date || c.first_air_date || '';
const latest = credits.cast.filter((c) => date(c)).sort((a, b) => date(b).localeCompare(date(a))).slice(0, 5);
for (const c of latest) console.log(date(c), c.media_type, c.title || c.name, 'as', c.character);

Listas e imágenes

Método y rutaDevuelveParámetros adicionales
GET /person/popularLista paginada de personas populares con títulos en known_forlanguage, page
GET /person/{person_id}/imagesFotos de perfil en un array profilesninguno
GET /person/{person_id}/external_idsimdb_id, wikidata_id, facebook_id, instagram_id, tiktok_id, twitter_id, youtube_idninguno

Las entradas populares contienen id, name, original_name, known_for_department, gender, profile_path, popularity y un array known_for. Las páginas van de 1 a 500. Las fotos de perfil se tratan en imágenes, y los ids externos en buscar por id externo.

amodb no ofrece traducciones de personas, el registro de persona más reciente, imágenes etiquetadas ni la ruta changes. Pide la biografía en el idioma que necesites con el parámetro language.

Errores

HTTPstatus_codeCuándo
4017La clave falta o es incorrecta.
40236El periodo del plan ha terminado.
40434No hay ninguna persona con ese id, es una persona marcada como adulta, o la ruta no se ofrece.
40537Llamaste a un método de escritura.
42925Superaste tus solicitudes por minuto. Espera los segundos de Retry-After.

La lista completa está en errores, y las ventanas de cada plan en límites de solicitudes.

Notas prácticas

  • Los detalles de persona y las listas de créditos se guardan en caché 6 horas. La lista de populares se guarda 30 minutos y las páginas van de 1 a 500.
  • Añade combined_credits mediante append_to_response en lugar de hacer una segunda llamada. Las dos formas devuelven los mismos datos.
  • En movie_credits, cada entrada de cast tiene un valor order, la posición de la persona en los créditos de esa película. Las entradas de TV no tienen order, así que ordénalas por first_air_date.
  • Usa known_for_department para decidir qué lista mostrar primero: cast para actores, crew para directores y guionistas.
  • Busca a una persona por nombre en la búsqueda y usa aquí el id.