# API szczegółów osoby

> Endpoint osoby zwraca jednego aktora, reżysera lub członka ekipy po ID pod GET /3/person/{person_id}. JSON odpowiada TMDB v3: biografia, data urodzenia, miejsce urodzenia, obraz profilowy i dział. Endpointy towarzyszące zwracają role filmowe, serialowe i połączone, zewnętrzne ID, obrazy profilowe oraz listę popularnych osób.

## Endpoint

`GET /3/person/{person_id}`

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

Odpowiedź:

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

## Pobieranie szczegółów osoby

`GET /3/person/{person_id}` zwraca podstawowy rekord jednej osoby: imię i nazwisko, biografię, datę urodzenia, miejsce urodzenia, dział, obraz profilowy i ID z IMDb. ID to numeryczne ID osoby z TMDB, więc Tom Hanks pozostaje `31`, a Leonardo DiCaprio `6193`. Osoby pracujące przed kamerą i za nią dzielą jedną przestrzeń ID.

Przykład odczytuje Toma Hanksa, dołącza jego połączone role i wypisuje imię i nazwisko, datę urodzenia, główny dział i liczbę ról aktorskich.

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

### Parametry

| Parametr             | Gdzie | Wymagany      | Opis                                                                                                                                     |
| -------------------- | ----- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `person_id`          | path  | tak           | Numeryczne ID osoby, na przykład `31`.                                                                                                   |
| `api_key`            | query | jeden z dwóch | Twój klucz. Użyj go albo nagłówka `Authorization: Bearer`.                                                                               |
| `language`           | query | nie           | Tag TMDB, na przykład `en-US` lub `ru-RU`. Biografia wraca w tym języku, gdy istnieje tłumaczenie.                                       |
| `append_to_response` | query | nie           | Lista oddzielona przecinkami: `movie_credits`, `tv_credits`, `combined_credits`, `external_ids`, `images`. Nieznane nazwy są ignorowane. |

### Pola odpowiedzi

