# API szczegółów serialu

> Endpoint serialu zwraca jeden serial po ID pod GET /3/tv/{series_id}: nazwy, opis, status, sezony, sieci telewizyjne, gatunki i wskaźniki na ostatni i następny odcinek. JSON odpowiada TMDB v3, więc istniejący klienci potrzebują tylko nowego bazowego URL. Dodaj append_to_response, by scalić klasyfikacje wiekowe, obsadę i oceny w jednym żądaniu.

## Endpoint

`GET /3/tv/{series_id}`

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

Odpowiedź:

```json
{
  "adult": false,
  "backdrop_path": "/ycFcYYnzVc8mWw41neszGPMyKc3.jpg",
  "created_by": [],
  "episode_run_time": [
    48,
    49
  ],
  "first_air_date": "2008-01-20",
  "genres": [
    {
      "id": 18,
      "name": "Drama"
    },
    {
      "id": 80,
      "name": "Crime"
    }
  ],
  "homepage": "",
  "id": 1396,
  "in_production": false,
  "languages": [
    "en"
  ],
  "last_air_date": "2013-09-29",
  "last_episode_to_air": {
    "air_date": "2013-09-29",
    "episode_number": 16,
    "episode_type": "standard",
    "id": 62161,
    "name": "פלינה",
    "overview": "הסדרה זוכת הפרסים מגיעה לסיום דרמתי בפרק החותם אותה.",
    "production_code": "",
    "runtime": 56,
    "season_number": 5,
    "show_id": 1396,
    "still_path": "/pA0YwyhvdDXP3BEGL2grrIhq8aM.jpg",
    "vote_average": 0,
    "vote_count": 0
  },
  "name": "Breaking Bad",
  "next_episode_to_air": null,
  "networks": [
    {
      "id": 174,
      "logo_path": "/pmvRmATOCaDykE6JrVoeYxlFHw3.png",
      "name": "AMC",
      "origin_country": "US"
    }
  ],
  "number_of_episodes": 62,
  "number_of_seasons": 5,
  "origin_country": [
    "US"
  ],
  "original_language": "en",
  "original_name": "Breaking Bad",
  "overview": "Walter White, a New Mexico chemistry teacher, is diagnosed with Stage III cancer and given a prognosis of only two years left to live. He becomes filled with a sense of fearlessness and an unrelenting desire to secure his family's financial...",
  "popularity": 268.4968,
  "poster_path": "/anFx9aTOOYqgS3v7x3R84Kz67ly.jpg",
  "production_companies": [
    {
      "id": 2605,
      "logo_path": null,
      "name": "Gran Via Productions",
      "origin_country": "US"
    },
    {
      "id": 11073,
      "logo_path": "/wHs44fktdoj6c378ZbSWfzKsM2Z.png",
      "name": "Sony Pictures Television",
      "origin_country": "US"
    },
    {
      "id": 33742,
      "logo_path": "/2jdh2sEa0R6y6uT0F7g0IgA2WO8.png",
      "name": "High Bridge Productions",
      "origin_country": "US"
    }
  ],
  "production_countries": [
    {
      "iso_3166_1": "US",
      "name": "United States of America"
    }
  ],
  "seasons": [
    {
      "air_date": "2009-02-17",
      "episode_count": 9,
      "id": 3577,
      "name": "特别篇",
      "overview": "",
      "poster_path": "/ikBSCmgG5Z4jequUUAjKpf1QG3T.jpg",
      "season_number": 0,
      "vote_average": 0
    },
    {
      "air_date": "2008-01-20",
      "episode_count": 7,
      "id": 3572,
      "name": "Season 1",
      "overview": "High school chemistry teacher Walter White's life is suddenly transformed by a dire medical diagnosis. Street-savvy former student Jesse Pinkman \"teaches\" Walter a new trade.",
      "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
      "season_number": 1,
      "vote_average": 0
    },
    {
      "air_date": "2009-03-08",
      "episode_count": 13,
      "id": 3573,
      "name": "第 2 季",
      "overview": "贩卖冰毒的沃尔特老师在毒品交易中越陷越深，这引起了竞争对手的注意并使他在缉毒局的小舅子陷入危险中。",
      "poster_path": "/zMO024gJxKhTJfWqM0XTYd3SgKj.jpg",
      "season_number": 2,
      "vote_average": 0
    }
  ],
  "spoken_languages": [
    {
      "english_name": "English",
      "iso_639_1": "en",
      "name": "English"
    },
    {
      "english_name": "Spanish",
      "iso_639_1": "es",
      "name": "Español"
    }
  ],
  "status": "Ended",
  "tagline": "Change the equation.",
  "vote_average": 8.955,
  "vote_count": 18871
}
```

