# 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}`. Гл. [выявы](https://amodb.dev/be/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. Фота профілю апісаны на старонцы [выявы](https://amodb.dev/be/images-api/), а вонкавыя id на старонцы [пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/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/be/errors/), а акны па планах на старонцы [ліміты запытаў](https://amodb.dev/be/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/be/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/be/credits/): API ўдзельнікаў з тымі ж шляхамі і JSON, што ў TMDB v3. Акцёры і здымачная група фільмаў, серыялаў, сезонаў і эпізодаў з палямі order, department і job.
- [API акцёраў](https://amodb.dev/be/actor-api/): API акцёраў на эндпоінтах людзей TMDB v3. Біяграфія, поўная фільмаграфія праз зводныя ўдзелы, фота профілю і спіс папулярных людзей, на 14 мовах.
- [API пошуку](https://amodb.dev/be/search/): API пошуку з шляхамі і JSON як у TMDB v3. Фільмы, серыялы, персоны, калекцыі, кампаніі і ключавыя словы па тэксце, з фільтрамі па годзе і старонкамі.
- [API выяў і хост выяў](https://amodb.dev/be/images-api/): API выяў фільмаў з шляхамі TMDB v3: спісы постэраў, фонавых выяў, лагатыпаў і кадраў назвы, а потым загрузка з img.amodb.dev у 10 памерах без ключа.
- [Пошук па вонкавым ідэнтыфікатары](https://amodb.dev/be/find-by-external-id/): Шукайце фільм, серыял або персону па IMDb, TVDB, Wikidata ці Kinopoisk id праз эндпоінт find TMDB і чытайце вонкавыя id і факты Wikidata для назвы.
- [Хуткі старт](https://amodb.dev/be/quickstart/): Першы выклік да amodb: атрымайце ключ, запытайце дэталі фільма ў curl, JavaScript, Python, PHP або Go і загрузіце постэр з img.amodb.dev. Менш за 2 хвіліны.

Абноўлена: 2026-10-18. Source: https://amodb.dev/be/people/