| Pole                   | Typ             | Uwagi                                                                                            |
| ---------------------- | --------------- | ------------------------------------------------------------------------------------------------ |
| `id`                   | integer         | ID osoby.                                                                                        |
| `name`                 | string          | Wyświetlana nazwa, w żądanym `language`, gdy istnieje tłumaczenie.                               |
| `also_known_as`        | array           | Alternatywne imiona i pisownie.                                                                  |
| `biography`            | string          | Tekst zlokalizowany, pusty, gdy tłumaczenie nie istnieje.                                        |
| `birthday`, `deathday` | string lub null | `YYYY-MM-DD`. `deathday` ma wartość null dla osób żyjących.                                      |
| `place_of_birth`       | string lub null | Dowolny tekst.                                                                                   |
| `gender`               | integer         | 0 nieokreślona, 1 kobieta, 2 mężczyzna, 3 niebinarna.                                            |
| `known_for_department` | string          | Główne zajęcie, na przykład `Acting` lub `Directing`.                                            |
| `imdb_id`              | string lub null | ID osoby z IMDb, na przykład `nm0000158`.                                                        |
| `homepage`             | string lub null | Oficjalna strona.                                                                                |
| `profile_path`         | string lub null | Dołącz do `https://img.amodb.dev/t/p/{size}`. Zobacz [obrazy](https://amodb.dev/pl/images-api/). |
| `popularity`           | number          | Względny wskaźnik używany przez listę popularnych.                                               |
| `adult`                | boolean         | Zawsze `false`. Osoby dla dorosłych nigdy nie są udostępniane.                                   |

### Przykładowa odpowiedź

`GET /3/person/31?language=en-US`, ze skróconą biografią:

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

## Endpointy filmografii

Trzy endpointy wypisują, nad czym pracowała osoba. Wszystkie przyjmują `language` i zwracają klucze `id`, `cast` i `crew`. Gdy dołączasz je przez `append_to_response`, klucz `id` jest pomijany.

| Metoda i ścieżka                           | Zwraca                                                                     | Dodatkowe parametry |
| ------------------------------------------ | -------------------------------------------------------------------------- | ------------------- |
| `GET /person/{person_id}/movie_credits`    | Filmy, z `character` i `order` w `cast` oraz `department` i `job` w `crew` | brak                |
| `GET /person/{person_id}/tv_credits`       | Seriale, z `character` w `cast` oraz `department` i `job` w `crew`         | brak                |
| `GET /person/{person_id}/combined_credits` | Filmy i seriale razem, każde z `media_type` ustawionym na `movie` lub `tv` | brak                |

Pozycje filmów niosą `title` i `release_date`. Pozycje seriali niosą `name` i `first_air_date`, a pozycje obsady seriali mają też klucz `episode_count`, który w obecnych danych wynosi `0`. Pozycje niosą także `credit_id`, `genre_ids`, `poster_path`, `vote_average` i inne pola list. Poniższy fragment sortuje połączone role według daty i wypisuje pięć najnowszych.

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

## Listy i obrazy

| Metoda i ścieżka                       | Zwraca                                                                                           | Dodatkowe parametry |
| -------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------- |
| `GET /person/popular`                  | Lista popularnych osób z paginacją, z tytułami `known_for`                                       | `language`, `page`  |
| `GET /person/{person_id}/images`       | Zdjęcia profilowe w tablicy `profiles`                                                           | brak                |
| `GET /person/{person_id}/external_ids` | `imdb_id`, `wikidata_id`, `facebook_id`, `instagram_id`, `tiktok_id`, `twitter_id`, `youtube_id` | brak                |

Pozycje popularnych zawierają `id`, `name`, `original_name`, `known_for_department`, `gender`, `profile_path`, `popularity` i tablicę `known_for`. Strony biegną od 1 do 500. Zdjęcia profilowe omawia strona [obrazy](https://amodb.dev/pl/images-api/), a zewnętrzne ID strona [wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/).

amodb nie udostępnia tłumaczeń osób, najnowszego rekordu osoby, oznaczonych obrazów ani zmian. Biografię w potrzebnym języku pobierz zamiast tego parametrem `language`.

## Błędy

| HTTP | status_code | Kiedy                                                                               |
| ---- | ----------- | ----------------------------------------------------------------------------------- |
| 401  | 7           | Brakuje klucza lub jest błędny.                                                     |
| 402  | 36          | Okres planu dobiegł końca.                                                          |
| 404  | 34          | Brak osoby o tym ID, osoba dla dorosłych lub ścieżka, która nie jest udostępniana.  |
| 405  | 37          | Wywołano metodę zapisu.                                                             |
| 429  | 25          | Przekroczono limit żądań na minutę. Poczekaj tyle sekund, ile podaje `Retry-After`. |

Pełna lista jest na stronie [błędy](https://amodb.dev/pl/errors/), a okna według planów na stronie [limity żądań](https://amodb.dev/pl/rate-limits/).

## Praktyczne uwagi

- Szczegóły osób i listy ról są w cache przez 6 godzin. Lista popularnych jest w cache przez 30 minut, a strony biegną od 1 do 500.
- Dodaj `combined_credits` przez `append_to_response` zamiast robić drugie wywołanie. Obie drogi zwracają te same dane.
- W `movie_credits` każda pozycja `cast` ma wartość `order`, czyli pozycję osoby w czołówce tego filmu. Pozycje seriali nie mają `order`, więc sortuj je według `first_air_date`.
- Użyj `known_for_department`, by zdecydować, którą listę pokazać najpierw: `cast` dla aktorów, `crew` dla reżyserów i scenarzystów.
- Osobę po nazwisku znajdziesz na stronie [wyszukiwanie](https://amodb.dev/pl/search/), a potem użyj ID tutaj.

## Pytania i odpowiedzi

### Jak pobrać pełną filmografię aktora?

Wywołaj GET /3/person/{person_id}/combined_credits dla filmów i seriali w jednej odpowiedzi albo dodaj append_to_response=combined_credits do żądania osoby. Każda pozycja ma media_type, więc oddzielisz filmy od seriali.

### Co oznaczają wartości gender?

0 oznacza nieokreślone, 1 kobieta, 2 mężczyzna, a 3 niebinarna. Wiele rekordów zostawia 0, więc nie traktuj tego jako błędu i nie buduj na tym żadnej logiki.

### Jakiego rozmiaru użyć dla zdjęć profilowych?

Użyj w185 dla list i h632 dla stron szczegółów, oba na img.amodb.dev. Ścieżki profilu mogą mieć wartość null, więc miej gotowy obraz zastępczy dla osób bez zdjęcia.

### Czy można szukać osób po nazwisku?

Tak, GET /3/search/person z parametrem query. Znajdziesz go na stronie wyszukiwania, a zwracane id to person_id używane przez każdy tutejszy endpoint.

## Powiązane strony

- [API obsady i ekipy](https://amodb.dev/pl/credits/): API obsady i ekipy z tymi samymi ścieżkami i JSON co TMDB v3. Pobierz obsadę i ekipę filmów, seriali, sezonów i odcinków z polami order, department i job.
- [API aktorów](https://amodb.dev/pl/actor-api/): API aktorów na endpointach osób TMDB v3: biografia, pełna filmografia przez combined credits, zdjęcia profilowe i lista popularnych osób w 14 językach.
- [API wyszukiwania](https://amodb.dev/pl/search/): API wyszukiwania z tymi samymi ścieżkami i JSON co TMDB v3. Znajdź filmy, seriale, osoby, kolekcje, firmy i słowa kluczowe po tekście, z filtrem roku.
- [API obrazów i host obrazów](https://amodb.dev/pl/images-api/): API obrazów filmów ze ścieżkami TMDB v3: wypisz plakaty, tła, loga i kadry każdego tytułu, a potem ładuj je z img.amodb.dev w 10 rozmiarach bez klucza.
- [Wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/): Znajdź film, serial lub osobę po ID z IMDb, TVDB, Wikidata lub Kinopoisk przez endpoint find z TMDB oraz odczytaj zewnętrzne ID i fakty z Wikidata o tytule.
- [Szybki start](https://amodb.dev/pl/quickstart/): Pierwsze wywołanie amodb: zdobądź klucz, pobierz szczegóły filmu w curl, JavaScript, Python, PHP lub Go, potem załaduj plakat z img.amodb.dev. Poniżej 2 minut.

Zaktualizowano: 2026-10-18. Source: https://amodb.dev/pl/people/