## Pobieranie szczegółów serialu

`GET /3/tv/{series_id}` zwraca podstawowy rekord jednego serialu: nazwy, opis, status, gatunki, sieci telewizyjne, listę sezonów i wskaźniki na ostatni i następny odcinek. ID to numeryczne ID serialu z TMDB, więc serial zapisany jako `1396` zachowuje tu to ID. ID filmów i ID seriali to osobne przestrzenie, więc zawsze zapisuj obok liczby typ mediów.

Przykład prosi o Breaking Bad po angielsku i w tym samym wywołaniu dołącza klasyfikacje wiekowe oraz oceny zewnętrzne.

```bash
curl -sSf "https://api.amodb.dev/3/tv/1396?language=en-US&append_to_response=content_ratings,ratings" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const params = new URLSearchParams({ language: 'en-US', append_to_response: 'content_ratings,ratings' });
const res = await fetch(`https://api.amodb.dev/3/tv/1396?${params}`, {
  headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const show = await res.json();
const us = show.content_ratings.results.find((r) => r.iso_3166_1 === 'US');
console.log(show.name, show.status, show.number_of_seasons, us?.rating);
```

```python
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/tv/1396",
    params={"language": "en-US", "append_to_response": "content_ratings,ratings"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
show = r.json()
us = next((x for x in show["content_ratings"]["results"] if x["iso_3166_1"] == "US"), None)
print(show["name"], show["status"], show["number_of_seasons"], us and us["rating"])
```

```php
<?php
$url = 'https://api.amodb.dev/3/tv/1396?' . http_build_query([
    'language' => 'en-US',
    'append_to_response' => 'content_ratings,ratings',
]);
$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");
}
$show = json_decode($body, true);
echo $show['name'], ' ', $show['status'], ' ', $show['number_of_seasons'], PHP_EOL;
```

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"os"
	"time"
)

type Show struct {
	Name             string `json:"name"`
	Status           string `json:"status"`
	NumberOfSeasons  int    `json:"number_of_seasons"`
	NumberOfEpisodes int    `json:"number_of_episodes"`
	Next             *struct {
		AirDate string `json:"air_date"`
	} `json:"next_episode_to_air"`
}

func main() {
	q := url.Values{"language": {"en-US"}}
	req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/tv/1396?"+q.Encode(), 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 s Show
	if err := json.NewDecoder(res.Body).Decode(&s); err != nil {
		panic(err)
	}
	next := "none scheduled"
	if s.Next != nil {
		next = s.Next.AirDate
	}
	fmt.Println(s.Name, s.Status, s.NumberOfSeasons, s.NumberOfEpisodes, next)
}
```

### Parametry

| Parametr             | Gdzie | Wymagany      | Opis                                                                                                           |
| -------------------- | ----- | ------------- | -------------------------------------------------------------------------------------------------------------- |
| `series_id`          | path  | tak           | Numeryczne ID serialu, na przykład `1396`.                                                                     |
| `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`, `uk-UA` lub `es-ES`. Obsługiwanych jest 14 języków bazowych. Domyślnie `en-US`. |
| `append_to_response` | query | nie           | Lista podzasobów oddzielonych przecinkami, scalanych z odpowiedzią, do 20 wartości.                            |

### Pola odpowiedzi

