# API деталей персони

> Ендпоінт персони повертає одного актора, режисера чи члена знімальної групи за id на GET /3/person/{person_id}. JSON збігається з TMDB v3: біографія, дата народження, місце народження, зображення профілю та відділ. Супутні ендпоінти повертають фільми, серіали й об'єднану фільмографію, зовнішні id, зображення профілю та список популярних.

## Ендпоінт

`GET /3/person/{person_id}`

```bash
curl "https://api.amodb.dev/3/person/31?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

Відповідь:

```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 and recognizable film stars worldwide, and is widely regarded as an American cultur...",
  "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"
}
```

## Отримання деталей персони

`GET /3/person/{person_id}` повертає основний запис однієї персони: ім'я, біографію, дату народження, місце народження, відділ, зображення профілю та IMDb id. Id є числовим id персони в TMDB, тож Tom Hanks лишається `31`, а Leonardo DiCaprio лишається `6193`. Люди, що працюють перед камерою і за нею, мають один простір id.

Приклад читає Tom Hanks і додає його об'єднану фільмографію, а потім виводить ім'я, дату народження, основний відділ і кількість акторських робіт.

```bash
curl -sSf "https://api.amodb.dev/3/person/31?language=en-US&append_to_response=combined_credits" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
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);
```

```python
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
<?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;
```

```go
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_id`          | шлях         | так          | Числовий id персони, наприклад `31`.                                                                                        |
| `api_key`            | рядок запиту | один із двох | Ваш ключ. Використовуйте його або заголовок `Authorization: Bearer`.                                                        |
| `language`           | рядок запиту | ні           | Тег TMDB, наприклад `en-US` або `ru-RU`. Біографія повертається цією мовою, якщо переклад існує.                            |
| `append_to_response` | рядок запиту | ні           | Список через кому: `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  | IMDb id персони, наприклад `nm0000158`.                                                                |
| `homepage`             | рядок або null  | Офіційний сайт.                                                                                        |
| `profile_path`         | рядок або null  | Додайте до `https://img.amodb.dev/t/p/{size}`. Див. [API зображень](https://amodb.dev/uk/images-api/). |
| `popularity`           | число           | Відносна оцінка, яку використовує список популярних.                                                   |
| `adult`                | булеве значення | Завжди `false`. Персони для дорослих ніколи не віддаються.                                             |

### Приклад відповіді

`GET /3/person/31?language=en-US`, зі скороченою біографією:

```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"
}
```

## Ендпоінти фільмографії

Три ендпоінти перелічують, над чим працювала персона. Усі приймають `language` і повертають ключі `id`, `cast` і `crew`. Коли ви додаєте їх через `append_to_response`, ключ `id` відсутній.

| Метод і шлях                               | Повертає                                                                    | Додаткові параметри |
| ------------------------------------------ | --------------------------------------------------------------------------- | ------------------- |
| `GET /person/{person_id}/movie_credits`    | Фільми, з `character` і `order` у `cast` та `department` і `job` у `crew`   | немає               |
| `GET /person/{person_id}/tv_credits`       | Серіали, з `character` у `cast` та `department` і `job` у `crew`            | немає               |
| `GET /person/{person_id}/combined_credits` | Фільми й серіали разом, кожен із `media_type` зі значенням `movie` або `tv` | немає               |

Записи фільмів мають `title` і `release_date`. Записи серіалів мають `name` і `first_air_date`, а записи акторського складу серіалів також містять ключ `episode_count`, який у поточних даних дорівнює `0`. Записи також мають `credit_id`, `genre_ids`, `poster_path`, `vote_average` та інші поля списків. Фрагмент нижче сортує об'єднану фільмографію за датою та виводить п'ять найновіших записів.

```js
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 /person/{person_id}/images`       | Фото профілю в масиві `profiles`                                                                 | немає               |
| `GET /person/{person_id}/external_ids` | `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 зображень](https://amodb.dev/uk/images-api/), а зовнішні id на сторінці [пошук за зовнішнім ID](https://amodb.dev/uk/find-by-external-id/).

amodb не пропонує переклади персон, найновіший запис персони, зображення з тегами чи зміни. Натомість запитуйте біографію потрібною мовою параметром `language`.

## Помилки

| HTTP | status_code | Коли                                                                              |
| ---- | ----------- | --------------------------------------------------------------------------------- |
| 401  | 7           | Ключ відсутній або хибний.                                                        |
| 402  | 36          | Період дії тарифу закінчився.                                                     |
| 404  | 34          | Немає персони з таким id, це персона для дорослих або шлях не пропонується.       |
| 405  | 37          | Ви викликали метод запису.                                                        |
| 429  | 25          | Перевищено ліміт запитів на хвилину. Зачекайте кількість секунд із `Retry-After`. |

Повний список на сторінці [помилки](https://amodb.dev/uk/errors/), а вікна за тарифами на сторінці [ліміти запитів](https://amodb.dev/uk/rate-limits/).

## Практичні поради

- Деталі персони та списки кредитів кешуються на 6 годин. Список популярних кешується на 30 хвилин, а сторінки йдуть від 1 до 500.
- Додавайте `combined_credits` через `append_to_response` замість другого виклику. Обидва способи повертають ті самі дані.
- У `movie_credits` кожен запис `cast` має значення `order`, позицію персони в титрах цього фільму. Записи серіалів не мають `order`, тому сортуйте їх за `first_air_date`.
- Використовуйте `known_for_department`, щоб вирішити, який список показувати першим: `cast` для акторів, `crew` для режисерів і сценаристів.
- Знайдіть персону за іменем на сторінці [пошук](https://amodb.dev/uk/search/), а потім використайте id тут.

## Запитання й відповіді

### Як отримати повну фільмографію актора?

Викличіть GET /3/person/{person_id}/combined_credits, щоб отримати фільми й серіали в одній відповіді, або додайте append_to_response=combined_credits до запиту персони. Кожен запис має media_type, тож фільми легко відокремити від серіалів.

### Що означають значення gender?

0 означає не вказано, 1 жіноча, 2 чоловіча, 3 небінарна. У багатьох записів лишається 0, тому не вважайте це помилкою й не будуйте на цьому логіку.

### Який розмір використовувати для фото профілю?

Використовуйте w185 для списків і h632 для сторінок деталей, обидва на img.amodb.dev. Шляхи профілю можуть бути null, тому тримайте напохваті зображення-заглушку для людей без фото.

### Чи можна шукати персон за іменем?

Так, GET /3/search/person з параметром query. Він описаний на сторінці пошуку, а id, який він повертає, є person_id для кожного ендпоінта тут.

## Пов'язані сторінки

- [API акторського складу та знімальної групи](https://amodb.dev/uk/credits/): API credits зі шляхами та JSON, як у TMDB v3. Отримайте акторський склад і знімальну групу фільмів, серіалів, сезонів і серій з полями order, department і job.
- [API акторів](https://amodb.dev/uk/actor-api/): API акторів на ендпоінтах people TMDB v3. Отримайте біографію, повну фільмографію через combined credits, фото профілю та список популярних персон 14 мовами.
- [API пошуку](https://amodb.dev/uk/search/): API пошуку з тими самими шляхами та JSON, що в TMDB v3. Шукайте фільми, серіали, персон, колекції, компанії та ключові слова за текстом, з фільтром за роком.
- [API зображень і хост зображень](https://amodb.dev/uk/images-api/): API зображень фільмів зі шляхами TMDB v3: списки постерів, фонів, логотипів і кадрів проєкту, а потім завантаження з img.amodb.dev у 10 розмірах без ключа.
- [Пошук за зовнішнім ID](https://amodb.dev/uk/find-by-external-id/): Знайдіть фільм, серіал чи персону за id IMDb, TVDB, Wikidata або Kinopoisk через find TMDB, а також прочитайте зовнішні id і факти Wikidata про проєкт.
- [Швидкий старт](https://amodb.dev/uk/quickstart/): Перший виклик amodb: отримайте ключ, запросіть деталі фільму в curl, JavaScript, Python, PHP чи Go і завантажте постер з img.amodb.dev. Менш ніж за 2 хвилини.

Оновлено: 2026-10-18. Source: https://amodb.dev/uk/people/
