API de detalhes de pessoas

O endpoint de pessoa retorna um ator, diretor ou membro da equipe técnica por id em GET /3/person/{person_id}. O JSON segue o TMDB v3: biografia, aniversário, local de nascimento, imagem de perfil e departamento. Endpoints auxiliares retornam créditos de filmes, de TV e combinados, ids externos, imagens de perfil e a lista de populares.

Atualizado em Ver em Markdown

Obter os detalhes de uma pessoa

GET /3/person/{person_id} retorna o registro principal de uma pessoa: nome, biografia, aniversário, local de nascimento, departamento, imagem de perfil e id do IMDb. O id é o id numérico de pessoa do TMDB, então Tom Hanks continua sendo 31 e Leonardo DiCaprio continua sendo 6193. Quem trabalha diante e atrás das câmeras compartilha um só espaço de ids.

O exemplo lê Tom Hanks e acrescenta os créditos combinados dele, depois exibe o nome, o aniversário, o departamento principal e quantos créditos de atuação ele tem.

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_idcaminhoobrigatório
    Id numérico da pessoa, por exemplo 31.
  • api_keyconsultaum dos dois
    Sua chave. Use este parâmetro ou o header Authorization: Bearer.
  • languageconsulta
    Tag do TMDB como en-US ou ru-RU. A biografia é retornada nesse idioma quando existe tradução.
  • append_to_responseconsulta
    Lista separada por vírgulas: movie_credits, tv_credits, combined_credits, external_ids, images. Nomes desconhecidos são ignorados.

Campos da resposta

CampoTipoObservações
idinteiroId da pessoa.
namestringNome de exibição, no language pedido quando existe tradução.
also_known_asarrayNomes e grafias alternativos.
biographystringTexto localizado, vazio quando não existe tradução.
birthday, deathdaystring ou nullYYYY-MM-DD. deathday é null para pessoas vivas.
place_of_birthstring ou nullTexto livre.
genderinteiro0 não especificado, 1 feminino, 2 masculino, 3 não binário.
known_for_departmentstringFunção principal, por exemplo Acting ou Directing.
imdb_idstring ou nullId de pessoa do IMDb, como nm0000158.
homepagestring ou nullSite oficial.
profile_pathstring ou nullAcrescente a https://img.amodb.dev/t/p/{size}. Veja imagens.
popularitynúmeroValor relativo usado pela lista de populares.
adultbooleanoSempre false. Registros adultos nunca são atendidos.

Exemplo de resposta

GET /3/person/31?language=en-US, com a biografia abreviada:

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 filmografia

Três endpoints listam em que uma pessoa trabalhou. Todos aceitam language e retornam as chaves id, cast e crew. Quando você os acrescenta com append_to_response, a chave id fica de fora.

Método e caminhoRetornaParâmetros extras
GET /person/{person_id}/movie_creditsFilmes, com character e order em cast e department e job em crewnenhum
GET /person/{person_id}/tv_creditsSéries, com character em cast e department e job em crewnenhum
GET /person/{person_id}/combined_creditsFilmes e séries juntos, cada um com media_type definido como movie ou tvnenhum

As entradas de filmes trazem title e release_date. As entradas de TV trazem name e first_air_date, e as entradas de elenco de TV também têm uma chave episode_count que vale 0 nos dados atuais. As entradas também trazem credit_id, genre_ids, poster_path, vote_average e os outros campos de lista. O trecho abaixo ordena os créditos combinados por data e exibe os cinco mais novos.

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 imagens

Método e caminhoRetornaParâmetros extras
GET /person/popularLista paginada de pessoas populares com títulos em known_forlanguage, page
GET /person/{person_id}/imagesFotos de perfil em um array profilesnenhum
GET /person/{person_id}/external_idsimdb_id, wikidata_id, facebook_id, instagram_id, tiktok_id, twitter_id, youtube_idnenhum

As entradas de populares contêm id, name, original_name, known_for_department, gender, profile_path, popularity e um array known_for. As páginas vão de 1 a 500. As fotos de perfil estão em imagens, e os ids externos estão em buscar por ID externo.

O amodb não oferece traduções de pessoa, o registro de pessoa mais recente, imagens marcadas nem changes. Peça a biografia no idioma de que você precisa com o parâmetro language.

Erros

HTTPstatus_codeQuando
4017A chave está ausente ou incorreta.
40236O período do plano terminou.
40434Nenhuma pessoa com esse id, um registro adulto ou um caminho que não é oferecido.
40537Você chamou um método de escrita.
42925Acima do seu limite de requisições por minuto. Espere os segundos indicados em Retry-After.

A lista completa está em erros, e as janelas por plano estão em limites de requisições.

Notas práticas

  • Os detalhes de pessoas e as listas de créditos ficam em cache por 6 horas. A lista de populares fica em cache por 30 minutos, e as páginas vão de 1 a 500.
  • Adicione combined_credits por meio de append_to_response em vez de fazer uma segunda chamada. Os dois jeitos retornam os mesmos dados.
  • Em movie_credits, cada entrada de cast tem um valor order, a posição da pessoa nos créditos daquele filme. As entradas de TV não têm order, então ordene-as por first_air_date.
  • Use known_for_department para decidir qual lista mostrar primeiro: cast para atores, crew para diretores e roteiristas.
  • Procure uma pessoa pelo nome na busca e use o id aqui.