| Pole                                               | Typ             | Uwagi                                                                                                                                |
| -------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `id`                                               | integer         | ID serialu.                                                                                                                          |
| `name`, `original_name`                            | string          | Tytuł zlokalizowany i oryginalny. Oryginalne nazwy japońskie lub koreańskie zostają w `original_name`.                               |
| `overview`, `tagline`                              | string          | Tekst zlokalizowany, pusty, gdy tłumaczenie nie istnieje.                                                                            |
| `first_air_date`, `last_air_date`                  | string lub null | `YYYY-MM-DD`.                                                                                                                        |
| `status`                                           | string          | Cykl życia, zobacz tabelę poniżej.                                                                                                   |
| `in_production`                                    | boolean         | `true`, dopóki serial jest nadal kręcony.                                                                                            |
| `number_of_seasons`, `number_of_episodes`          | integer         | Sumy, tak jak zapisano dla serialu.                                                                                                  |
| `episode_run_time`                                 | array           | Typowe długości odcinków w minutach, może być puste.                                                                                 |
| `seasons`                                          | array           | Jedno podsumowanie na sezon z `id`, `season_number`, `name`, `overview`, `episode_count`, `air_date`, `poster_path`, `vote_average`. |
| `last_episode_to_air`, `next_episode_to_air`       | object lub null | Podsumowania odcinków o kształcie obiektów ze strony [sezony i odcinki](https://amodb.dev/pl/tv-seasons-episodes/).                  |
| `networks`, `production_companies`                 | array           | `id`, `name`, `logo_path`, `origin_country`.                                                                                         |
| `production_countries`, `spoken_languages`         | array           | Kraje z `iso_3166_1` i `name`. Języki z `english_name`, `iso_639_1` i `name`.                                                        |
| `created_by`                                       | array           | Twórcy z `id`, `name`, `profile_path` i `credit_id`. Puste dla większości seriali.                                                   |
| `genres`                                           | array           | Obiekty z `id` i `name`. ID gatunków seriali różnią się od ID filmów.                                                                |
| `origin_country`, `original_language`, `languages` | array, string   | Kody krajów i kody języków.                                                                                                          |
| `homepage`                                         | string          | Oficjalna strona, pusta, gdy nieznana.                                                                                               |
| `poster_path`, `backdrop_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.                                                                                   |
| `vote_average`, `vote_count`                       | number, integer | Zbiorcza ocena użytkowników.                                                                                                         |
| `adult`                                            | boolean         | Zawsze `false`. Tytuły dla dorosłych nigdy nie są udostępniane.                                                                      |

### Przykładowa odpowiedź

`GET /3/tv/1396?language=en-US&append_to_response=content_ratings,ratings`, z długimi tablicami i tekstami skróconymi:

```json
{
  "adult": false,
  "backdrop_path": "/ycFcYYnzVc8mWw41neszGPMyKc3.jpg",
  "created_by": [],
  "episode_run_time": [
    48,
    49
  ],
  "first_air_date": "2008-01-20",
  "genres": [
    {
      "id": 18,
      "name": "Drama"
    },
    {
      "id": 80,
      "name": "Crime"
    }
  ],
  "homepage": "",
  "id": 1396,
  "in_production": false,
  "languages": [
    "en"
  ],
  "last_air_date": "2013-09-29",
  "last_episode_to_air": {
    "air_date": "2013-09-29",
    "episode_number": 16,
    "episode_type": "standard",
    "id": 62161,
    "name": "פלינה",
    "overview": "הסדרה זוכת הפרסים מגיעה לסיום דרמתי בפרק החותם אותה.",
    "production_code": "",
    "runtime": 56,
    "season_number": 5,
    "show_id": 1396,
    "still_path": "/pA0YwyhvdDXP3BEGL2grrIhq8aM.jpg",
    "vote_average": 0,
    "vote_count": 0
  },
  "name": "Breaking Bad",
  "next_episode_to_air": null,
  "networks": [
    {
      "id": 174,
      "logo_path": "/pmvRmATOCaDykE6JrVoeYxlFHw3.png",
      "name": "AMC",
      "origin_country": "US"
    }
  ],
  "number_of_episodes": 62,
  "number_of_seasons": 5,
  "origin_country": [
    "US"
  ],
  "original_language": "en",
  "original_name": "Breaking Bad",
  "overview": "Walter White, a New Mexico chemistry teacher, is diagnosed with Stage III cancer and given a prognosis of o...",
  "popularity": 268.4968,
  "poster_path": "/anFx9aTOOYqgS3v7x3R84Kz67ly.jpg",
  "production_companies": [
    {
      "id": 2605,
      "logo_path": null,
      "name": "Gran Via Productions",
      "origin_country": "US"
    },
    {
      "id": 11073,
      "logo_path": "/wHs44fktdoj6c378ZbSWfzKsM2Z.png",
      "name": "Sony Pictures Television",
      "origin_country": "US"
    }
  ],
  "production_countries": [
    {
      "iso_3166_1": "US",
      "name": "United States of America"
    }
  ],
  "seasons": [
    {
      "air_date": "2009-02-17",
      "episode_count": 9,
      "id": 3577,
      "name": "特别篇",
      "overview": "",
      "poster_path": "/ikBSCmgG5Z4jequUUAjKpf1QG3T.jpg",
      "season_number": 0,
      "vote_average": 0
    },
    {
      "air_date": "2008-01-20",
      "episode_count": 7,
      "id": 3572,
      "name": "Season 1",
      "overview": "High school chemistry teacher Walter White's life is suddenly transformed by a dire medical diagnosis. Stre...",
      "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
      "season_number": 1,
      "vote_average": 0
    }
  ],
  "spoken_languages": [
    {
      "english_name": "English",
      "iso_639_1": "en",
      "name": "English"
    },
    {
      "english_name": "Spanish",
      "iso_639_1": "es",
      "name": "Español"
    }
  ],
  "status": "Ended",
  "tagline": "Change the equation.",
  "vote_average": 9,
  "vote_count": 18863,
  "content_ratings": {
    "results": [
      {
        "descriptors": [],
        "iso_3166_1": "AT",
        "rating": "16"
      },
      {
        "descriptors": [],
        "iso_3166_1": "AU",
        "rating": "MA 15+"
      }
    ]
  },
  "ratings": {
    "imdb": {
      "value": 9.5,
      "votes": 2671962
    },
    "kinopoisk": {
      "value": 8.9,
      "votes": null
    },
    "metacritic": null,
    "rotten_tomatoes": {
      "value": 96,
      "votes": null
    },
    "tmdb": {
      "value": 9,
      "votes": 18863
    }
  }
}
```

Bloki `content_ratings` i `ratings` pochodzą z `append_to_response`. Nazwy i opisy wewnątrz `seasons`, `last_episode_to_air` i `next_episode_to_air` są zapisane osobno dla każdego rekordu i mogą nie podążać za `language`, jak pokazuje hebrajska nazwa odcinka powyżej. Zlokalizowany tekst sezonów i odcinków odczytaj z [endpointu sezonu](https://amodb.dev/pl/tv-seasons-episodes/).

## Status i wskaźniki odcinków

`status` mówi, na jakim etapie życia jest serial, a `next_episode_to_air` mówi, kiedy zajrzeć ponownie.

| Wartość `status`           | Znaczenie                            | `next_episode_to_air`                                    |
| -------------------------- | ------------------------------------ | -------------------------------------------------------- |
| `Returning Series`         | Emitowany teraz lub między sezonami. | Ustawione, gdy data jest znana, w przeciwnym razie null. |
| `Planned`, `In Production` | Jeszcze nie jest zwykłym serialem.   | Zwykle null.                                             |
| `Ended`                    | Zakończył emisję.                    | Null.                                                    |
| `Canceled`                 | Przerwany przed planowanym końcem.   | Null.                                                    |

Serial powracający między sezonami ma `next_episode_to_air` równe null, więc czytaj null jako „data nieznana”, a nie „zakończony”.

Tablica `seasons` wymienia jedno podsumowanie na sezon, a sezon `0` zawiera odcinki specjalne. Aby odczytać odcinki sezonu, wywołaj endpoint ze strony [sezony i odcinki](https://amodb.dev/pl/tv-seasons-episodes/).

## Powiązane endpointy seriali

Wszystkie ścieżki mają wspólną bazę `https://api.amodb.dev/3`, a endpointy ze zlokalizowanym tekstem przyjmują też `language`.

| Metoda i ścieżka                         | Zwraca                                                                              | Dodatkowe parametry |
| ---------------------------------------- | ----------------------------------------------------------------------------------- | ------------------- |
| `GET /tv/{series_id}/alternative_titles` | `{id, results}` z `iso_3166_1`, `title`, `type`, często puste                       | brak                |
| `GET /tv/{series_id}/content_ratings`    | Klasyfikacja wiekowa według krajów                                                  | brak                |
| `GET /tv/{series_id}/episode_groups`     | Lista alternatywnych układów odcinków, na przykład według DVD lub wątku fabularnego | brak                |
| `GET /tv/{series_id}/recommendations`    | Lista 20 polecanych seriali                                                         | brak                |
| `GET /tv/{series_id}/similar`            | Lista 20 podobnych seriali                                                          | brak                |
| `GET /tv/{series_id}/reviews`            | `results` jest puste dla większości seriali                                         | brak                |
| `GET /tv/{series_id}/lists`              | Publiczne listy zawierające serial                                                  | `page`              |
| `GET /tv/{series_id}/watch/providers`    | Dostawcy streamingu, wypożyczeń i zakupu według krajów                              | brak                |
| `GET /tv/latest`                         | Najnowszy dodany rekord serialu                                                     | brak                |

Listy rekomendacji i podobnych zawsze zwracają stronę 1 z 20 pozycjami. Odpowiedź `lists` ma paginację przez `page`, po 20 list na stronę. Listy z paginacją w innych miejscach API przyjmują `page` od 1 do 500.

Klasyfikacje wiekowe wracają jako pozycje `results` z `iso_3166_1`, `rating` i `descriptors`, więc wybierz pozycję pasującą do kraju widza. Dostawcy streamingu są indeksowani kodem kraju, a każdy kraj zawiera `link` oraz listy `flatrate`, `rent` i `buy` z `provider_id`, `provider_name`, `logo_path` i `display_priority`. ID dostawców do filtrowania pochodzą ze słowników na stronie [gatunki i słowniki](https://amodb.dev/pl/genres/).

Lista grup odcinków zwraca `id` (ciąg), `name`, `description`, `type`, `episode_count`, `group_count` i `network`. amodb wypisuje grupy, ale nie udostępnia endpointu zwracającego odcinki jednej grupy. Nie udostępnia też ścieżek `changes` z TMDB.

## Scalanie kolejnych danych w jednym wywołaniu

Wypisz podzasoby w `append_to_response`, a każdy przyjdzie pod własnym kluczem. Całe wywołanie liczy się raz do twoich 20, 40 lub 120 żądań na minutę. Działa do 20 wartości, a nieznane nazwy są ignorowane bez błędu. W serialu działają te wartości:

| Wartość                                                                                                                        | Dodaje                                            | Szczegóły                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `credits`                                                                                                                      | Obsadę i ekipę                                    | [Obsada i ekipa](https://amodb.dev/pl/credits/)                                                                                                                                    |
| `external_ids`                                                                                                                 | ID takie jak `imdb_id`, `tvdb_id` i `wikidata_id` | [Wyszukiwanie po zewnętrznym ID](https://amodb.dev/pl/find-by-external-id/)                                                                                                        |
| `images`, `videos`                                                                                                             | Plakaty, tła, zwiastuny                           | [Obrazy](https://amodb.dev/pl/images-api/), [Wideo](https://amodb.dev/pl/videos-trailers/)                                                                                         |
| `keywords`, `translations`                                                                                                     | Tagi i przetłumaczone teksty                      | [Słowa kluczowe](https://amodb.dev/pl/keywords/), [Tłumaczenia](https://amodb.dev/pl/translations/)                                                                                |
| `content_ratings`, `alternative_titles`, `episode_groups`, `lists`, `watch/providers`, `similar`, `recommendations`, `reviews` | Podzasoby z powyższej tabeli                      | Ta strona                                                                                                                                                                          |
| `ratings`, `moods`, `soundtracks`, `wikidata`, `showtimes`                                                                     | Dodatki amodb                                     | [Oceny](https://amodb.dev/pl/ratings/), [Nastroje](https://amodb.dev/pl/moods/), [Ścieżki dźwiękowe](https://amodb.dev/pl/soundtracks/), [Seanse](https://amodb.dev/pl/showtimes/) |

## Błędy

Nieudane wywołanie zwraca treść błędu TMDB. Błędne ID daje `status_code` 34 z komunikatem "The resource you requested could not be found."

| HTTP | status_code | Kiedy                                                                                |
| ---- | ----------- | ------------------------------------------------------------------------------------ |
| 401  | 7           | Brakuje klucza lub jest błędny.                                                      |
| 402  | 36          | Okres planu dobiegł końca.                                                           |
| 404  | 34          | Brak serialu o tym ID, tytuł dla dorosłych lub ścieżka, która nie jest udostępniana. |
| 405  | 37          | Wywołano metodę zapisu, na przykład ocenianie serialu.                               |
| 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 limity według planów na stronie [limity żądań](https://amodb.dev/pl/rate-limits/).

## Praktyczne uwagi

- Szczegóły serialu i każdy z powyższych podzasobów są w cache przez 6 godzin. Sprawdzaj `last_episode_to_air` co najwyżej kilka razy dziennie.
- Żądaj języka, który wyświetlasz. Pusty `overview` oznacza brak tłumaczenia, więc w razie potrzeby zapytaj ponownie z `en-US`.
- Użyj `number_of_seasons` jako górnej granicy pętli, gdy pobierasz każdy sezon, po jednym wywołaniu na sezon.
- Aby wypisać seriale zamiast czytać jeden, zobacz [wyszukiwanie](https://amodb.dev/pl/search/), [discover](https://amodb.dev/pl/discover/) i [trendy i listy](https://amodb.dev/pl/trending-lists/).

## Pytania i odpowiedzi

### Skąd wiedzieć, czy serial jest nadal emitowany?

Czytaj status razem z next_episode_to_air. Serial powracający z next_episode_to_air innym niż null ma zaplanowany odcinek. Seriale zakończone i anulowane zawsze zwracają tam null, a serial między sezonami też może.

### Czy rekord serialu zawiera ID z IMDb?

W rekordzie podstawowym nie, tak jak w TMDB. Dodaj append_to_response=external_ids, by dostać imdb_id i tvdb_id, albo wywołaj endpoint find z ID z IMDb, by przejść od zewnętrznego ID do ID serialu.

### Czy mogę dostać oceny z IMDb i Rotten Tomatoes dla serialu?

Tak. Wywołaj GET /3/tv/{series_id}/ratings albo dodaj append_to_response=ratings. Dostaniesz wyniki z IMDb, Kinopoisk, Metacritic, Rotten Tomatoes i TMDB, każdy jako value i votes albo null, gdy wynik jest nieznany.

### Jak długo dane seriali są w cache?

Szczegóły serialu i ich podzasoby są w cache na edge przez 6 godzin, więc świeżo wyemitowany odcinek może pojawić się w last_episode_to_air z takim opóźnieniem. Listy takie jak on the air są w cache przez 30 minut.

## Powiązane strony

- [API sezonów i odcinków seriali](https://amodb.dev/pl/tv-seasons-episodes/): API sezonów i odcinków seriali z tymi samymi ścieżkami i JSON co TMDB v3. Odczytaj sezon ze wszystkimi odcinkami albo jeden odcinek z datą emisji i kadrem.
- [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.
- [Oceny filmów i seriali](https://amodb.dev/pl/ratings/): API ocen filmów zwraca wyniki z IMDb, Kinopoisk, Metacritic, Rotten Tomatoes i TMDB dla tytułu jednym wywołaniem, z null dla każdego nieznanego źródła.
- [API seriali: seriale, sezony i odcinki](https://amodb.dev/pl/tv-show-api/): API seriali ze statusem, sieciami telewizyjnymi, sezonami, odcinkami i next_episode_to_air. JSON zgodny z TMDB v3 w 14 językach, od 20 żądań na minutę.
- [Błędy](https://amodb.dev/pl/errors/): Każdy błąd amodb ze statusem HTTP, status_code i komunikatem TMDB oraz kształt błędu OMDb. Co oznacza każdy z nich i co powinien zrobić twój klient dalej.
- [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-19. Source: https://amodb.dev/pl/tv-series/
