API деталей человека
Эндпоинт человека возвращает одного актера, режиссера или члена съемочной группы по ID: GET /3/person/{person_id}. JSON совпадает с TMDB v3: биография, дата и место рождения, фото профиля и отдел. Дополнительные эндпоинты отдают кредиты в фильмах, сериалах и всех вместе, внешние ID, фото профиля и список популярных.
Получение деталей человека
GET / возвращает основную запись об одном человеке: имя, биографию, дату рождения, место рождения, отдел, фото профиля и ID IMDb. ID соответствует числовому ID человека в TMDB, поэтому Tom Hanks остается 31, а Leonardo DiCaprio остается 6193. Люди, работающие перед камерой и за ней, делят одно пространство ID.
Пример запрашивает Tom Hanks с добавлением его объединенных кредитов, затем выводит имя, дату рождения, основной отдел и количество его актерских работ.
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)
}Параметры
person_idpathобязателенЧисловой ID человека, например31.api_keyqueryодин из двухВаш ключ. Используйте его или заголовокAuthorization: Bearer.languagequeryТег TMDB, напримерen-USилиru-RU. Биография возвращается на этом языке, если перевод существует.append_to_responsequeryСписок через запятую:movie_credits,tv_credits,combined_credits,external_ids,images. Неизвестные имена игнорируются.
Поля ответа
| Поле | Тип | Примечания |
|---|---|---|
id | целое число | ID человека. |
name | строка | Отображаемое имя, на запрошенном language, если перевод существует. |
also_known_as | массив | Другие имена и варианты написания. |
biography | строка | Локализованный текст, пустой, если перевода нет. |
birthday, deathday | строка или null | YYYY-MM-DD. deathday равен null для живых людей. |
place_of_birth | строка или null | Свободный текст. |
gender | целое число | 0 не указан, 1 женский, 2 мужской, 3 небинарный. |
known_for_department | строка | Основная профессия, например Acting или Directing. |
imdb_id | строка или null | ID человека в IMDb, например nm0000158. |
homepage | строка или null | Официальный сайт. |
profile_path | строка или null | Добавляется к https:/. См. API изображений. |
popularity | число | Относительная оценка, по которой строится список популярных. |
adult | логическое | Всегда false. Записи для взрослых не отдаются никогда. |
Пример ответа
GET /, биография сокращена:
{
"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"
}Эндпоинты фильмографии
Три эндпоинта перечисляют работы человека. Все принимают language и возвращают ключи id, cast и crew. При добавлении через append_to_response ключ id отсутствует.
| Метод и путь | Возвращает | Дополнительные параметры |
|---|---|---|
GET / | Фильмы, с character и order в cast и department и job в crew | нет |
GET / | Сериалы, с character в cast и department и job в crew | нет |
GET / | Фильмы и сериалы вместе, у каждого media_type равен movie или tv | нет |
Записи о фильмах содержат title и release_date. Записи о сериалах содержат name и first_air_date, а записи актерского состава сериалов также имеют ключ episode_count, который в текущих данных равен 0. Записи также содержат credit_id, genre_ids, poster_path, vote_average и другие поля списков. Фрагмент ниже сортирует объединенные кредиты по дате и выводит пять самых новых.
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);Списки и изображения
| Метод и путь | Возвращает | Дополнительные параметры |
|---|---|---|
GET /person/popular | Постраничный список популярных людей с тайтлами known_for | language, page |
GET / | Фото профиля в массиве profiles | нет |
GET / | imdb_id, wikidata_id, facebook_id, instagram_id, tiktok_id, twitter_id, youtube_id | нет |
Записи популярных содержат id, name, original_name, known_for_department, gender, profile_path, popularity и массив known_for. Страницы идут от 1 до 500. Фото профиля описаны на странице API изображений, а внешние ID на странице поиск по внешнему ID.
amodb не предоставляет переводы людей, самую новую запись человека, изображения с тегами и изменения. Вместо этого запрашивайте биографию на нужном языке через параметр language.
Ошибки
| HTTP | status_code | Когда |
|---|---|---|
| 401 | 7 | Ключ отсутствует или неверен. |
| 402 | 36 | Период тарифа закончился. |
| 404 | 34 | Нет человека с таким ID, запись для взрослых или путь не предоставляется. |
| 405 | 37 | Вы вызвали метод записи. |
| 429 | 25 | Превышен лимит запросов в минуту. Подождите Retry-After секунд. |
Полный список на странице ошибки, а окна по тарифам на странице лимиты запросов.
Практические советы
- Детали людей и списки кредитов кэшируются на 6 часов. Список популярных кэшируется на 30 минут, страницы идут от 1 до 500.
- Добавляйте
combined_creditsчерезappend_to_responseвместо второго вызова. Оба способа возвращают одни и те же данные. - В
movie_creditsу каждой записиcastесть значениеorder, позиция человека в титрах этого фильма. У записей сериаловorderнет, поэтому сортируйте их поfirst_air_date. - Используйте
known_for_department, чтобы решить, какой список показывать первым:castдля актеров,crewдля режиссеров и сценаристов. - Найдите человека по имени через поиск, а затем используйте полученный ID здесь.